在银行日志分析系统中,如何对kafka消息中间件进行日常运维?

参与6

1同行回答

jwhdhrjwhdhr软件开发工程师农商银行
kafka应用程序包含大量的度量指标,它们所涉及的范围从简单的流量速率度量到各种请求类型的时间度量,这些度量为kafka的每一种行为提供了详细的信息,但是是否我们能从其中选择出自己所需要的以及关键性的指标,这个需要我们的运维人员按需所需在这我主要描述几种在kafka监控中...显示全部

kafka应用程序包含大量的度量指标,它们所涉及的范围从简单的流量速率度量到各种请求类型的时间度量,这些度量为kafka的每一种行为提供了详细的信息,但是是否我们能从其中选择出自己所需要的以及关键性的指标,这个需要我们的运维人员按需所需
在这我主要描述几种在kafka监控中较为关键的内容
第一为应用程序健康监测,通过外部进程或者脚本来报告kafka的运行状态,可以直接连接到它的端口看是否得到响应。
第二为kafka的非同步分区,一旦非同步分区大于0就证明有代理已经离线,需要及时查看该代理是否出现问题
第三为集群负载不均衡监控,涉及监控分区数量、首领分区数量、主题流入字节速率、主题流入消息速率
第四为资源消耗,涉及CPU使用、网络输入吞吐量、网络输出吞吐量、磁盘平均等待时间、磁盘使用百分比
第五则是针对broker的度量指标:如活跃控制器数量、请求处理器空闲率等

以下为官方文档中所提及的kafka的监控指标,在这也提供给大家做一个参考(此信息收集于网络)

Kafka性能指标

kafka.server

BrokerTopicMetrics,name=MessagesInPerSec: 每秒消息量
BrokerTopicMetrics,name=BytesInPerSec: 每秒输入字节数
BrokerTopicMetrics,name=BytesOutPerSec: 每秒输出字节数
ReplicaManager,name=UnderReplicatedPartitions: 复制分区的数量,默认0,|ISR|<|all replicas|
ReplicaManager,name=PartitionCount: 分区数
ReplicaManager,name=LeaderCount: Leader副本数
ReplicaManager,name=IsrShrinksPerSec: ISR回退
ReplicaManager,name=IsrExpandsPerSec: ISR超前 value is 0
ReplicaFetcherManager,name=MaxLag,clientId=Replica: 滞后follower和leader的最大消息长度
FetcherLagMetrics,name=ConsumerLag,clientId=([-.\w]+),topic=([-.\w]+),partition=([0-9]+): 滞后follower的消息长度
DelayedOperationPurgatory,name=PurgatorySize,delayedOperation=Produce: producer等待请求大小
DelayedOperationPurgatory,name=PurgatorySize,delayedOperation=Fetch: 获取等待请求大小
KafkaRequestHandlerPool,name=RequestHandlerAvgIdlePercent: 平均处理线程空闲时间

kafka.network

kafka.network:type=RequestMetrics,name=$1,request={Produce|FetchConsumer|FetchFollower}
RequestsPerSec: 每秒请求量
TotalTimeMs: 请求总时间
RequestQueueTimeMs: 请求队列等待时间
LocalTimeMs: 请求leader处理时间
RemoteTimeMs: 请求follower等待时间
ResponseQueueTimeMs: 请求队列等待响应时间
ResponseSendTimeMs: 请求响应发送时间
kafka.network:type=SocketServer,name=NetworkProcessorAvgIdlePercent: 平均网络处理空闲时间

kafka.controller

KafkaController,name=ActiveControllerCount: 活跃broker数量
ControllerStats,name=LeaderElectionRateAndTimeMs: leader选举率
ControllerStats,name=UncleanLeaderElectionsPerSec: Unclean leader选举率

common

connection-close-rate: 每秒连接关闭率
connection-creation-rate: 每秒新建连接率
network-io-rate: 平均每秒IO次数(读取或写入)
outgoing-byte-rat: 平均每秒向服务器发送的字节数
request-rate: 平均每秒发送的请求数
incoming-byte-rate: 每秒读取字节数
response-rate: 每秒收到的回复
select-rate: IO切换次数
io-wait-ratio: IO线程等待时间
connection-count: 当前活跃连接数

broker

outgoing-byte-rate: 平均每秒发送字节数
request-rate: 平均每秒请求数
request-size-avg: 所有请求的平均大小
request-latency-avg: 平均请求时间(ms)
response-rate: 每秒收到的响应数

producer

waiting-threads: 缓存区排队的用户阻塞线程数
buffer-available-bytes: 可用内存字节数
batch-size-avg: 每个分区每次请求发送的平均字节数
compression-rate-avg: 批量记录平均压缩率
record-queue-time-avg: 批量记录耗费的平均时间(ms)
request-latency-avg: 平均请求时间(ms)
record-send-rate: 每秒发送的平均次数
record-retry-rate: 每秒重试发送次数
record-error-rate: 每秒错误数量次数
requests-in-flight: 目前等待响应的请求数量
metadata-age: 当前生产者数据使用周期(s)

consumer

Consumer Group

commit-latency-avg: 提交请求所用的平均时间
commit-rate: 每秒提交调用次数
assigned-partitions: 当前分配给该消费者的分区数(可选)
heartbeat-rate: 平均每秒心跳数
join-time-avg: 群组重新加入的平均时间
join-rate: 每秒连接组的数量
sync-time-avg: 群组同步所需的平均时间
sync-rate: 每秒同步的组数

consumer fetch

fetch-size-avg: 每次请求获取的平均字节数
bytes-consumed-rate: 每秒消耗的平均字节数
fetch-latency-avg: 请求所用的平均时间
fetch-rate: 每秒提取请求数
records-lag-max: 分区中记录的最大滞后数量

topic-level fetch

fetch-size-avg: topic请求的平均字节数
bytes-consumed-rate: topic每秒平均消耗的字节数

streams

Thread

[commit|poll|process|punctuate]-latency-avg: 平均执行时间(ms)
[commit|poll|process|punctuate]-rate: 平均每秒请求数
task-created-rate: 每秒新建任务数
task-closed-rate: 每秒关闭任务数
skipped-records-rate: 每秒跳过记录数

Task

commit-latency-avg: 平均执行时间(ms)
commit-rate: 每秒提交的平均次数

Processor Node

forward-rate: 每秒从源节点向下游转发的平均速率

State Store

[put|put-if-absent|get|delete|put-all|all|range|flush|restore]-latency-avg: 平均执行时间(ns)
[put|put-if-absent|get|delete|put-all|all|range|flush|restore]-rate: 每秒的平均运行速度

收起
互联网服务 · 2019-06-17
浏览2017

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2019-06-17
  • 关注会员:2 人
  • 问题浏览:2610
  • 最近回答:2019-06-17
  • X社区推广