CentOS Kafka 监控与告警实践
导读:CentOS Kafka 监控与告警实践 一 架构与工具选型 指标采集与可视化 采集:使用 Kafka Exporter 暴露 JMX 指标,端口 9308;系统层用 node_exporter 采集 CPU/内存/磁盘/网络。 存储与...
CentOS Kafka 监控与告警实践
一 架构与工具选型
- 指标采集与可视化
- 采集:使用 Kafka Exporter 暴露 JMX 指标,端口 9308;系统层用 node_exporter 采集 CPU/内存/磁盘/网络。
- 存储与展示:用 Prometheus 抓取指标,Grafana 做可视化与面板展示。
- 消费者延迟与消费进度
- Burrow 监控 Consumer Group 的 Lag,识别消费滞后与停滞。
- 运维与管控
- Kafka Manager(CMAK)、Kafka Eagle、KnowStreaming 辅助多集群管理与观测。
- 系统层监控
- Netdata 快速查看主机健康状态(可选)。
- 商业方案
- Confluent Control Center 提供集中化监控与告警(适合企业版)。
二 部署与配置步骤
- 部署 Kafka Exporter
- 下载并启动(示例):
- wget https://github.com/danielqsj/kafka_exporter/releases/download/v1.3.1/kafka_exporter-1.3.1.linux-amd64.tar.gz
- tar -xzf kafka_exporter-1.3.1.linux-amd64.tar.gz & & cd kafka_exporter-1.3.1.linux-amd64
- ./kafka_exporter --kafka.server=127.0.0.1:9092 --web.listen-address=:9308
- 下载并启动(示例):
- 配置 Prometheus 抓取
- 在 prometheus.yml 增加:
- scrape_configs:
- job_name: ‘kafka’
static_configs:
- targets: [‘kafka_exporter_host:9308’]
- job_name: ‘kafka’
static_configs:
- scrape_configs:
- 重启 Prometheus 生效。
- 在 prometheus.yml 增加:
- 部署 Burrow
- 下载并启动(示例):
- wget https://github.com/linkedin/Burrow/releases/download/v1.4.0/Burrow-1.4.0-linux-amd64.tar.gz
- tar -xzf Burrow-1.4.0-linux-amd64.tar.gz & & cd Burrow-1.4.0
- ./burrow --config-dir /etc/burrow
- 下载并启动(示例):
- Grafana 可视化
- 添加 Prometheus 数据源,导入 Kafka 仪表盘模板(社区模板编号如 7589),按需调整。
- 系统层监控
- 安装 node_exporter(每个 Kafka 节点),Prometheus 抓取 9100 端口。
- 可选:安装 Netdata(http://:19999)用于快速排障。
三 关键监控指标与阈值建议
- 主机与实例容量
- 磁盘使用率:> 80% 即告警(紧急);容量满可能导致写入失败或被封禁。
- 内存使用率:> 90% 持续 3 次告警(紧急);考虑扩容或优化堆/页缓存。
- CPU 使用率:> 90% 持续 3 次告警(重要);检查热点分区、GC、磁盘 IO。
- 分区数:已用分区数 > 实例上限的 90%(重要);提前扩容或拆分业务。
- 连接与带宽
- 实例连接数百分比:> 80%(重要);预防客户端无法建连。
- 生产/消费带宽百分比:各自 > 80%(重要);预防生产/消费失败或延迟上升。
- 消费延迟与堆积
- 消费组未消费消息大小:> 100000 MB(重要);结合业务设置上限,预防实时性劣化。
- 分区未消费消息个数:> 100000(重要);预防 Rebalance 与消费雪崩。
- 通用堆积策略:堆积量 > 业务上限的 90% 立即告警(重要);优先排查异常消费者与扩容消费者。
- 说明
- 阈值需结合 SLA/RT/容量规划 调优;云上实例在 100% 磁盘 时可能被写封禁,务必提前扩容。
四 告警规则示例 Prometheus + Alertmanager
- 磁盘容量
- expr: 1 - (node_filesystem_avail_bytes{ mountpoint=“/”} / node_filesystem_size_bytes{ mountpoint=“/”} )
- for: 5m
- labels: severity=critical
- annotations: summary=“Disk usage high on { { $labels.instance } } ”, description=“Mountpoint { { $labels.mountpoint } } is { { $value | humanizePercentage } } used.”
- Broker 内存
- expr: (1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100
- for: 15m
- labels: severity=critical
- annotations: summary=“Memory usage high on { { $labels.instance } } ”
- 分区数接近上限
- expr: kafka_topic_partition_current{ job=“kafka”} / kafka_topic_partition_limit{ job=“kafka”} > 0.9
- for: 0m
- labels: severity=warning
- annotations: summary=“Partition usage > 90% on cluster { { $labels.cluster } } ”
- 消费组堆积(按业务上限)
- expr: sum by (group,topic) (kafka_consumergroup_lag{ job=“kafka”} ) > on(group,topic) group_left kafka_consumergroup_lag_threshold{ job=“kafka”} * 0.9
- for: 5m
- labels: severity=warning
- annotations: summary=“Consumer lag > 90% threshold”, description=“Group { { $labels.group } } topic { { $labels.topic } } lag is { { $value } } ”
- 运行与通知
- 将规则保存至规则文件(如 kafka.rules.yml),在 Prometheus 中加载;配置 Alertmanager 的 Webhook/邮件/企业微信/钉钉 等接收器,分组、抑制与静默按需设置。
五 日常巡检与优化要点
- 消费者健康
- 避免长阻塞 poll、频繁 GC、处理线程不足;确保 分区数 ≥ 消费者数,减少 Rebalance 与滞后。
- 分区与容量
- 预估峰值吞吐与分区布局,避免热点;分区数接近上限时提前扩容或拆分业务。
- 存储与 IO
- 监控 磁盘 IO 等待 与 写放大;保留策略与日志段大小合理设置,避免频繁刷盘。
- 连接与带宽
- 关注 连接泄漏 与 带宽打满;优化客户端连接池与批量参数(如 linger/批量大小)。
- 版本与依赖
- 升级 Kafka/Exporter/Burrow 至稳定版本;JMX 暴露与认证按最小权限配置。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS Kafka 监控与告警实践
本文地址: https://pptw.com/jishu/759169.html
