监控Kafka的关键指标

这篇具有很好参考价值的文章主要介绍了监控Kafka的关键指标。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Kafka 架构

监控Kafka的关键指标,运维,监控,kafka,监控,运维

 上面绿色部分 PRODUCER(生产者)和下面紫色部分 CONSUMER(消费者)是业务程序,通常由研发人员埋点解决监控问题,如果是 Java 客户端也会暴露 JMX 指标。组件运维监控层面着重关注蓝色部分的 BROKER(Kafka 节点)和红色部分的 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 都应该监控的指标。

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 指标

  • 活跃控制器数量:MBean:broker kafka.controller:type=KafkaController,name=ActiveControllerCount。一个 Kafka 集群有多个 Broker,正常来讲其中一个 Broker 会是活跃控制器,且只能有一个。从整个集群角度来看,SUM 所有 Broker 的这个指标,结果应该为 1。如果
  • 非同步分区数量:MBean:kafka.server:type=ReplicaManager,name=UnderReplicatedPartitions。这个指标是对每个 Topic 的每个分区的统计,如果某个分区主从同步出现问题,对应的数值就会大于 0。
  • 离线分区数量:MBean:kafka.controller:type=KafkaController,name=OfflinePartitionsCount。这个指标只有集群控制器才有,其他 Broker 这个指标的值是 0,表示集群里没有 leader 的分区数量。
  • 离线日志目录数量:MBean:kafka.log:type=LogManager,name=OfflineLogDirectoryCount。Kafka 是把收到的消息存入 log 目录,如果 log 目录有问题,比如写满了,就会被置为 Offline,及时监控离线日志目录的数量显然非常有必要。
  • 流入流出字节和流入消息:这是典型的吞吐指标,既有 Broker 粒度的,也有 Topic 粒度的,名字都一样,Topic 粒度的指标数据 MBean ObjectName 会多一个 topic=xx 的后缀。
  • 流入字节:MBean:kafka.server:type=BrokerTopicMetrics,name=BytesInPerSec。这个指标 Kafka 在使用 Yammer Metrics 埋点的时候,设置为了 Meter 类型,所以 Yammer 会自动计算出 Count、OneMinuteRate、FiveMinuteRate、FifteenMinuteRate、MeanRate 等指标,也就是 1 分钟、5 分钟、15 分钟内的平均流入速率,以及整体平均流入速率。
  • 流出字节:MBean:kafka.server:type=BrokerTopicMetrics,name=BytesOutPerSec。和 BytesInPerSec 类似,表示出向流量。不过需要注意的是,流出字节除了普通消费者的消费流量,也包含了副本同步流量。
  • 流入消息:MBean:kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSecBytesInPerSec 和 BytesOutPerSec 都是以 byte 为单位统计的,而 MessagesInPerSec 是以消息个数为单位统计的,也是 Meter 类型,相关属性都一样。
  • 分区数量:MBean:kafka.server:type=ReplicaManager,name=PartitionCount这个指标表示某个 Broker 上面总共有多少个分区,包括 leader 分区和 follower 分区。如果多个 Broker 分区不均衡,可能会造成有些 Broker 消耗硬盘空间过快,这是需要注意的。
  • leader 分区数量:MBean:kafka.server:type=ReplicaManager,name=LeaderCount这个指标表示某个 Broker 上面总共有多少个 leader 分区,leader 分区负责数据读写,承接流量,所以 leader 分区如果不均衡,会导致某些 Broker 过分繁忙而另一些 Broker 过分空闲,这种情况也是需要我们注意的。

监控Kafka的关键指标,运维,监控,kafka,监控,运维

此文章为8月Day8学习笔记,内容来源于极客时间《运维监控系统实战笔记》,推荐该课程。文章来源地址https://www.toymoban.com/news/detail-635453.html

