赞
踩
Kafka 架构
上面绿色部分 PRODUCER(生产者)和下面紫色部分 CONSUMER(消费者)是业务程序,通常由研发人员埋点解决监控问题,如果是 Java 客户端也会暴露 JMX 指标。组件运维监控层面着重关注蓝色部分的 BROKER(Kafka 节点)和红色部分的 ZOOKEEPER。
ZooKeeper 也是 Java 语言写的,监控相对简单,另外 ZooKeeper 支持 mntr 四字命令,可以获取 ZooKeeper 内部健康状况。新版 ZooKeeper 连四字命令都不需要了,直接内置暴露了 Prometheus 协议的 metrics 接口,直接抓取即可。
重点关注 Broker 节点的监控,也就是 Kafka 自身的监控,通常从四个方面着手。
JMX(Java Management Extensions)是一个为应用程序植入管理功能的框架。Java 程序接入 JMX 框架之后,可以把一些类的属性和方法暴露出来,用户就可以使用 JMX 相关工具来读取或操作这些类。
Kafka 的配置文件在 config 目录,各种脚本在 bin 目录,要让 Kafka 开启 JMX,肯定是要修改某个配置项或者调整某个脚本的,具体调整哪里呢?我们在 Kafka 的部署目录搜索一下看看。
- grep -i jmx -r config
- grep -i jmx -r bin
JMX 数据分两类,一类是和 JVM 相关的,一类是和 Kafka 相关的。
ThreadCount 表示 JVM 里的线程数,类似的还有 DaemonThreadCount,表示后台线程数,PeakThreadCount 表示历史峰值线程数。JVM 要重点关注 GC 的情况和内存的情况。
GC 主要看次数和时间,分为 YongGC 和 FullGC,YongGC 很正常,频率也比较高,FullGC 正常情况下很少发生,如果经常发生,FullGC 程序的性能就会受影响。GC 次数的指标是 kafka_java_garbage_collector_CollectionCount,是一个 Counter 类型单调递增的值。GC 时间的指标是 kafka_java_garbage_collector_CollectionTime,也是一个 Counter 类型单调递增的值。
内存的指标是 kafka_java_memory_pool_Usage_used,单位是 byte。有个 name 标签标识了具体是哪个区域的内存大小,比如 Eden 区、Survivor 区、Old 区。
Kafka 指标
此文章为8月Day8学习笔记,内容来源于极客时间《运维监控系统实战笔记》,推荐该课程。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。