前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >日志系统Kafka运维的经验

日志系统Kafka运维的经验

原创
作者头像
stevenclji
发布于 2020-03-15 09:20:53
发布于 2020-03-15 09:20:53
3.9K00
代码可运行
举报
文章被收录于专栏:万亿日志之道万亿日志之道
运行总次数:0
代码可运行

背景介绍:

从事日志系统的开发运维1年多了,Kafka集群一直是系统中最重要的集群之一。及时有效地处理Kafka问题,是保障系统运行稳定的重要工作。

KAFKA相关数据:

磁盘占用量:1000TB/天

(一)常见问题

问题1:磁盘只读故障

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
服务器X.X.X.X发生了逻辑盘只读故障。
故障描述:硬盘分区/data9 只读, 出错信息:Read-only file system

系统日志数量巨大,持续的数据写入操作,导致磁盘很容易故障,出现故障时,需要尽快停止服务,减少对集群的影响。

由于Topic一般使用双副本或者三副本,停止一台机器暂时不会对集群产生影响,但是应当尽快将机器恢复,加入集群,避免集群中有些partiton出现单副本运行的情况。如图,一台机器(Broker2)故障,导致Partition0/Partition1单副本运行。

Kafka集群机器故障示意图-故障前
Kafka集群机器故障示意图-故障前
Kafka集群机器故障示意图-故障后
Kafka集群机器故障示意图-故障后

尽快恢复故障机器的方式:

1:等待故障机器修复(根据集群副本情况判断,如果已经单副本在运行,则需要尽快处理)。

2:在集群建设之初,设定备用磁盘,直接对故障磁盘进行替换。

3:在故障机器停机后,创建新的Topic替换旧的Topic(新的Topic所有partition都落在正常的机器上)

4:可以使用kafka reassign partitions工具,将故障机器上的partition迁移到正常的机器(需要考虑数据量的情况和迁移时间)。

注意:使用kafka reassign partitions工具时,需要根据故障的机器ID和partition分布情况自己制定分次/批量迁移规则,不能使用Kafka推荐的配置。

问题2:单partition消费僵死

曾经出现过某topic的单个partition数据无法消费的情况,其它partition可以消费,消费集群整体无异常,未找到具体原因,重启消费者后,问题消失,为了避免及时发现问题,系统增加了对所有partition的消费情况监控,自上次出现问题后,一直未重现此问题。

问题3:消费积压

消费积压是常见的问题,数据量增长,晚高峰,都可能导致数据积压,需要收集到积压数据,关注积压量,在业务上半段是否需要扩容消费端。

问题4:数据回放

Kafka集群中日志一般保持1天,如果在1天内有需要特殊处理的数据,就需要对Kafka数据重新读取。这时需要提前在每个时间点记录当前partition的offset,在Kafka集群中可以考虑每隔10分钟记录一次offset,在数据回放时,按照时间和offset数据,直接读取Topic中数据进行处理。

(二)Kafka监控

Kafka集群与生产者/消费者的关系
Kafka集群与生产者/消费者的关系

在运维kafka系统的过程中,我们根据业务的特点,为了能及时发现上述问题,对所有的集群进行了如下方面的监控:

1,生产者offset变化监控(partition)

根据系统特点,数据是每时每刻都在产生的,可以对指定的Topic的每个partition,检测数据写入后的offset变化情况,如果未变化,则表示数据写入可能出现了异常,然后检查是集群问题或者是生产者Producer的问题。

2,Spark offset变化监控(partition)

Kafka数据是在持续产生,消费者也是在持续消费,可以检查消费者指定Topic的每个partition的offset变化,如果未变化,则表示数据消费异常。

3,消费滞后(group id)

检测所有消费者的消费滞后(LAG)情况,超过一定的积压值,进行告警,需要进行相关的业务分析和扩容。

4,ISR监控

监控是否所有的partition都具有多个可用副本,保证没有因为机器故障未处理的单副本partition,也能及时发现kafka集群负载高导致的副本无法及时保持与leader数据同步的问题。

