一句话说明需求:
一句话说明解决:
多说几句:
【Grafana模板库:搜索Kafka】
【阿里云官方文档:如何部署和配置Kafka JMX Agent】
操作要点
使用阿里云提供的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]$
修改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]$
启动和停止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
配置文件中指定了jmx-agent端口为5506。在开放防火墙策略、保证kafka重启成功后,可通过web访问查看相关的监控指标,如下图:
修改配置文件并重启Prometheus
sudo vim prometheus.yml
curl -X POST http://127.0.0.1:9091/-/reload
使用curl命令重启prometheus的前提是:首次启动Prometheus时,就启用web.enable-lifecycle
功能,具体启动命令如下:
#使用sudo权限,后台执行Prometheus启动命令,并启用lifecycle功能,指定监听端口为9091
sudo nohup ./prometheus --web.enable-lifecycle --web.listen-address=:9091 &
修改内容如下:
下载dashboard模板,配合jmx-agent使用时,建议使用11962号模板。【Grafana官方:11962号模板下载地址】
导入模板,上传json文件。
查看仪表板,成功取得监控数据。
注意: