Kafka监控

楼高11个月前技术文章344

1.监控健康状态

为了了解 Kafka 的运作状态和性能状况需要对 Kafka 进行监控和诊断,通过Kafka提供的监控工具

和插件可以诊断出 Kafka 的异常、错误、瓶颈和故障等问题并及时采取对应的措施

监控指标(Broker Producer Consumer)

(1)Broker 状态

运行状态可以通过 Kafka 文件夹下的 kafka-server-start.sh 和 kafka-server-stop.sh 脚本来启动

和停止 broker。

错误信息可以在 kafkaServer.log 文件中找到。可以通过kafkaServer.log 跟踪最新日志信息。

同步状态可以通过在 config/server.properties 文件中进行配置来达到最佳表现。

(2)Producer 状态

提交速度可以通过 Kafka 生产者默认的 batch.size 参数来控制,此参数默认值为16KB。可以根据

需要调整此参数以达到最佳性能

batch.size=32768

发送成功率可以通过设置生产者确认级别(acks)参数来实现。可配置的选项包括:

ack = 0 (fire and forget), ack = 1 (awaiting for receipt) 或 ack = -1 (all)

acks=1

错误率可以通过在配置文件中设置 retries 和 retry.backoff.ms 参数来控制,达到重试并逐渐递增

时间的目的。如果发生无法恢复的错误,则会返回无法恢复的错误

retries=3

retry.backoff.ms=1000

(3)Consumer 状态

消费速度可以通过设置 fetch.min.bytes 和 fetch.max.bytes 参数来控制,以读取指定数量的字节。

建议将 fetch.min.bytes 参数设置得足够大,否则会导致大量短暂的网络请求。

fetch.min.bytes=65536

fetch.max.bytes=524288

消费成功率可以通过运行多个消息消费者并监控每个消费者的消费进度,以确定 Kafka 是否实时

消费每个消息。如果消息消费迟缓,则可以增加消费端的数量或增加消费端读取的批量大小。

失败率可以通过设置消费端的 auto.offset.reset 参数来控制。该参数表示消费者应当在无法从上

一个偏移量处读取消息时进行的操作,可以设置为 earliest 或 latest。如果设置为 earliest,消费

者将从 Kafka 的起始偏移量开始重新读取。如果设置为 latest,消费者将从另一侧开始读取。

2.监控吞吐量和延迟

吞吐量是衡量性能的关键指标之一,指的是在单位时间内Kafka能够处理的消息数

延迟是指从消息产生到消息被消费所经历的时间

在监控Kafka的吞吐量和延迟时,需要注意以下几个关键数据:

(1)读写比例

在Kafka集群中,读和写的比例必须是平衡的。如果读的速度比写的速度快,那么Kafka就会变成

一个缓慢的读取服务。反之如果写的速度比读的速度快那么Kafka将成为一个缓慢的写入服务。

因此要确保读写比例的平衡。

(2)分区和副本数量

分区和副本数量对Kafka的吞吐量和延迟都有很大的影响。增加分区和副本数量可以提高吞吐量

但同时也会增加延迟。因此需要平衡这两个指标

(3)数据生产和消费速度

数据生产和消费的速度都可以影响Kafka的吞吐量和延迟。如果生产者速度过快或者消费者速度

过慢就会导致Kafka缓存消息进而影响延迟。反之如果生产者速度过慢或者消费者速度过快也会

导致吞吐量下降,因此需要确保生产和消费速度的平衡。

监控指标

可以通过如下几个监控指标来了解Kafka的吞吐量和延迟情况:

# 监控来自代理的每秒字节数,可以反应消息生产速度

kafka.server:name=BytesInPerSec, type=BrokerTopicMetrics# 监控代理发送的每秒字节数,

可以体现消息的传输速度

kafka.server:name=BytesOutPerSec, type=BrokerTopicMetrics# 监控代理每秒钟接收到的

消息数量,可以反应消息的生产速度

kafka.server:name=MessagesInPerSec, type=BrokerTopicMetrics# 监控代理每秒发送的消

息数量,可以反应消息的传输速度

kafka.server:name=MessagesOutPerSec, type=BrokerTopicMetrics#  监控消费端每个分区

的消息滞后情况

kafka.consumer:name=FetchConsumer,client-id=([-.\w]+)-([-\w]+)-(?<name>\w+)-fetcher-\d+,

 topic=(.*),partition=(.*):records-lag#  监控Kafka每个分区的末尾偏移量,可以确定消息是否

已被成功传输到Kafka集群中的所有副本

kafka.log:name=LogEndOffset,partition=(.*)

以上指标可以通过Kafka内置JMX导出器暴露为JMX bean或通过集成Prometheus导出器来

作为Prometheus指标可视化

3.监控存储和网络使用情况

(1)存储和网络使用情况

和任何一个分布式系统一样Kafka的存储和网络使用情况也是我们需要关注和监控的指标

只有对存储和网络状态进行充分的监控才能及时发现问题并规避风险

(2)监控指标

监控 Kafka 的存储和网络使用情况时,需要关注以下指标:

a.存储容量和占用情况

b.网络速度和带宽使用率

c.磁盘I/O速度和响应时间等。

4.告警通知

在Kafka运维和监控的过程中及时发现并解决潜在的问题非常重要,这需要针对Kafka的指标

和参数设置报警阀值,当超过阀值时及时发送通知信息给Kafka负责的人员或者通过机器人来

进行通知

报警设置

Kafka可以通过架构模型使用系统包和第三方解决方案来设置定期或触发报警,例如:

Nagios、Zabbix、Prometheus、Sensu 和 PagerDuty 等。


相关文章

Yarn调度器和调度算法详解

Yarn调度器和调度算法详解

目前,Hadoop作业调度器主要有三种:FIFO、容量(Capacity Scheduler)和公平(Fair Scheduler)。Apache Hadoop3.1.3默认的资源调度器是C...

MySQL 小数类型介绍

MySQL 小数类型介绍

前言对于保证精度的数字,MySQL 也有对应的小数类型,下图是 MySQL 中小数类型概览。 浮点:小数点非固定的数,可表示数据范围较广,整数,小数都可表示。定点:小数点固定,可表示整数,小数。int...

ACOS无数据告警实践

ACOS无数据告警实践

1.说明在实现数据监控的过程中告警能力无疑是重中之重,无数据告警亦是告警能力中重要的场景,这里我们聊聊关于无数据一些场景和实践方法。2.无数据可能场景对于运维监控平台来说无数据是一个比较复杂的情况,从...

oracle v$archive_log视图过期信息清理

      在使用RMAN命令删除归档后,查询v$archived_log视图会发现name列为空了,但其他列的信息还保留,时间长了会留下很多过期的信息,影响维护工作,需要将过期的信息删除。 出现这样...

大数据自动化巡检系统使用说明

大数据自动化巡检系统使用说明

1. 大数据自动化巡检系统首页显示巡检集群数量、巡检模版、巡检指标、当日巡检情况等,如下图所示2. 自动化巡检提供基础配置,提供给两种巡检集群对接方式,一种是可以对接外部集群,通过系统接口调用,一种是...

Clickhouse MergeTree异常数据处理

说明clickhouse mergetree的数据文件如果遇到数据损坏,可能会导致clickhouse无法启动。本文章说明如何处理这类问题。测试我们先人为模拟破坏mergetree数据文件:detac...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。