
Bash
1 前言
一个问题,一篇文章,一出故事。
笔者生产环境的Kafka被客户端跑死,但不知道是哪个客户端发起众多连接,于是写脚本监控。
2 最佳实践
2.1 安装客户端软件包
yum install -y net-tools
2.2 创建监视脚本
mkdir -p ~/scripts/ vim ~/scripts/kafka-con-status.sh
加入如下脚本,
#!/bin/bash setTime=`date +"%Y-%m-%d %H:%M:%S"` kafkaLog="/var/log/kafka/full/kafka.$setTime.log" kafkaStatusLog="/var/log/kafka/kafkaStatus.log" filter="10.168.0.28:9092" if [ ! -d `dirname "$kafkaLog"` ]; then mkdir -p `dirname "$kafkaLog"` fi netstat -antp | grep "$filter" > "$kafkaLog" echo "$setTime" >> "$kafkaStatusLog" echo "All": `cat "$kafkaLog" | wc -l` >> "$kafkaStatusLog" for i in `cat "$kafkaLog" | awk -F ' ' '{print $5}' | awk -F ':' '{print $1}' | sort -u`; do echo "$i": `grep "$i" "$kafkaLog" | wc -l` done | sort -r -n -b -t ":" -k 2 | head -n 10 >> "$kafkaStatusLog" echo >> $kafkaStatusLog #find `dirname "$kafkaLog"` -type f -ctime -7 -name "kafka.*.log" -exec ls {} \; find `dirname "$kafkaLog"` -type f -ctime +7 -name "kafka.*.log" -exec rm -f {} \;
2.4 测试脚本
sh ~/scripts/kafka-con-status.sh
2.5 设置脚本触发
crontab -e
加入如下触发规则,
*/5 * * * * sh ~/scripts/kafka-con-status.sh
参阅文档
================
https://www.cmdschool.org/archives/16104
没有评论