- 公司需要监控kafka消息队列的消费情况,强调需查看当前Topic中的message的数量。
一句话说明解决:
- 像Kafka这样的Java进程可以先通过JMX Agent或者第三方Agent(kafka_exporter\KMINION等)获取监控数据,再通过Prometheus采集数据、通过Grafana模板展示数据即可。另外具体的message数量需要通过PromQL语句查询得到。
多说几句:
- kafka应用的具体指标和JVM虚拟机的指标都可以通过JMX监控得到。
- Zabbix也可以监控kafka,也是通过JMX实现。
- Prometheus对自定义监控项更友好,相关的Grafana模板更多。
- 建议同时使用JMX和kminion,同时使用两者的Grafana模板(具体性能损耗的评估稍后有时间我再详细说明,有时间折腾也可以只装一个)
- 三种方式获取的都是kafka监控指标,最终都通过grafana集成显示。
2024.02.12补充注意:好几张截图里的第二个messages per sec值其实是all messages 的值,查看grafana模板promsql 可以确定。编辑配置可以修改,应该是模版作者的小疏漏。
监控效果截图
参考链接
【Grafana模板库:搜索Kafka】
【阿里云官方文档:如何部署和配置Kafka JMX Agent】
实际操作
方式一:使用JMX监控
操作要点
- 下载jmx程序包。
- 修改kafka启动参数
- 重启kafka
- 访问JMX-Agent端口验证监控指标
- 5.修改配置文件,并重启Prometheus
- 访问Prometheus,验证target是否监控成功。
- 配置Grafana:导入模板、配置数据源、查看监控数据。
1.下载jmx程序包
使用阿里云提供的jmx-agent包,比较稳定靠谱,就不故意选择最新版本了。
下载链接:【阿里云JMX-Agent下载】
下载后需传输到kafka所在服务器上,如:
[sysma@kafka-0001 jmx_agent]$ ls
kafka-jmx_prometheus_javaagent-1.18.1.jar
[sysma@kafka-0001 jmx_agent]$ pwd
/ilw/jmx_agent
[sysma@kafka-0001 jmx_agent]$
2.修改kafka启动参数。
修改kafka启动脚本的配置参数,可参考阿里云【阿里云官方文档:如何部署和配置Kafka JMX Agent】
也可参考我的示例文件,对比阿里云文档截图,我的示例文件更为简单直观:
在EXTRA_ARGS=${EXTRA_ARGS-'-name kafkaServer -loggc '}
这一行之后,新增JMX-agent内容-javaagent:/ilw/jmx_agent/kafka-jmx_prometheus_javaagent-1.18.1.jar=5506
,目的是下次启动kafka进程的同时,运行一个jmx-agent并指定agent的端口。
完整示例文件如下:
[sysma@kafka-0001 bin]$ pwd
/ilw/kafka_2.12-3.5.0/bin
[sysma@kafka-0001 bin]$ cat kafka-server-start.sh
#!/bin/bash
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
if [ $# -lt 1 ];
then
echo "USAGE: $0 [-daemon] server.properties [--override property=value]\*"
exit 1
fi
base\_dir=$(dirname $0)
if [ "x$KAFKA\_LOG4J\_OPTS" = "x" ]; then
export KAFKA\_LOG4J\_OPTS="-Dlog4j.configuration=file:$base\_dir/../config/log4j.properties"
fi
if [ "x$KAFKA\_HEAP\_OPTS" = "x" ]; then
export KAFKA\_HEAP\_OPTS="-Xmx1G -Xms1G"
fi
##修改前,默认配置如下
#EXTRA\_ARGS=${EXTRA\_ARGS-'-name kafkaServer -loggc'}
#修改后,在下一行新增jmx-agent的路径位置,指定jmx暴露端口。
EXTRA\_ARGS=${EXTRA\_ARGS-'-name kafkaServer -loggc -javaagent:/ilw/jmx\_agent/kafka-jmx\_prometheus\_javaagent-1.18.1.jar=5506'}
COMMAND=$1
case $COMMAND in
-daemon)
EXTRA\_ARGS="-daemon "$EXTRA\_ARGS
shift
;;
*)
;;
esac
exec $base\_dir/kafka-run-class.sh $EXTRA\_ARGS kafka.Kafka "$@"
[sysma@kafka-0001 bin]$
3.重启kafka
启动和停止kafka的脚本如下,也可直接复制命令执行:
[sysma@kafka-0001 ilw]$ cat 03_startKFK-3.5.0.sh
sudo /ilw/kafka_2.12-3.5.0/bin/kafka-server-start.sh /ilw/kafka_2.12-3.5.0/config/server.properties &
[sysma@kafka-0001 ilw]$ cat 04_stopKFK-3.5.0.sh
sudo /ilw/kafka_2.12-3.5.0/bin/kafka-server-stop.sh /ilw/kafka_2.12-3.5.0/config/server.properties
4.访问JMX-Agent端口验证监控指标
配置文件中指定了jmx-agent端口为5506。在开放防火墙策略、保证kafka重启成功后,可通过web访问查看相关的监控指标,如下图:
5.修改配置文件,并重启Prometheus
修改配置文件并重启Prometheus文章来源:https://www.toymoban.com/news/detail-857786.html
sudo vim prometheus.yml
curl -X POST http://127.0.0.1:9091/-/reload
使用curl命令重启prometheus的前提是:首次启动Prometheus时,就启用web.enable-lifecycle
功能,具体启动命令如下:文章来源地址https://www.toymoban.com/news/detail-857786.html
**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**
**深知大多数大数据工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
**因此收集整理了一份《2024年大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。**
![img](https://img-blog.csdnimg.cn/img_convert/5d4f11e7f2204223bf6235632624e98a.png)
![img](https://img-blog.csdnimg.cn/img_convert/8a807aa43925cfba8d3c2b9f33fd7da3.png)
![img](https://img-blog.csdnimg.cn/img_convert/73d2dd65c226c3932dc50566585d67e5.png)
![img](https://img-blog.csdnimg.cn/img_convert/43724056106680c8edf8e337e82df5b7.png)
![img](https://img-blog.csdnimg.cn/img_convert/a61350830ff3820e74d710bbeb8de1e6.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!**
**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**
**如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)**
![img](https://img-blog.csdnimg.cn/img_convert/512d83659ea81b97519d359686c87f7b.png)
学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!**
**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**
**如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)**
[外链图片转存中...(img-tkpPSTYq-1712857325462)]
到了这里,关于Prometheus监控Kafka(三种方法JMX Kafka_exporter KMINION监控Kafka)_kafka exporter的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!