网站效果图怎么做,html网站标题怎么做的,怎么建网站视频,网站加载速率Kafka 架构 上面绿色部分 PRODUCER#xff08;生产者#xff09;和下面紫色部分 CONSUMER#xff08;消费者#xff09;是业务程序#xff0c;通常由研发人员埋点解决监控问题#xff0c;如果是 Java 客户端也会暴露 JMX 指标。组件运维监控层面着重关注蓝色部分的 BROKE…Kafka 架构 上面绿色部分 PRODUCER生产者和下面紫色部分 CONSUMER消费者是业务程序通常由研发人员埋点解决监控问题如果是 Java 客户端也会暴露 JMX 指标。组件运维监控层面着重关注蓝色部分的 BROKERKafka 节点和红色部分的 ZOOKEEPER。
ZooKeeper 也是 Java 语言写的监控相对简单另外 ZooKeeper 支持 mntr 四字命令可以获取 ZooKeeper 内部健康状况。新版 ZooKeeper 连四字命令都不需要了直接内置暴露了 Prometheus 协议的 metrics 接口直接抓取即可。
重点关注 Broker 节点的监控也就是 Kafka 自身的监控通常从四个方面着手。
Kafka 进程所在机器的监控重点关注 CPU、硬盘 I/O、网络 I/O。JVM 监控Kafka 是个 Java 进程所以需要常规的 JVM 监控通过 JMX 方式暴露。Kafka 自身的指标、也是通过 JMX 方式暴露比如消息数量、流量、分区、副本的数量等。各个 consumer 的 lag 监控即消息堆积量是各类 MQ 都应该监控的指标。
JMXJava 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 和 FullGCYongGC 很正常频率也比较高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 指标
活跃控制器数量MBeanbroker kafka.controller:typeKafkaController,nameActiveControllerCount。一个 Kafka 集群有多个 Broker正常来讲其中一个 Broker 会是活跃控制器且只能有一个。从整个集群角度来看SUM 所有 Broker 的这个指标结果应该为 1。如果非同步分区数量MBeankafka.server:typeReplicaManager,nameUnderReplicatedPartitions。这个指标是对每个 Topic 的每个分区的统计如果某个分区主从同步出现问题对应的数值就会大于 0。离线分区数量MBeankafka.controller:typeKafkaController,nameOfflinePartitionsCount。这个指标只有集群控制器才有其他 Broker 这个指标的值是 0表示集群里没有 leader 的分区数量。离线日志目录数量MBeankafka.log:typeLogManager,nameOfflineLogDirectoryCount。Kafka 是把收到的消息存入 log 目录如果 log 目录有问题比如写满了就会被置为 Offline及时监控离线日志目录的数量显然非常有必要。流入流出字节和流入消息这是典型的吞吐指标既有 Broker 粒度的也有 Topic 粒度的名字都一样Topic 粒度的指标数据 MBean ObjectName 会多一个 topicxx 的后缀。流入字节MBeankafka.server:typeBrokerTopicMetrics,nameBytesInPerSec。这个指标 Kafka 在使用 Yammer Metrics 埋点的时候设置为了 Meter 类型所以 Yammer 会自动计算出 Count、OneMinuteRate、FiveMinuteRate、FifteenMinuteRate、MeanRate 等指标也就是 1 分钟、5 分钟、15 分钟内的平均流入速率以及整体平均流入速率。流出字节MBeankafka.server:typeBrokerTopicMetrics,nameBytesOutPerSec。和 BytesInPerSec 类似表示出向流量。不过需要注意的是流出字节除了普通消费者的消费流量也包含了副本同步流量。流入消息MBeankafka.server:typeBrokerTopicMetrics,nameMessagesInPerSecBytesInPerSec 和 BytesOutPerSec 都是以 byte 为单位统计的而 MessagesInPerSec 是以消息个数为单位统计的也是 Meter 类型相关属性都一样。分区数量MBeankafka.server:typeReplicaManager,namePartitionCount这个指标表示某个 Broker 上面总共有多少个分区包括 leader 分区和 follower 分区。如果多个 Broker 分区不均衡可能会造成有些 Broker 消耗硬盘空间过快这是需要注意的。leader 分区数量MBeankafka.server:typeReplicaManager,nameLeaderCount这个指标表示某个 Broker 上面总共有多少个 leader 分区leader 分区负责数据读写承接流量所以 leader 分区如果不均衡会导致某些 Broker 过分繁忙而另一些 Broker 过分空闲这种情况也是需要我们注意的。 此文章为8月Day8学习笔记内容来源于极客时间《运维监控系统实战笔记》推荐该课程。