当前位置: 首页 > news >正文

Shell实现服务检查看门程序

最近在项目中碰到Kafka自己关闭的事件,为保证Kafka的高效可用,因此考虑使用Shell加系统定时任务检查,保证服务的高可用

检查Zookeeper

#!/bin/bash# 配置参数
TARGET_PORT=2181                # 监控端口
SERVICE_NAME="zookeeper"        # 服务名称(用于日志记录)
CHECK_INTERVAL=5                # 检测间隔(秒)
LOG_FILE="/data/public/kafka/check.log"# 获取当前时间戳
timestamp() {date "+%Y-%m-%d %H:%M:%S"
}# 检查端口状态(推荐方法)
check_port() {# 使用ss命令检测(兼容性更好)sudo ss -tuln | grep -q ":${TARGET_PORT}"return $?
}# 重启服务函数
restart_service() {echo "[$(timestamp)] 检测到端口 ${TARGET_PORT} 异常,尝试重启 ${SERVICE_NAME}..." >> $LOG_FILEnohup /data/public/kafka/kafka_2.13-2.5.1/bin/zookeeper-server-start.sh /data/public/kafka/kafka_2.13-2.5.1/config/zookeeper.properties > /dev/null 2>&1 &
}# 主监控逻辑
main() {if ! check_port; thenrestart_serviceelseecho "[$(timestamp)] 端口 ${TARGET_PORT} 正常" >> $LOG_FILEfi
}# 执行主函数
main

检查Kafka

#!/bin/bash# 配置参数
TARGET_PORT=9092                # 监控端口
SERVICE_NAME="kafka"            # 服务名称(用于日志记录)
CHECK_INTERVAL=5                # 检测间隔(秒)
LOG_FILE="/data/public/kafka/check.log"# 获取当前时间戳
timestamp() {date "+%Y-%m-%d %H:%M:%S"
}# 检查端口状态(推荐方法)
check_port() {# 使用ss命令检测(兼容性更好)sudo ss -tuln | grep -q ":${TARGET_PORT}"return $?
}# 重启服务函数
restart_service() {echo "[$(timestamp)] 检测到端口 ${TARGET_PORT} 异常,尝试重启 ${SERVICE_NAME}..." >> $LOG_FILEnohup /data/public/kafka/kafka_2.13-2.5.1/bin/kafka-server-start.sh /data/public/kafka/kafka_2.13-2.5.1/config/server.properties > /dev/null 2>&1 &
}# 主监控逻辑
main() {if ! check_port; thenrestart_serviceelseecho "[$(timestamp)] 端口 ${TARGET_PORT} 正常" >> $LOG_FILEfi
}# 执行主函数
main

配置定时任务

[root@server kafka]# crontab -e
# 检查Kafka,2分钟
*/2 * * * * /data/public/kafka/check_kafka.sh
*/2 * * * * /data/public/kafka/check_zookeeper.sh

日志检查

关闭9092端口,然后等待2分钟,检查日志,看是否有重新拉起服务。

[root@server kafka]# cat check.log 
[2025-07-21 10:46:01] 端口 2181 正常
[2025-07-21 10:46:01] 端口 9092 正常
[2025-07-21 10:48:01] 检测到端口 9092 异常,尝试重启 kafka...
[2025-07-21 10:48:01] 端口 2181 正常
[2025-07-21 10:50:01] 端口 2181 正常
[2025-07-21 10:50:01] 端口 9092 正常

经过检查服务均已正常启动

[root@server kafka]# netstat -nltp | grep 9092
tcp6       0      0 10.16.39.121:9092       :::*                    LISTEN      233104/java         
[root@server kafka]# netstat -nltp | grep 2181
tcp6       0      0 :::2181                 :::*                    LISTEN      471696/java         
http://www.dtcms.com/a/290506.html

相关文章:

  • 实时数据可视化的“心跳”设计:毫秒级延迟下的动态图表抗闪烁优化方案
  • 基于爬虫技术的电影数据可视化系统 Python+Django+Vue.js
  • 我国《数字中国规划》对虚拟产权的监管:合规框架下的渐进式创新
  • 前端开发者快速理解Spring Boot项目指南
  • nav2 基于插件的控制 + pp_controller
  • 机器学习中核心评估指标(准确率、精确率、召回率、F1分数)
  • Node.js的Transform 流
  • iOS打开开发者模式
  • STM32与树莓派通信
  • Elasticsearch、Solr 与 OpenSearch 搜索引擎方案对比分析及选型建议
  • 二分查找-35.搜索插入位置-力扣(LeetCode)
  • 基于NSD8389评估板快速测试电子膨胀阀
  • 「日拱一码」034 机器学习——插值处理
  • FreeSwitch通过Websocket(流式双向语音)对接AI实时语音大模型技术方案(mod_ppy_aduio_stream)
  • 优测发布IoT云联解决方案,赋能生态应用创新跨端体验!
  • 智慧水厂怎么建?物联网数据采集+SCADA升级,水务工业智能转型
  • 蜂窝物联网模组市场新展望:中国企业继续保持最强竞争力
  • Netty中AbstractReferenceCountedByteBuf源码解析
  • 康复器材动静态性能测试台:精准检测,为康复器械安全保驾护航
  • 【Android】交叉编译faiss库 | 问题解决
  • jdk25浅谈
  • 亚马逊自养号测评实战指南:从环境搭建到安全提排名
  • 智能合约安全 - 重入攻击 - 常见漏洞(第一篇)
  • 电科金仓2025发布会,国产数据库的AI融合进化与智领未来
  • A316-Mini-V1:超小尺寸USB高清音频解码器模组技术探析
  • Sequential 损失函数 反向传播 优化器 模型的使用修改保存加载
  • 20250721
  • A316-1926-V1 USB多路高清音频解码器模组技术解析
  • 番茄工作法
  • 在幸狐RV1106板子上用gcc14.2本地编译安装mysql-8.0.42数据库