jmxtrans监控kafka

我们知道jmx可以将程序内部的信息暴露出来,但是要想监控这些信息的话,就还需要自己写java程序调用jmx接口去获取数据,并按照某种格式发送到其他地方(如监控程序zabbix,ganglia)。这时jmxtrans就派上用场了,jmxtrans的作用是自动去jvm中获取所有jmx格式数据,并按照某种格式(json文件配置格式)输出到其他应用程序(常用的有ganglia)

安装

主页:https://github.com/jmxtrans/jmxtrans(这里面也有一个下载地址,貌似版本更高)
下载地址:https://github.com/jmxtrans/jmxtrans/downloads
sudo yum install jmxtrans-20121016.145842.6a28c97fbb-0.noarch.rpm
jmxtrans安装目录:/usr/share/jmxtrans
jmxtrans配置文件 :/etc/sysconfig/jmxtrans
json文件默认目录:/var/lib/jmxtrans/
日志路径:/var/log/jmxtrans/jmxtrans.log

启动

sudo /usr/share/jmxtrans/jmxtrans.sh start
sudo /usr/share/jmxtrans/jmxtrans.sh start /var/lib/jmxtrans/kafka.json # 也可以指定json文件路径

停止

sudo /usr/share/jmxtrans/jmxtrans.sh stop

监控jvm

jvm需要加入以下参数

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false

监控kafka示例

监控kafka信息发送到ganglia,/var/lib/jmxtrans/kafka.json

{
    "servers": [
        {
            "port": "9999",  # jmx 端口
            "host": "127.0.0.1",   # jmx 的主机
            "queries": [
                {
                    "outputWriters": [
                        {
                            "@class": "com.googlecode.jmxtrans.model.output.GangliaWriter",
                            "settings": {
                                "groupName": "jvmheapmemory",
                                "port": 8649,
                                "host": "127.0.0.1"
                            }
                        }
                    ],
                    "obj": "java.lang:type=Memory",
                    "resultAlias": "heap",
                    "attr": [
                        "HeapMemoryUsage",
                        "NonHeapMemoryUsage"
                    ]
                },
        {
                    "outputWriters": [
                        {
                            "@class": "com.googlecode.jmxtrans.model.output.GangliaWriter",
                            "settings": {
                                "groupName": "kafka topic stats",
                                "port": 8649,   # ganglia的gmond端口
                                "host": "127.0.0.1",  # ganglia 主机
                "typeNames":[
                    "name"
                ]
                            }
                        }
                    ],
                    "obj": "kafka.server:type=BrokerTopicMetrics,name=*",
                    "resultAlias": "Kafka",
                    "attr": [
                        "Count",
                        "OneMinuteRate"
                    ]
                },
                {
                    "outputWriters": [
                        {
                            "@class": "com.googlecode.jmxtrans.model.output.GangliaWriter",
                            "settings": {
                                "groupName": "kafka server request",
                                "port": 8649,
                                "host": "127.0.0.1"
                            }
                        }
                    ],
                    "obj":"kafka.server:type=OffsetManager,name=NumGroups",
                    "resultAlias": "OffsetManager NumGroups",
                    "attr": [
                        "Value"
                    ]
                },
                {
                    "outputWriters": [
                        {
                            "@class": "com.googlecode.jmxtrans.model.output.GangliaWriter",
                            "settings": {
                                "groupName": "jvmGC",
                                "port": 8649,
                                "host": "127.0.0.1",
                                "typeNames": [
                                    "name"
                                ]
                            }
                        }
                    ],
                    "obj": "java.lang:type=GarbageCollector,name=*",
                    "resultAlias": "GC",
                    "attr": [
                        "CollectionCount",
                        "CollectionTime"
                    ]
                }
            ],
            "numQueryThreads": 2
        }
    ]
}
时间: 2024-10-04 02:21:44

jmxtrans监控kafka的相关文章

jmxtrans 监控kafka

jmxtrans 的版本必须 是jmxtrans-268.rpm 以上 如果kafka 为kafka_2.11-0.10.1.0 ,则在 jdk 1.7上使用 kafka_2.12-0.11.0.0 只能在jdk 1.8上使用 原文地址:https://www.cnblogs.com/taek/p/8407746.html

