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 &
相关推荐
java1234_小锋15 小时前
【免费】基于Spark实时交通流量分析与拥堵预测系统(Java版本+可视化大屏+Kafka+SpringBoot+Vue3) 锋哥原创出品,必属精品
java·大数据·spark·kafka·实时交通流量分析与拥堵预测
敲个大西瓜16 小时前
Kafka一百道核心面试题
kafka
后端观测站18 小时前
第三篇:消息队列如何保证消息可靠性?
kafka·java-rocketmq
布鲁飞丝2 天前
kafka 副本集设置和理解
分布式·kafka
香菜TTT2 天前
Kafka_深度解析_从架构原理到生产实践
分布式·架构·kafka·linq
java1234_小锋3 天前
【免费】基于Spark实时金融交易风险监控与预测系统(Java版本+可视化大屏+Kafka+SpringBoot+Vue3) 锋哥原创出品,必属精品
大数据·spark·kafka·金融交易风险监控与预测
梦想画家3 天前
FilePulse:Kafka Connect 的“智能文件网关”,重塑数据接入新范式
kafka·文件连接器·filepulse
Devin~Y3 天前
从本地生活电商到 AI RAG:互联网大厂 Java 面试场景完整实战
java·spring boot·redis·elasticsearch·spring cloud·kafka·rag
斯普润布特3 天前
Kafka KRaft 三节点 ARM64 Docker 部署
分布式·kafka
梦想画家3 天前
告别轮询:基于PostgreSQL CDC构建实时数据管道
数据库·postgresql·kafka·实时湖仓