使用Shell实现一个看门狗功能

server/2025/1/31 21:34:28/

最近在使用Prometheus+Grafana监控系统过程中,发下部分服务器的客户端监控经常停掉,因此需要再客户端编写一个看门狗脚本定时检查客户端端口是否启动,如果没有启动则启动相关程序。

脚本

watchdog.sh脚本内容如下:

#!/bin/bash# 配置部分
PORT=1801
CHECK_INTERVAL=10    # 检查间隔时间,单位为秒
START_COMMAND="nohup /data/public/node_exporter/node_exporter --web.listen-address=:1801 > /data/public/node_exporter/start.log &"  # 启动服务的命令,根据实际情况修改
# 日志记录文件路径(服务器A)
LOG_RECORD_FILE="/data/public/node_exporter/watchdog.log"# 函数:检查端口是否开放
check_port() {if nc -z localhost "$PORT"; thenecho "$(date '+%Y-%m-%d %H:%M:%S') - 端口 $PORT 已开放。" >> "$LOG_RECORD_FILE"return 0elseecho "$(date '+%Y-%m-%d %H:%M:%S') - 端口 $PORT 未开放,尝试启动服务..." >> "$LOG_RECORD_FILE"return 1fi
}# 主循环
while true; doif ! check_port; theneval "$START_COMMAND"# 可选:检查服务是否成功启动if check_port; thenecho "$(date '+%Y-%m-%d %H:%M:%S') - 服务已成功启动。" >> "$LOG_RECORD_FILE"elseecho "$(date '+%Y-%m-%d %H:%M:%S') - 服务启动失败,请检查日志。" >> "$LOG_RECORD_FILE"fifisleep "$CHECK_INTERVAL"
done

运行

设置脚本运行权限
chmod 777 watchdog.sh
执行脚本
./watchdog.sh &
检查运行日志
tail -f ./watchdog.log

[root@test node_exporter]# tail -f  watchdog.log
2025-01-24 14:32:12 - 端口 1801 已开放。
2025-01-24 14:32:22 - 端口 1801 已开放。
2025-01-24 14:32:32 - 端口 1801 已开放。
2025-01-24 14:32:42 - 端口 1801 已开放。
2025-01-24 14:32:52 - 端口 1801 已开放。
2025-01-24 14:33:02 - 端口 1801 已开放。
2025-01-24 14:33:12 - 端口 1801 已开放。
2025-01-24 14:33:22 - 端口 1801 已开放。
2025-01-24 14:33:32 - 端口 1801 已开放。
2025-01-24 14:33:42 - 端口 1801 已开放。
2025-01-24 14:33:52 - 端口 1801 已开放。
2025-01-24 14:34:02 - 端口 1801 已开放。
2025-01-24 14:34:12 - 端口 1801 已开放。
2025-01-24 14:34:22 - 端口 1801 已开放。

说明看门狗程序已经成功启动。

使用系统定时任务执行

(1)首先需要改造一下上面的脚本

#!/bin/bash# 配置部分
PORT=1801
START_COMMAND="nohup /data/public/node_exporter/node_exporter --web.listen-address=:1801 > /data/public/node_exporter/start.log &"  # 启动服务的命令,根据实际情况修改
# 日志记录文件路径(服务器A)
LOG_RECORD_FILE="/data/public/node_exporter/watchdog.log"# 函数:检查端口是否开放
check_port() {if nc -z localhost "$PORT"; thenecho "$(date '+%Y-%m-%d %H:%M:%S') - 端口 $PORT 已开放。" >> "$LOG_RECORD_FILE"return 0elseecho "$(date '+%Y-%m-%d %H:%M:%S') - 端口 $PORT 未开放,尝试启动服务..." >> "$LOG_RECORD_FILE"return 1fi
}if ! check_port; theneval "$START_COMMAND"# 可选:检查服务是否成功启动if check_port; thenecho "$(date '+%Y-%m-%d %H:%M:%S') - 服务已成功启动。" >> "$LOG_RECORD_FILE"elseecho "$(date '+%Y-%m-%d %H:%M:%S') - 服务启动失败,请检查日志。" >> "$LOG_RECORD_FILE"fi
fi

(2)设置脚本执行权限
chmod 777 watchdog.sh
(3)配置定时任务
使用crontab -e命令

[root@test node_exporter]# crontab -e
*/1 * * * * /data/public/node_exporter/watchdog.sh

常见问题

(1)nc未安装,执行yum install nc -y即可

