手动写一个监控nacos单机服务是否挂掉的bash脚本

发布时间 2023-08-07 11:25:35作者: 夏威夷8080

这个脚本其实不光可以监控nacos服务,所有的服务都可以监控。

脚本逻辑是,如果检测到nacos服务挂掉后调用http接口发送警告通知,然后暂停5分钟,之后继续监控。如果正常就暂停一小会,之后继续循环。

使用 Bash 脚本和 curl 命令:

  1. 安装所需工具: 确保 CentOS 服务器上已经安装了curl。如果没有,您可以通过以下命令来安装:

    sudo yum install curl -y

     

  2. 创建脚本文件: 创建一个名为monitor_nacos.sh的文件,并给予执行权限:

    touch monitor_nacos.sh chmod +x monitor_nacos.sh

     

  3. 编辑脚本内容: 使用文本编辑器编辑脚本,内容如下:

    
    
    #!/bin/bash
    
    # Nacos 服务健康检查 URL
    NACOS_HEALTH_CHECK_URL="http://localhost:8848/nacos/v1/console/health/readiness"
    
    # 触发的远程 HTTP 接口 URL
    REMOTE_HTTP_URL="http://example.com/remote_api"
    
    # 暂停监控的时间,单位秒 (例如5分钟暂停则为300秒)
    PAUSE_TIME=300
    
    while true; do
        STATUS_CODE=$(curl -o /dev/null -s -w "%{http_code}\n" $NACOS_HEALTH_CHECK_URL)
    
        if [ $STATUS_CODE -ne 200 ]; then
            echo "Nacos 服务不健康,状态码: $STATUS_CODE, 正在调用远程接口..."
    
            # 调用远程 HTTP 接口
            curl -X POST $REMOTE_HTTP_URL
    
            echo "远程接口调用完成,暂停监控 $PAUSE_TIME 秒..."
            
            # 暂停监控 5 分钟
            sleep $PAUSE_TIME
        else
            echo "Nacos 服务健康"
        fi
    
        # 检查间隔,例如 60sleep 60
    done

    请替换 NACOS_HEALTH_CHECK_URLREMOTE_HTTP_URL 为你的实际 URL。

  4. 运行脚本: 

    nohup ./monitor_nacos.sh &

    此脚本将无限循环检查 Nacos 服务的健康状态,并在检测到不健康时调用远程 HTTP 接口。您可以根据需要自定义检查间隔和其他逻辑。

也可以把报警改为发短信或发邮件通知

在脚本中将调用远程 HTTP 接口的逻辑替换为发送短信或邮件。以下是一些可能的替代方案:

发送邮件

如果服务器上配置了邮件发送工具,如sendmailmailx,可以使用以下命令发送警报邮件:

echo "Nacos 服务不健康" | mail -s "Nacos Alert" your-email@example.com

请将your-email@example.com替换为接收警报的电子邮件地址。

发送短信

发送短信可能会涉及使用特定的 SMS 网关或提供商 API。需要注册第三方短信服务,并使用他们提供的 API 来发送短信。以下是一个使用 curl 命令调用 SMS 服务提供商 API 的示例:

curl -X POST "https://sms-provider.com/api" \ -d "api_key=YOUR_API_KEY" \ -d "message=Nacos 服务不健康" \ -d "to=PHONE_NUMBER"

请根据你选择的 SMS 服务提供商的文档修改上述命令,并替换 YOUR_API_KEYPHONE_NUMBER 等适当的值。