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配置:
{
"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配置,或者我指定的度量不正确。
任何帮助都是非常感谢的。
发布于 2015-07-13 01:56:30
经过多次实验,我现在已经解决了这个问题。为了完整,下面是我是如何解决这个问题的。
似乎我指定的"obj“值不正确。
正确的obj值(示例)如下:
"obj": "\"kafka.server\":type=\"BrokerTopicMetrics\",name \"AllTopicsLogBytesAppendedPerSec\"",
"attr": [ "Count" ]请注意,"obj“值需要额外的引号。这似乎不寻常,与我看到的其他JMX obj值的正常模式(没有引号)不同。
在将正确的(带引号的)值放入obj字符串后,JMXTRANS提供了有效的输出...
发布于 2015-07-12 05:26:06
正如我在日志中所发现的那样,默认情况下,stdout/ ./bin/jmxtrans.sh文件是/dev/null。
LOG_FILE=${LOG_FILE:-"/dev/null"}这就是为什么将env var设置为可用于查看输出的内容非常重要:
LOG_FILE=log.txt ./bin/jmxtrans.sh start kafka.json我使用的是以下kafka.json配置文件:
{
"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环境变量进行更改),例如
LOG_FILE=log.txt SECONDS_BETWEEN_RUNS=5 ./bin/jmxtrans.sh start kafka.json您可能希望使用jmxtrans的其他编写器,这样输出就不会混合在一起,例如
{
"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。
JMX_PORT=10101 ./bin/kafka-server-start.sh config/server.propertieshttps://stackoverflow.com/questions/31344222
复制相似问题