在 Debian 上监控 Kafka 集群可以通过多种工具和方法实现,以下是一些有效的监控技巧和工具:
kafka_exporter
进行监控kafka_exporter
是一个开源项目,能够收集 Kafka 集群的监控指标,并通过 Prometheus 进行展示。以下是使用 kafka_exporter
的基本步骤:
安装 kafka_exporter
:
你可以通过 Docker Compose 来部署多个 kafka_exporter
实例,每个实例监控一个 Kafka broker。
version: '3.1'
services:
kafka-exporter-opslogs:
image: bitnami/kafka-exporter:latest
command: '--kafka.server=10.2.19.43:9092 --kafka.server=10.2.24.62:9092 --kafka.server=10.5.98.190:9092 --kafka.version=3.2.1'
restart: always
ports:
- 9310:9308
kafka-exporter-prod:
image: bitnami/kafka-exporter:latest
command: '--kafka.server=192.168.53.99:9092 --kafka.server=192.168.53.53:9092 --kafka.server=192.168.53.96:9092'
restart: always
ports:
- 9311:9308
配置 Prometheus 接入 kafka_exporter
:
在 Prometheus 的配置文件中添加 kafka_exporter
的 job,确保每个 kafka_exporter
实例都有唯一的 name
标签。
job_name: 'kafka-exporter'
metrics_path: /metrics
scrape_interval: 15s
scrape_timeout: 10s
static_configs:
- targets:
- 10.0.0.26:9310
labels:
name: kafka-opslogs
- 10.0.0.26:9311
labels:
name: kafka-prod
Grafana 是一个强大的可视化工具,可以与 Prometheus 结合使用,展示 Kafka 监控数据。你可以通过以下步骤来配置 Grafana:
安装 Grafana: 在 Debian 上安装 Grafana。
sudo apt-get update
sudo apt-get install grafana
导入 Kafka 监控面板: 导入基于 Prometheus 的 Kafka 监控面板(例如 starsliao/Prometheus 项目中的看板)。
Manage
-> Install
。Prometheus
插件。kafka
看板(ID:21078)。JConsole 是一个基于 JMX 的可视化监控工具,可以用来监控 Kafka 的各项指标。
启用 JMX:
修改 kafka-server-start.sh
脚本,增加 JMX 端口配置。
export JMX_PORT="9999"
启动 JConsole: 在终端中输入以下命令启动 JConsole。
jconsole
通过 JConsole 连接到 Kafka broker 的 JMX 端口,进行监控。
Kafka Manager 是一个功能全面的 Kafka 监控工具,可以用来管理和监控 Kafka 集群。
安装 Kafka Manager: 从 Kafka Manager 的 GitHub 仓库 下载并解压。
配置 Kafka Manager: 修改 Kafka 集群启动脚本,增加 JMX 相关参数。
# 修改 Kafka-run-class.sh 文件,增加 JMX Server 配置
-Djava.rmi.server.hostname=LAPTOP-3B77RHGG3
启动 Kafka Manager: 按照项目文档中的步骤启动 Kafka Manager,并进行配置。
为了及时发现和处理问题,可以配置 Prometheus 告警规则。例如:
Kafka Brokers 异常:
alert: KAFKA_brokers_exception
expr: kafka_broker_info != 1
for: 2m
labels:
severity: critical
annotations:
description: "{{ $labels.name }} 当前 brokers 异常:{{ $labels.address }}"
Kafka 消息积压:
alert: kafka_message_backpressure
expr: sum(kafka_consumergroup_lag_sum{job="kafka-exporter"}) by (name, consumergroup, topic) > 5000
for: 2m
labels:
severity: critical
annotations:
description: "【环境】{{ $labels.name }}
【消费组】{{ $labels.consumergroup }} 【topic】{{ $labels.topic }} 【积压】:{{ $value | printf "%.2f" }}"
通过以上方法和工具,你可以在 Debian 上有效地监控 Kafka 集群,确保其稳定运行。