首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用jmxtrans监控Kafka broker?

如何使用jmxtrans监控Kafka broker?
EN

Stack Overflow用户
提问于 2015-07-10 23:06:31
回答 2查看 12K关注 0票数 2

Kafka 0.8.1.1 (kafka_2.8.0-0.8.1.1.tgz)

我正在使用jmxtrans对一个Kafka实例(在docker中运行)进行JMX监控。不幸的是,kafka指标没有返回。

我已经尝试了一些事情来调试它,并且知道kafka运行正常(我可以成功地产生/消费消息)得出结论,jmxtrans确实返回了JMX指标(例如,java.lang:type=Memory,attribute=HeapMemoryUsage返回了正确的数据),所以一般的kafka和JMX功能似乎是有效的。此外,我可以在使用jconsole时访问指标--指标似乎是用所有相关字段中的数据捕获的。

不幸的是,当我使用以下配置尝试jmxtrans时,我没有得到任何信息(实际上根本没有数据)。我相信这些指标应该是基于kafka文档("kafka.server:type=BrokerTopicMetrics",attribute="MessagesInPerSec")来获取的。

下面是我使用的jmxtrans配置:

代码语言:javascript
复制
{
    "servers" : [ {
        "port" : "9999",
        "host" : "10.0.1.201",
        "queries" : [ {
            "outputWriters" : [ {
                "@class" : "com.googlecode.jmxtrans.model.output.StdOutWriter",
                "settings" : {
                 }
             } ],
             "obj" : "kafka.server:type=BrokerTopicMetrics",
             "attr" : [ "MessagesInPerSec" ]
         } ],
         "numQueryThreads" : 2
     } ]
}

我不确定为什么没有返回数据。可能我设置了无效的jmxtrans配置,或者我指定的度量不正确。

任何帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-13 01:56:30

经过多次实验,我现在已经解决了这个问题。为了完整,下面是我是如何解决这个问题的。

似乎我指定的"obj“值不正确。

正确的obj值(示例)如下:

代码语言:javascript
复制
"obj": "\"kafka.server\":type=\"BrokerTopicMetrics\",name \"AllTopicsLogBytesAppendedPerSec\"",
"attr": [ "Count" ]

请注意,"obj“值需要额外的引号。这似乎不寻常,与我看到的其他JMX obj值的正常模式(没有引号)不同。

在将正确的(带引号的)值放入obj字符串后,JMXTRANS提供了有效的输出...

票数 1
EN

Stack Overflow用户

发布于 2015-07-12 05:26:06

正如我在日志中所发现的那样,默认情况下,stdout/ ./bin/jmxtrans.sh文件是/dev/null

代码语言:javascript
复制
LOG_FILE=${LOG_FILE:-"/dev/null"}

这就是为什么将env var设置为可用于查看输出的内容非常重要:

代码语言:javascript
复制
LOG_FILE=log.txt ./bin/jmxtrans.sh start kafka.json

我使用的是以下kafka.json配置文件:

代码语言:javascript
复制
{
  "servers" : [ {
    "port" : "10101",
    "host" : "localhost",
    "queries" : [ {
      "outputWriters" : [ {
        "@class" : "com.googlecode.jmxtrans.model.output.StdOutWriter",
        "settings" : {
        }
      } ],
      "obj" : "kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec,topic=testowo",
      "attr" : [ "Count" ]
    } ],
    "numQueryThreads" : 2
  } ]
}

当您启动jmxtrans时,它将在localhost:10101上使用JMX向代理查询有关testowo主题的Count属性。它将每隔60秒将结果打印到文件LOG_FILE中(您可以使用SECONDS_BETWEEN_RUNS环境变量进行更改),例如

代码语言:javascript
复制
LOG_FILE=log.txt SECONDS_BETWEEN_RUNS=5 ./bin/jmxtrans.sh start kafka.json

您可能希望使用jmxtrans的其他编写器,这样输出就不会混合在一起,例如

代码语言:javascript
复制
{
  "servers" : [ {
    "port" : "10101",
    "host" : "localhost",
    "queries" : [ {
      "outputWriters" : [ {
        "@class" : "com.googlecode.jmxtrans.model.output.KeyOutWriter",
        "settings" : {
          "outputFile" : "testowo-counts.txt",
          "maxLogFileSize" : "10MB",
          "maxLogBackupFiles" : 200,
          "delimiter" : "\t",
          "debug" : true
        }
      } ],
      "obj" : "kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec,topic=testowo",
      "attr" : [ "Count" ]
    } ],
    "numQueryThreads" : 2
  } ]
}

最后但并非最不重要的一点是,要将JMX端口设置为已知值,请在使用./bin/kafka-server-start.sh启动JMX_PORT代理时使用Kafka env var。

代码语言:javascript
复制
JMX_PORT=10101 ./bin/kafka-server-start.sh config/server.properties
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31344222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档