最佳实践|从Producer 到 Consumer,如何有效监控 Kafka

对于运维人而言,如何安装维护一套监控系统,或如何进行技术选型,从来不是工作重点。如何借助工具对所需的应用、组件进行监控,发现并解决问题才是重中之重。
随着 Prometheus 逐渐成为云原生时代可观测标准,为了帮助更多运维人用好 Prometheus,阿里云云原生团队将定期更新 Prometheus 最佳实践系列。第一期我们讲解了《最佳实践|Spring Boot 应用如何接入 Prometheus 监控》,今天将为大家带来,消息队列产品 Kafka 的监控最佳实践。

本篇内容主要包括三部分:Kafka 概览介绍、常见关键指标解读、如何建立相应监控体系。

什么是 Kafka

Kafka 起源

Kafka 是由 Linkedin 公司开发,并捐赠给 Apache 软件基金会的分布式发布订阅消息系统,Kafka 的目的是通过 Hadoop 的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。

Kafka 的诞生是为了解决 Linkedin 的数据管道问题,用作 LinkedIn 的活动流(Activity Stream)和运营数据处理管道(Pipeline)的基础。起初 Linkedin 采用 ActiveMQ 进行数据交换,但当时的 ActiveMQ 无法满足 Linkedin 对数据传递系统的要求,经常出现消息阻塞或者服务无法正常访问等问题。Linkedin 决定研发自己的消息队列,Linkedin 时任首席架构师 Jay Kreps 便开始组建团队进行消息队列的研发。

Kafka 特性

相较于其他消息队列产品,Kafka 存在以下特性:

  • 持久性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失;
  • 高吞吐:Kafka 每秒可以处理百万条消息;
  • 可扩展:Kafka 集群支持热扩展;
  • 容错性:允许集群中节点失败(若副本数量为 n,则允许 n-1 个节点失败);
  • 高并发:支持数千个客户端同时读写。

与此同时,区别于其他消息队列产品,Kafka 不使用 AMQP 或任何其他预先存在的协议进行通信,使用基于 TCP 的自定义二进制协议。并具有强大的排序语义和持久性保证。

Kafka 应用场景

基于以上的特性,Kafka 通过实时的处理大量数据以满足各种需求场景:

  • 大数据领域:如网站行为分析、日志聚合、应用监控、流式数据处理、在线和离线数据分析等领域。
  • 数据集成:将消息导入 ODPS、OSS、RDS、Hadoop、HBase 等离线数据仓库。
  • 流计算集成:与 StreamComput e、E-MapReduce、Spark、Storm 等流计算引擎集成。

Kafka 技术架构

一个消息队列 Kafka 版集群包括 Producer、Kafka Broker、Consumer Group、Zookeeper。

  • Producer:消息发布者,也称为消息生产者, 通过 Push 模式向 Broker 发送消息。发送的消息可以是网站的页面访问、服务器日志,也可以是 CPU 和内存相关的系统资源信息。
  • Broker:用于存储消息的服务器。Broker 支持水平扩展。Broker 节点的数量越多,集群吞吐率越高。
  • Consumer Group:Consumer 被称为消息订阅者或消息消费者,负责向服务器读取消息并进行消费。Consumer Group 指一类 Consumer,这类 Consumer 通常接收并消费同一类消息,且消息消费逻辑一致。通过 Pull 模式从 Broker 订阅并消费消息。
  • Zookeeper:管理集群配置、选举 Leader 分区,并在 Consumer Group 发生变化时进行负载均衡。其中值得一提的是,如果没有 ZooKeeper 就无法完成 Kafka 部署。ZooKeeper 是将所有东西粘合在一起的粘合剂
  • 发布/订阅模型 :Kafka 采用发布/订阅模型,Consumer Group 和 Topic 的对应关系是 N : N,即一个 Consumer Group 可以同时订阅多个 Topic,一个 Topic 也可以被多个 Consumer Group 同时订阅。虽然一个Topic可以被多个 Consumer Group 同时订阅,但该 Topic 只能被同一个 Consumer Group 内的任意一个 Consumer 消费。

监控 Kafka 的关键指标

这里我们根据 Kafka 云服务以及自建 Kafka 两个不同的产品进行讲解。

如果使用的 Kafka 是云厂商提供的托管服务,对外暴露的指标相对有限,可以忽略 Zookeeper 相关指标。以阿里云 Kafka 举例,主要针对各资源类型进行监控:

1、实例监控项

  • 实例消息生产流量(bytes/s)
  • 实例消息消费流量(bytes/s)
  • 实例磁盘使用率(%)-实例各节点中磁盘使用率的最大值

2、Topic 监控项

  • Topi
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值