[root@test node_exporter]# ./watchdog.sh
./watchdog.sh: line 11: nc: command not found
./watchdog.sh: line 11: nc: command not found
nohup: redirecting stderr to stdout
[root@test node_exporter]#
[root@test node_exporter]#
[root@test node_exporter]#
[root@test node_exporter]#
[root@test node_exporter]# yum install nc -y
Last metadata expiration check: 0:07:44 ago on Fri 24 Jan 2025 02:35:15 PM CST.
Dependencies resolved.
=======================================================================================================================================Package                        Architecture              Version                             Repository                          Size
=======================================================================================================================================
Installing:nmap                           aarch64                   2:7.70-12.ky10                      ks10-adv-os                        5.8 M
Installing dependencies:libssh2                        aarch64                   1.9.0-8.ky10                        ks10-adv-updates                   167 klibssh2-help                   noarch                    1.9.0-8.ky10                        ks10-adv-updates                   182 kTransaction Summary
=======================================================================================================================================
Install  3 PackagesTotal download size: 6.2 M
Installed size: 25 M
Downloading Packages:
(1/3): libssh2-1.9.0-8.ky10.aarch64.rpm                                                                 57 MB/s | 167 kB     00:00
(2/3): libssh2-help-1.9.0-8.ky10.noarch.rpm                                                             54 MB/s | 182 kB     00:00
(3/3): nmap-7.70-12.ky10.aarch64.rpm                                                                   249 MB/s | 5.8 MB     00:00
---------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                  248 MB/s | 6.2 MB     00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transactionPreparing        :                                                                                                               1/1Installing       : libssh2-help-1.9.0-8.ky10.noarch                                                                              1/3Installing       : libssh2-1.9.0-8.ky10.aarch64                                                                                  2/3Installing       : nmap-2:7.70-12.ky10.aarch64                                                                                   3/3Running scriptlet: nmap-2:7.70-12.ky10.aarch64                                                                                   3/3Verifying        : nmap-2:7.70-12.ky10.aarch64                                                                                   1/3Verifying        : libssh2-1.9.0-8.ky10.aarch64                                                                                  2/3Verifying        : libssh2-help-1.9.0-8.ky10.noarch                                                                              3/3Installed:nmap-2:7.70-12.ky10.aarch64               libssh2-1.9.0-8.ky10.aarch64               libssh2-help-1.9.0-8.ky10.noarchComplete!
[root@test node_exporter]#

http://www.ppmy.cn/server/163884.html

相关文章

Ubuntu安装GitLab

在 Ubuntu 上安装 GitLab 的步骤如下。这里以 GitLab Community Edition(CE)为例: 前提条件 确保你的 Ubuntu 系统是 20.04 或更高版本。确保你的系统满足 GitLab 的硬件要求。 步骤 更新系统包: sudo apt update sudo apt upg…

新站如何快速获得搜索引擎收录?

本文来自:百万收录网 原文链接:https://www.baiwanshoulu.com/8.html 新站想要快速获得搜索引擎收录,需要采取一系列有针对性的策略。以下是一些具体的建议: 一、网站内容优化 高质量原创内容: 确保网站内容原创、…

linux系统centos版本上安装mysql5.7

步骤 1: 安装 MySQL 5.7 添加 MySQL Yum Repository 首先,你需要添加 MySQL 的官方 Yum repository。打开终端并执行以下命令: sudo rpm -Uvh https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm 这条命令会为 CentOS 7 添加 MySQL…

git和idea重新安装后提交异常

场景:我重装了系统,idea装了2024.3版本的,git也重新装了,但是项目中还是有.git文件夹的,下载了idea的码云插件后,提交报错如下: 异常:Error updating changes: detected dubious ow…

effective-Objective-C 第四章阅读笔记

协议与分类 文章目录 协议与分类通过委托与数据源协议进行对象间通信小结 将类的实现代码分散到便于管理的多个分类中小结 为第三方类的分类名称提供前缀不在分类中声明属性小结 使用拓展隐藏实现细节小结 通过协议提供匿名对象小结 通过委托与数据源协议进行对象间通信 对象之…

《程序人生》工作2年感悟

一些杂七杂八的感悟: 1.把事做好比什么都重要, 先树立量良好的形象,再横向发展。 2.职场就是人情世故,但也不要被人情世故绑架。 3.要常怀感恩的心,要记住帮助过你的人,愿意和你分享的人,有能力…

S4 HANA明确税金本币和外币之间转换汇率确定(OBC8)

本文主要介绍在S4 HANA OP中明确明确税金本币和外币之间转换汇率确定(OBC8)相关设置。具体请参照如下内容: 明确税金本币和外币之间转换汇率确定(OBC8) 以上配置,我们可以根据不同公司代码所配置的使用不同的汇率来对税金外币和本币之间进行换算。来针对…

OpenEuler学习笔记(十七):OpenEuler搭建Redis高可用生产环境

在OpenEuler上搭建Redis高可用生产环境,通常可以采用Redis Sentinel或Redis Cluster两种方式,以下分别介绍两种方式的搭建步骤: 基于Redis Sentinel的高可用环境搭建 安装Redis 配置软件源:可以使用OpenEuler的默认软件源&#…