Shell控监Kafka积压

1、获取Kafka消息堆积情况

vi check-kafka-lag.sh

powershell 复制代码
#!/bin/bash

TOPIC="total_random"
GROUP_ID="etl-dw"
BOOTSTRAP_SERVER="node-01:9092,node-02:9092,node-03:9092"

# 检查第一个参数是否为数字
if ! [[ $1 =~ ^[0-9]+$ ]]; then
    echo "错误: 传入参数必须是数字" >&2
    exit 1
fi

# 获取LAG信息
LAG_INFO=`sh /data/app/kafka/bin/kafka-consumer-groups.sh --bootstrap-server $BOOTSTRAP_SERVER --group $GROUP_ID --describe | grep $TOPIC | awk -F " " '{print $6}'`

# 初始化LAG总和为0
total_lag=0

for lag in ${$LAG_INFO[@]};
do
  total_lag=$(($total_lag + $lag))
done

# 判断消息积压情况,是否重启程序
if [ $total_lag -gt $1 ]; then 
  echo "$(date +"%Y-%m-%d %H:%M:%S") Kafka Topic " $TOPIC " IN GROUP " $GROUP_ID " 消息堆积总量为:" $total_lag " 大于 " $1 ",停止DW模块"
  sh ./stop-dwkudu.sh
  
  # 判断是否执行成功
  if [ $? -eq 0 ]; then 
    sh ./start-dwkudu.sh
	echo "$(date +"%Y-%m-%d %H:%M:%S") 启动DW模块完成"
  else
    echo "$(date +"%Y-%m-%d %H:%M:%S") 停止DW模块失败"
  fi

else
  echo "$(date +"%Y-%m-%d %H:%M:%S") Kafka Topic " $TOPIC " IN GROUP " $GROUP_ID " 消息堆积总量为:" $total_lag " 小于 " $1
fi

2、创建定时任务

每隔1小时,执行一次

powershell 复制代码
0 */1 * * * /data/app/etl-dw/shell/check-kafka-lag.sh 100000 >> /data/logs/etl-dw/check-kafka-lag.log 2>&1 &
相关推荐
あ-18 小时前
kafka broker迁移
kafka
海兰19 小时前
【 Kafka进阶5】使用 Docker 部署 Apache Kafka 集群完全指南
docker·kafka·apache
海兰2 天前
【Kafka进阶4】KRaft 完全指南:Apache Kafka 摆脱 ZooKeeper 的架构
zookeeper·kafka·apache
海兰3 天前
【 Kafka进阶3】Apache Kafka 分布式事件流平台:架构原理与微服务解耦机制简要分析
分布式·架构·kafka
小白一枚133 天前
[学习笔记]Kafka 篇:从原理到实战的一站式指南
大数据·运维·elk·kafka·个人开发
阿里云云原生3 天前
还在给 AI “喂冷饭”?8.28 上海沙龙:带你跨越 AI 实时上下文鸿沟
云原生·kafka
海兰4 天前
【Kafka学习4】六大核心 API
学习·kafka·linq
NJCloud4 天前
ELK企业级日志分析平台(四)——基于 ELFK + Kafka 的日志采集与传输平台部署实践
linux·运维·分布式·elk·kafka
海兰5 天前
【Kafka学习3】Apache Kafka 本地部署环境快速入门指南
学习·kafka·apache
渣渣盟5 天前
Flink + Kafka 数据写入实战:从API调用到端到端一致性精讲
flink·kafka·linq