来自ActiveMQ背景。 ActiveMQ使用spring xml配置文件来运行代理,我们可以注入任何第三方插件,如自定义统计信息收集器,一个使用spring配置文件中的bean的自定义日志记录插件。
对于Kafka,我想重新使用相同的stats collector插件并将其与Kafka一起启动,以收集其他系统统计信息,如线程,cpu等。
在仔细阅读Kafka文档后,我找不到办法。有没有人有这个可行的解决方案?这是否可以在不修改Kafka源的情况下实现?
任何帮助将不胜感激。谢谢!
没有要修改的源代码。您可以使用任何JMX指标收集器或Java代理。
如果您想要一种DIY方法,或者有一些供应商产品如DataDog可以提供Java代理,那么Prometheus Java Agent就很受欢迎。
对于您使用的任何工具,您可以通过KAFKA_OPTS
注入运行时args
对于Prometheus JMX出口商,
export KAFKA_OPTS='-javaagent:/path/to/jmx_prometheus_javaagent-0.9.jar=7071:/path/to/kafka-patterns.yml'
kafka-server-start /path/to/server.properties
日志记录由SLF4J处理,因此您可以根据需要进行配置,默认记录器为log4j
我在kafka找到了metrics.reporter配置。我们可以提供和实现MetricsReporter接口。在这个接口的init方法中,我初始化并启动了我的第三方插件以进行统计信息收集。
在服务器属性文件中,我添加了以下属性以启用metrics报告器的自定义实现:
metric.reporters=abc.kafka.plugin.KafkaMetricPlugin
许多其他监控解决方案,如linkedin的巡航控制,汇流控制中心使用这种方法。