5,Leader切换的监控

监控集群中Leader切换的情况,有助于了解集群的稳定状态,以便尽早发现问题和提供解决方案。

---完---

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Kafka万亿级消息实战
本文主要总结当Kafka集群流量达到 万亿级记录/天或者十万亿级记录/天  甚至更高后,我们需要具备哪些能力才能保障集群高可用、高可靠、高性能、高吞吐、安全的运行。
2020labs小助手
2021/05/18
1.1K0
2万长文搞懂Kafka
生产者:Producer 往Kafka集群生成数据消费者:Consumer 往Kafka里面去获取数据,处理数据、消费数据Kafka的数据是由消费者自己去拉去Kafka里面的数据主题:topic分区:partition 默认一个topic有一个分区(partition),自己可设置多个分区(分区分散存储在服务器不同节点上)
用户4283147
2022/10/27
4880
2万长文搞懂Kafka
Kafka基础知识索引
从 0.9 版本开始,Kafka 的标语已经从“一个高吞吐量,分布式的消息系统”改为”一个分布式流平台“。
用户6070864
2019/09/04
5080
Kafka基础知识索引
Kafka集群管理:🛠️ 如何实现数据均衡与性能最大化
Kafka 起初是 由 LinkedIn 公司采用 Scala 语言开发的一个多分区、多副本且基于 ZooKeeper 协调的分布式消息系统,现已被捐献给 Apache 基金会。
TASKCTL 任务调度平台
2024/11/21
1730
Kafka集群管理:🛠️ 如何实现数据均衡与性能最大化
Kafka 运营总结
蒋海鹏
2017/09/18
3K0
Kafka 运营总结
kafka集群管理指南
其中,—topic表示主题名称,—partitions表示分区数,—replication-factor表示副本数,—config表示主题配置,会覆盖默认的配置项。
从大数据到人工智能
2022/01/19
2K0
kafka–核心技术篇
在消息发送的过程中,涉及到了两个线程——main 线程和== Sender 线程==。在 main 线程中创建了一个双端队列 RecordAccumulator(32M内存)。main 线程将消息发送给 RecordAccumulator,Sender 线程不断从 RecordAccumulator 中拉取消息发送到 Kafka Broker。
全栈程序员站长
2022/09/13
6820
【kafka运维】Kafka全网最全最详细运维命令合集(精品强烈建议保存)
本文所有命令,博主均全部操作验证过,保证准确性; 非复制粘贴拼凑文章; 如果想了解更多工具命令,可在评论区留下评论,博主会择期加上;
石臻臻的杂货铺[同名公众号]
2021/12/31
2.2K1
【kafka运维】Kafka全网最全最详细运维命令合集(精品强烈建议保存)
Kafka快速入门(Kafka Broker)节点服役和退役、手动调整副本
(3)查看/kafka/brokers/topics/first/partitions/0/state 路径上的数据。
鱼找水需要时间
2023/02/16
9970
Kafka快速入门(Kafka Broker)节点服役和退役、手动调整副本
Kafka 面试真题及答案,建议收藏
Kafka可以说是必知必会的了,首先面试大数据岗位的时候必问kafka,甚至现在java开发岗位也会问到kafka一些消息队列相关的知识点。先来看看有哪些最新的Kafka相关面试点:
大数据技术架构
2020/06/05
3.3K0
Kafka 面试真题及答案,建议收藏
大数据必知必会之Kafka
Kafka 起初是 由 LinkedIn 公司采用 Scala 语言开发的一个多分区、多副本且基于 ZooKeeper 协调的分布式消息系统,现已被捐献给 Apache 基金会。目前 Kafka 已经定位为一个分布式流式处理平台,它以高吞吐、可持久化、可水平扩展、支持流数据处理等多种特性而被广泛使用,主要是由 Scala 和 Java 编写。
没有故事的陈师傅
2022/09/15
4870
大数据必知必会之Kafka
kafka概念
-1或all: producer发送过来的数据,Leader和ISR队列满足最小应答数后才应答,其中ISR队列满足最小应答数可以通过min.insync.replicas参数设置。
doper
2022/09/26
6880
kafka概念
kafka数据迁移实践
本文重点介绍 kafka 的两类常见数据迁移方式:1、broker 内部不同数据盘之间的分区数据迁移;2、不同 broker 之间的分区数据迁移。
mikealzhou
2018/01/19
5.9K11
kafka数据迁移实践
【kafka运维】Kafka全网最全最详细运维命令合集(精品强烈建议收藏!!!)
本文所有命令,博主均全部操作验证过,保证准确性; 非复制粘贴拼凑文章; 如果想了解更多工具命令,可在评论区留下评论,博主会择期加上;
石臻臻的杂货铺[同名公众号]
2021/07/08
5.9K0
【kafka运维】Kafka全网最全最详细运维命令合集(精品强烈建议收藏!!!)
Kafka入门篇学习笔记整理
本文只包含Kafka入门使用导学,后续会继续整理Kafka进阶知识与底层原理剖析。
大忽悠爱学习
2023/04/12
1.3K0
Kafka入门篇学习笔记整理
【夏之以寒-kafka专栏 01】 Kafka核心组件:从Broker到Streams 矩阵式构建实时数据流
Broker:在Kafka中,Broker是Kafka集群中的一个节点,负责处理Kafka中的核心功能。从物理层面来看,Broker可以是单独的一台服务器,也可以是集群中的一个节点。从逻辑层面来看,Broker是Kafka服务端的实现,负责接收生产者发送的消息,并将这些消息转发给消费者。Broker是Kafka实现分布式、高吞吐、高可靠性的关键组件。
夏之以寒
2024/05/26
2930
Kafka系列8:一网打尽常用脚本及配置,宜收藏落灰!
通过前面 7 篇文章的介绍,小伙伴们应该对 Kafka 运行工作原理有一个相对比较清晰的认识了。为了提高平时的工作效率,帮助我们快速定位一些线上问题,比如查看部分 Partition 堆积机器 IP 等操作,这篇文章总结了一些平时常用到的一些 Kafka 命令及常用配置,方便日后查阅(该文章中提到的相关配置会持续更新)。
z小赵
2020/05/28
1.5K0
Kafka全面认知
最早设计的目的是作为LinkedIn的活动流和运营数据的处理管道。这些数据主要是用来对用户做用户画像分析以及服务器性能数据的一些监控。
花落花相惜
2021/11/22
5030
都说Kafka牛3万字带你全面掌握kafka
系统间的耦合高怎么办,我们如何不让一个服务过于庞大,一个好的方式就是依据具体的功能模块拆分服务,降低服务的耦合度,服务间的交互可以通过消息传递数据来实现,除此之外Kafka非常适合在线日志收集等高吞吐场景,kafka有更好的吞吐量,内置分区,副本和故障转移,这有利于处理大规模的消息,所以kafka被各大公司广泛运用于消息队列的构建:
大数据老哥
2021/03/05
1.3K0
都说Kafka牛3万字带你全面掌握kafka
【Kafka】(二)Kafka 的架构
如上图所示: 一个典型的 Kafka 集群中包含若干 Producer(可以是 web 前端产生的 Page View,或者是服务器日志,系统 CPU、Memory 等); 若干 broker(Kafka 支持水平扩展,一般 broker 数量越多,集群吞吐率越高),若干 Consumer Group,以及一个 Zookeeper 集群; Kafka 通过 Zookeeper 管理集群配置,选举 leader,以及在 Consumer Group 发生变化时进行 rebalance; Producer 使用 push 模式将消息发布到 broker,Consumer 使用 pull 模式从 broker 订阅并消费消息;
redszhao
2021/08/09
1K0
【Kafka】(二)Kafka 的架构
相关推荐
Kafka万亿级消息实战
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验