TIBCO Enterprise Mession Service™的统计记录器

经过:
最后更新:
早上6:37 AM 1月4日,2021年

介绍

此工具可用于记录和监视EMS(包括EMS Appliance)服务器统计信息。服务器统计数据可以记录到本地CSV文件中,还可以推送到AWS CloudWatch、fluxdb或Prometheus监控工具。

该软件包包含以下Java类:

  • EMSSTASLOGGER:定期轮询并记录EMS Server统计信息到CSV文件,可以轻松地在Excel等工具中绘制。每天生成新的CSV文件。
  • EmsStatsPromCollector:这个类收集EMS服务器统计信息,然后导出到Prometheus。还可以选择将统计信息记录到本地CSV文件中。Prometheus是一个功能强大的开源监控系统(参见https://prometheus.io
  • emsstatscloudwatchpusher:此类将EMS服务器统计推送给AWS CloudWatch。还可以选择将统计信息记录到本地CSV文件中。
  • emsstatatsinfluxpusher:此类将EMS Server Statistics推送给涌入DB。还可以选择将统计信息记录到本地CSV文件中。

收集以下EMS服务器指标:

  • 入站/出站消息/字节
  • 挂起消息数/大小
  • 连接/会话计数
  • 目的地数目
  • 消息内存使用率
  • 磁盘读/写速率
  • 同步/ async数据存储大小
  • 响应时间

可以监控以下EMS队列/主题指标:

  • 入站/出站消息/字节
  • 入站/出站总消息/字节计数
  • 挂起消息数/大小
  • 接收者/消费者计数

EMS队列/主题指标被记录为EMS Admin API DestnationInfo,QueueInfo,TopicInfo和Statdata类,有关详细信息,请参阅:

https://docs.tibco.com/pub/ems/8.4.0/doc/html/tib_ems_api_ref/api/javadoc/com/tibco/tibjms/admin/serverinfo.html.

https://docs.tibco.com/pub/ems/8.4.0/doc/html/tib_ems_api_ref/api/javadoc/com/tibco/tibjms/admin/queueinfo.html.

https://docs.tibco.com/pub/ems/8.4.0/doc/html/tib_ems_api_ref/api/javadoc/com/tibco/tibjms/admin/TopicInfo.html

https://docs.tibco.com/pub/ems/8.4.0/doc/html/tib_ems_api_ref/api/javadoc/com/tibco/tibjms/admin/statdata.html.

该软件包还包含以下示例Grafana仪表板,用于可视化普通普罗丝和涌入中存储的统计信息(有关Grafana的更多详细信息,请参阅https://grafana.com

  • EMS服务器概述(图中/出站留言率,挂起消息大小/计数,连接计数和响应时间)
  • EMS详细信息(图形内存使用、同步/异步数据存储大小和磁盘读写速率)
  • EMS队列(消息速率、待处理消息大小/数量、接收方数量的图形队列)
  • EMS主题(图表队列/出站留言率,挂起消息大小/计数,消费者计数)

示例Grafana仪表板如下所示:

示例AWS CloudWatch仪表板如下所示:

在这里下载工具emsstatslogger3.0.zip.

作者:理查德劳伦斯(rlawrenc@tibco.com

版本历史记录

版本3.1

    • 添加了emsstatsinfluxpusher,将统计数据推到涌入
    • 为infxdb添加Grafana仪表板

    版本3.0

    • 添加了对监视多个EMS服务器的支持
    • 增加了对SSL连接的支持
    • 增加了对配置servers.xml文件的支持
    • 添加了对监视队列和主题的支持
    • 增加了自动清理旧日志文件的支持
    • 将EmsstatsPrompusher更改为EmsstatsPromcollector(Prometheus现在直接刮掉收集器统计数据)
    • 更新了Grafana仪表板,包括用于队列和主题的新仪表板

    版本2.1

    • 增加了logfile选项覆盖日志文件名
    • 添加了noappend选项以防止在重启时追加到日志文件

    版本2.0

    • 添加emsStatsCloudWatchPusher

    软件需求

    • JRE 1.8或更高版本
    • TIBCO企业留言服务8.1或更高(客户)
    • emsStatsCloudWatchPusher:
      • AWS SDK for Java

    要重建EMSStatsPrompusher类的来源,还需要以下lib:

    安装

    按照此过程将此工具安装到您的环境中:

    • 解压缩emsstatslogger.zip文件。
    • 编辑Servers.xml文件以添加要监视的EMS服务器的连接详细信息。
    • 编辑运行脚本,为您的环境制作适当的版本:
      • 将Tibems_root变量设置为Tibco EMS安装目录(EMS客户端8.1或更高版本)
      • 为您的环境设置适当的命令行选项

    安装Prometheus / Grafana

    • 下载Prometheus和Pushgateway:https://prometheus.io/download
    • 编辑Prometheus.yml文件并为收集器目标配置Scrape Confif。有三个收集器目标,一个用于EMS Server Stats,一个用于队列统计数据,一个主题统计数据。
    • 适当地配置收集器目标,以便在运行EmsStatsPromCollector的位置,下面的示例显示了如果收集器在与Prometheus服务器上运行的主机上运行,​​则显示默认配置。
    • 如果不需要,移除队列/主题收集器目标。
    1. scrape_configs: -  Job_name:'tib-ems'scape_interval:60s scrape_timeout:10s rens_labels:true static_configs: -  targets:['127.0.0.1:9091','127.0.0.1:9092','127.0.0.1:9093']

    您可以为不同的EMSSTATSPROMCLORCORE实例添加多个Scrape Configs,例如用于不同的EMS环境。

    确保作业名不同,并与运行收集器时使用命令行配置的作业名匹配。

    默认情况下,EmsStatsPromCollector侦听HTTP端口9091,用于导出EMS Server Stats,9092 for Queue Stats,9092用于主题统计信息。

    Prometheus Server默认侦听TCP端口9090。

    编辑RunProMcollector.sh文件,并在必要时配置适用的HTTP端口。

    • 使用-nolog命令行选项以防止如果需要,防止记录到本地文件。

    笔记;Prometheus Server现在不再需要运行Prometheus Gatewore,现在将直接刮掉EmsStatsPromCollector。

    示例命令行运行prometheus:

    1. prometheus --config.file = prometheus.yml

    安装Grafana:

    • 按照以下说明:http://docs.grafana.org/inallation.
    • 从安装中获得一个grafana.ini文件的副本(例如/usr/local/etc/grafana)并进行适当的编辑,如下所示的简单示例。
    • 在浏览器中打开Grafana URL并创建ProMetheus数据源,然后只需导入提供或创建自己的示例仪表板。
    • 注意默认情况下grafana监听TCP端口3000,默认用户/密码是admin/admin

    示例命令行运行grafana:

    1. /usr/local/cellar/grafana/4.6.3/3/4.6/1/1grafana-server -homepath / usr / local / share / grafana --config grafana-ems.ini

    示例grafana配置文件:

    1. [路径]数据=数据=数据日志=数据/ log / grafana_log [服务器] http_addr = 0.0.0.0 http_port = 3000 [incashboards.json]启用= true path = grafana_dashboards

    安装涌入

    下载incowuxdb-java-2.15客户端和依赖项下载:

    https://jar-download.com/artifacts/org.influxdb/influxdb-java/2.15.

    需要涌入客户端库:

    • converter-moshi-2.5.0.jar
    • influxdb-java-2.15.jar
    • Logging-Interceptor-3.13.1.jar
    • moshi-1.5.0.jar.
    • msgpack-core-0.8.16.jar
    • okhttp-3.13.1.jar.
    • okio-1.17.2.jar.
    • Retrofit-2.5.0.jar.

    安装AWS CloudWatch

    如果在EC2上运行该工具:

    您还可以将工具内部部署和推送统计数据运行到AWS:

    • 安装可以在此处下载的AWS SDK库:
    • 编辑runcloudwatchpusher.sh文件并为环境设置相应的配置。
      • 为AWS环境使用-accessId -secretKey和-region选项
      • 如果需要,使用-nolog命令行选项来防止将日志记录到本地文件

    Emsstatslogger.

    EmsStatsLogger类在每一次轮询间隔将EMS服务器统计信息记录到一个输出CSV文件中。默认情况下,每天都会创建一个新的输出日志文件,这可以使用logfile参数覆盖。

    用法:Java Emsstatslogger [选项]其中选项是:-config   -  Server Confile Filename,默认服务器.XML -Interval   - 日志条目之间的间隔,默认为30秒 - 将调试跟踪启用到STDOUT

    EmsStatsPromCollector

    EmsStatsPromCollector类继承自EmsStatsLogger,除了将EMS统计信息记录到文件中,还收集用于Prometheus监控的统计信息。如果不需要,可以禁用记录到文件。

    您可以设置作业名称以表示正在监视的EMS环境,例如:PROD,QA,DEV等。

    确保为每个环境/作业添加Prometheus Scrape目标,并且作业名称与Prometheus.yml文件中配置的作业名称匹配。

    用法:java emsstatspromcollector [选项]其中选项是:-config   -  server confile filename,默认服务器.xml -interval   - 日志条目之间的间隔,默认为30秒-serverstatsport   -  HTTP端口扫描EMS Server Stats,默认为9091.(0禁用)-queuestatsport   - 要为EMS队列统计扰乱的HTTP端口,默认为9092.(0禁用)-TopicStatsPort <端口>  -  HTTP端口刮掉EMS主题统计数据,默认为9093.(0禁用)-job <作业名称>  -  Prometheus作业名称,默认TIB-EMS -NOOL  - 阻止所有日志记录日志目录,默认为false

    emsstatsinfluxpusher

    EmsStatsInfluxPusher类继承自EmsStatsLogger,除了记录EMS统计数据到文件,还发送统计数据到InfluxDb。如果不需要,可以禁用记录到文件。

    用法:Java Emsstatsinfluxpusher [选项]其中选项为:-config   - 服务器配置文件名,默认服务器.xml -dburl   -  Infux DB URL(默认http:// localhost:8086)-username   -  influx db usnername(默认管理员)--password   -  inforux db password(默认admin)-dbname   -  inforux db名称(不同环境的更改)默认tib-EMS“-NOOL  - 阻止所有日志记录统计到日志目录,默认为false

    emsstatscloudwatchpusher

    emsstatscloudwatchpusher继承自EMSStatslogger,除了记录EMS统计数据外,还将统计信息发送给AWS CloudWatch。如果您未在AWS上运行该工具,则必须为AWS环境提供AccessID,SecretKey和Region参数。如果不需要,可以禁用记录到文件。

    用法:Java EmsstatsCloudWatchPusher [选项]其中选项是:-config   -  Server Confile Filename,默认服务器.XML -Interval   - 日志条目之间的间隔,默认30秒--AccessID   -  AWS Access ID(默认环境凭据)-secretkey   -  aws密钥(默认环境凭据)-region   -  aws区域(默认当前区域)-ns   -  aws命名空间(默认tibco / ems)-nolog  - 防止所有将统计数据记录到日志目录,默认为false

    反馈(6)

    下载链接固定。

    唐约翰逊 2021年1月4日下午2:52

    你好,

    我无法下载emsstatslogger3.0.zip.

    你能帮忙吗?

    Mohamed.yahi-Pr ... 2020年12月27日11:33

    @理查德劳伦斯我尝试完成设置,我可以看到服务器详细信息与Prometheus客户端详细信息相同。因此,我无法检索队列细节。这就是我的理解。如果我错过了任何东西,请告诉我。

    moula.tibco 2020年3月27日下午12:21

    当我运行“runpromcollector.sh”时,它表示prometheus已在我的系统上运行。有交替的方式吗?

    错误:在端口9091 java.net.bindexception上创建prometheus httpserver:已使用的地址

    ashokselvam89 2012年1月21日下午5:05

    你好,

    我希望你还记得我在TIBCO EMS Stats收集器V 3.1上与你一起工作的时候,它从那时起一直工作得很好。

    我有一个新的要求,通过https而不是http向普罗米修斯遥测发送统计数据。Prometheus指出,这只能通过nginx实现,或者其他任何通过编程使用反向代理的简单方法。

    https://prometheus.io/docs/guides/tls-encryption/

    请分享您的想法,并可以使用TLS来实现所有运输。

    感谢,

    问候,

    Kannan

    Kvaradac. 2019年12月03日6:25分

    EmsStatslogger未写入队列CSV文件,导致队列仪表板要为空。可能是什么问题?

    Carolynsalat. 2019年4月10日凌晨4:52