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配置,或者我可能不正确地指定了指标。
感谢任何帮助。
答案 0 :(得分:1)
经过大量的实验,我现在已经解决了这个问题。为了完整起见,以下是我解决问题的方法。
我似乎错误地指定了“obj”值。
CORRECT obj值(示例)如下:
"obj": "\"kafka.server\":type=\"BrokerTopicMetrics\",name \"AllTopicsLogBytesAppendedPerSec\"",
"attr": [ "Count" ]
请注意,“obj”值需要额外的引号。这看起来很不寻常,与我见过的其他JMX obj值的正常模式(没有引号)不同。
在obj字符串中输入正确的(引用的)值后,JMXTRANS提供了有效的输出...
答案 1 :(得分:0)
正如我在Gmail::Client::AuthorizationError: Couldn't login to given Gmail account: email@gmail.com (Invalid credentials (Failure))
中发现的那样,默认情况下,stdout / log文件为./bin/jmxtrans.sh
。
/dev/null
这就是为什么将env var设置为可用于查看输出的内容非常重要:
LOG_FILE=${LOG_FILE:-"/dev/null"}
我正在使用以下LOG_FILE=log.txt ./bin/jmxtrans.sh start kafka.json
配置文件:
kafka.json
当您启动jmxtrans时,它会在{
"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
} ]
}
上使用JMX查询代理,该localhost:10101
属性为Count
主题。 将每隔60秒将结果打印到文件testowo
(您可以使用LOG_FILE
env var更改它),例如
SECONDS_BETWEEN_RUNS
您可能希望使用其他jmxtrans编写器,因此输出不会混合,例如。
LOG_FILE=log.txt SECONDS_BETWEEN_RUNS=5 ./bin/jmxtrans.sh start kafka.json
最后但并非最不重要的是,在使用{
"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
} ]
}
启动Kafka代理时,将JMX端口设置为已知值时使用JMX_PORT
env var,即
./bin/kafka-server-start.sh