到了这里,关于监控Kafka的关键指标的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 监控Elasticsearch的关键指标

    Elasticsearch 的核心职能就是对外提供搜索服务,所以搜索请求的吞吐和延迟是非常关键的,搜索是靠底层的索引实现的,所以索引的性能指标也非常关键,Elasticsearch 由一个或多个节点组成集群,集群自身是否健康也是需要我们监控的。 lasticSearch 的架构非常简单,一个节点就

    2024年02月13日
    浏览(41)
  • 监控Redis的关键指标

    Redis 也是一个对外服务,所以 Google 的四个黄金指标同样适用于 Redis。 1、延迟 在软件工程架构中,之所以选择 Redis 作为技术堆栈的一员,大概率是想要得到更快的响应速度和更高的吞吐量,所以延迟数据对使用 Redis 的应用程序至关重要。 客户端应用程序埋点。比如某个

    2024年02月13日
    浏览(44)
  • 监控Kubernetes Node组件的关键指标

    所有的 Kubernetes 组件,都提供了 /metrics 接口用来暴露监控数据,Kube-Proxy 也不例外。通过  ss  或者  netstat  命令可以看到 Kube-Proxy 监听的端口,一个是 10249,用来暴露监控指标,一个是 10256 ,作为健康检查的端口,一般我们只关注前一个端口。 1、Kube-Proxy 关键指标 1、通用

    2024年02月13日
    浏览(34)
  • 一站式 Elasticsearch 集群指标监控与运维管控平台

    上篇文章写了一下消息运维管理平台,今天带来的是ES的监控和运维平台。目前初创企业,不像大型互联网公司,可以重复的造轮子。前期还是快速迭代试错阶段,方便拿到市场反馈,及时调整自己的战略和产品方向。让自己活下去,话不多说 开始今天的分享。 一、项目介绍

    2024年02月10日
    浏览(39)
  • MySQL性能监控全掌握,快来get关键指标及采集方法!

    数据库中间件监控实战,MySQL中哪些指标比较关键以及如何采集这些指标了。帮助提早发现问题,提升数据库可用性。 监控哪类指标? 如何采集数据? 第10讲监控方法论如何落地? 这些就可以在MySQL中应用起来。MySQL是个服务,所以可借用Google四个黄金指标解决问题: 1.1 延

    2024年02月02日
    浏览(42)
  • 【kafka 监控】Kafka_exporter+prometheus 监控kafka数据

    一、kafka_exporter 安装步骤: Kafka_exporter是一款用于将Kafka集群的监控指标暴露给Prometheus的开源工具,可以用于监控Kafka集群的各种状态数据。下面是Kafka_exporter的安装和部署步骤: 环境准备 Java环境:Kafka_exporter需要Java环境支持,您可以在Oracle官网下载和安装Java的最新版本。

    2024年02月07日
    浏览(48)
  • flinksql kafka到mysql累计指标练习

    数据流向:kafka -kafka -mysql 模拟写数据到kafka topic:wxt中 kafka topic :wxt1 kafka topic :wxt2 mysql结果数据: pom文件

    2024年02月08日
    浏览(27)
  • Prometheus监控Kafka(三种方法JMX Kafka_exporter KMINION监控Kafka)_kafka exporter

    公司需要监控kafka消息队列的消费情况,强调需查看当前Topic中的message的数量。 一句话说明解决: 像Kafka这样的Java进程可以先通过JMX Agent或者第三方Agent(kafka_exporterKMINION等)获取监控数据,再通过Prometheus采集数据、通过Grafana模板展示数据即可。另外具体的message数量需要通

    2024年04月25日
    浏览(44)
  • Prometheus监控Kafka(三种方法JMX/Kafka_exporter/KMINION监控Kafka)

    一句话说明需求: 公司需要监控kafka消息队列的消费情况,强调需查看当前Topic中的message的数量。 一句话说明解决: 像Kafka这样的Java进程可以先通过JMX Agent或者第三方Agent(kafka_exporterKMINION等)获取监控数据,再通过Prometheus采集数据、通过Grafana模板展示数据即可。另外具体

    2024年02月04日
    浏览(37)
  • 如何基于运维事件中心通过 logstash 进行日志关键字监控

    日常运维过程中,很多场景都需要对日志进行监测,以便第一时间发现应用/业务相关异常,这是一种比较常见的监控需求,所以也有很多方法可以实现告警。对于简单的告警可以通过一些传统的监控工具实现,但对于体量和业务是非常复杂的中大型企业来说,在

    2024年02月20日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包