当前位置:   article > 正文

Prometheus监控Kafka(三种方法JMX/Kafka_exporter/KMINION监控Kafka)_kafka exporter

kafka exporter

背景

一句话说明需求:

  • 公司需要监控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监控

操作要点

  1. 下载jmx程序包。
  2. 修改kafka启动参数
  3. 重启kafka
  4. 访问JMX-Agent端口验证监控指标
  5. 5.修改配置文件,并重启Prometheus
  6. 访问Prometheus,验证target是否监控成功。
  7. 配置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]$ 
  • 1
  • 2
  • 3
  • 4
  • 5

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]$ 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52

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
  • 1
  • 2
  • 3
  • 4

4.访问JMX-Agent端口验证监控指标

配置文件中指定了jmx-agent端口为5506。在开放防火墙策略、保证kafka重启成功后,可通过web访问查看相关的监控指标,如下图:
在这里插入图片描述

5.修改配置文件,并重启Prometheus

修改配置文件并重启Prometheus

sudo vim prometheus.yml 
curl -X POST http://127.0.0.1:9091/-/reload
  • 1
  • 2

使用curl命令重启prometheus的前提是:首次启动Prometheus时,就启用web.enable-lifecycle功能,具体启动命令如下:

#使用sudo权限,后台执行Prometheus启动命令,并启用lifecycle功能,指定监听端口为9091
sudo nohup ./prometheus --web.enable-lifecycle --web.listen-address=:9091 &
  • 1
  • 2

修改内容如下:
在这里插入图片描述

6.访问Prometheus,验证target是否监控成功。

在这里插入图片描述

7.配置Grafana:导入模板、配置数据源、查看监控数据。

下载dashboard模板,配合jmx-agent使用时,建议使用11962号模板。【Grafana官方:11962号模板下载地址】
在这里插入图片描述
导入模板,上传json文件。
在这里插入图片描述
查看仪表板,成功取得监控数据。
在这里插入图片描述
注意:

  1. 需要开通kafka、Prometheus、Grafana之间对具体端口的防火墙策略。
  2. 没啥注意的了,你们先操作吧,方式二、方式三我后面再补充。

方式二:使用kafka_exporter监控

  1. 下载kafka_exporter程序包。
  2. 修改kafka_exporter配置文件。
  3. 启动kafka_exporter。
  4. 重启prometheus。
  5. 导入grafana模板。

方式三:使用Kminion监控

  1. 下载Kminion程序包。
  2. 修改kminion配置文件。
  3. 创建kminion配置文件的环境变量。
  4. 启动kminion。
  5. 重启prometheus。
  6. 导入grafana模板。

注意:

  1. 防火墙策略。
  2. 端口占用情况。

相关截图

结束

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/517740?site
推荐阅读
相关标签
  

闽ICP备14008679号