Kafka 消息监控 - Kafka Eagle

1.概述 在开发工作当中,消费 Kafka 集群中的消息时,数据的变动是我们所关心的,当业务并不复杂的前提下,我们可以使用 Kafka 提供的命令工具,配合 Zookeeper 客户端工具,可以很方便的完成我们的工作.随着业务的复杂化,Group 和 Topic 的增加,此时我们使用 Kafka 提供的命令工具,已预感到力不从心,这时候 Kafka 的监控系统此刻便尤为显得重要,我们需要观察消费应用的详情. 监控系统业界有很多杰出的开源监控系统.我们在早期,有使用 KafkaMonitor 和

监控Kafka消费进度

使用Kafka作为消息中间件消费数据时,监控Kafka消费的进度很重要.其中,在监控消费进度的过程中,主要关注消费Lag. 常用监控Kafka消费进度的方法有三种,分别是使用Kafka自带的命令行工具.使用Kafka Consumer API和Kafka自带的JMX监控指标,这里介绍前两种方法. 注: 内网IP:10.12.100.126 10.12.100.127 10.12.100.128 外网IP:47.90.133.76 47.90.133.77 47.90.133.78 用户名:ser

使用JMX监控Kafka

Kafka可以配置使用JMX进行运行状态的监控,既可以通过JDK自带Jconsole来观察结果,也可以通过Java API的方式来. 关于监控指标的描述,可以参考:http://kafka.apache.org/documentation.html#monitoring 开启JMX端口 修改bin/kafka-server-start.sh,添加JMX_PORT参数,添加后样子如下 if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then exp

zabbix配合脚本监控Kafka

简介: Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据.Kafka如下特性,受到诸多公司的青睐. 1.高吞吐量:即使是非常普通的硬件Kafka也可以支持每秒数百万的消息(核心目标之一). 2.支持通过Kafka服务器和消费机集群来分区消息 ………… 场景: Kafka的作用我就不在这BB了,大家可以瞅瞅http://blog.jobbole.com/75328/,总结的非常好. Kafka监控的几个指标 1.lag:多少消息没有消费 2.logsi

zabbix监控kafka消费

一.Kafka监控的几个指标 1.lag:多少消息没有消费 lag=logsize-offset 2.logsize:Kafka存的消息总数 3.offset:已经消费的消息 Kafka管理工具 介绍: https://www.iteblog.com/archives/1605.html 二.查看zookeeper配置 cat /home/app/zookeeper/zookeeper/conf/zoo.cfg | egrep -v "^$|^#" clientPort=2181 三.

Zabbix监控Kafka

1.配置java-gatewayvim settings.shLISTEN_IP="0.0.0.0"LISTEN_PORT=10052PID_FILE="/tmp/zabbix_java.pid"START_POLLERS=5其中 LISTEN_PORT 和 LISTEN_IP 可以不配置,zabbix_java 会采用默认值.但是 PID_FILE 和 START_POLLERS 必须配置,尤其主意 START_POLLERS,若不配置 zabbix_java 依

使用 Python 监控 Kafka Consumer LAG

我在要完成这个需求的时候大概有两个思路. 第一种方法: 我们直接使用 Kafka 提供的 bin 工具,去把我们关心的 lag 值 show 出来然后通过代码处理一下报出来.例如: 我们可以起个远程的 cmd 脚本,定期去执行 kafka-consumer-groups.sh 工具然后通过 awk '{print $1,$2,$5}' 拿到对应的 consumer paritions 和 lag 值,然后使用脚本稍微处理一下该报警的报警,该忽略的忽略. 这个办法很 ok 但是有个不太好的地方是他

jmxtrans+InfluxDb+Grafana

参考: jmxtrans+InfluxDb+Grafana部署: https://www.jianshu.com/p/ac30f06d433f   GG jmx:http://www.jmxtrans.org/jmxtrans监控kafka参数:https://www.sohu.com/a/166756065_610730 kafka jmx端口https://www.cnblogs.com/30go/p/9274124.htmlJMX最常见的场景是监控Java程序的基本信息和运行情况,任何Ja