服务器监控告警配置(钉钉)

8 篇文章 0 订阅


本文演示一个利用钉钉群监控、告警服务器运行服务所处的状态。

1、新建钉钉群机器人

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、编写 Shell 脚本

#!/bin/bash

#端口
 Port_Nginx="80"
 Port_MySQL="3306"
#...此处省略多个端口,按照自己需求配置即可
 Port_flink="xxx"
 
#网卡配置(可选)
# ifconfig="eth0"

#@管理员手机号
 user="xxx"
# user2="xx"

#主机信息
 Date=`date +%Y-%m-%d`
 Date_time=`date "+%Y-%m-%d--%H:%M:%S"`
 Host_name=`hostname`
 IP_addr=`ifconfig $ifconfig | grep "inet" |awk 'NR==1{ print $2}'`
 
#监控项
 Nginx_status=`netstat -lntup |grep -w "$Port_Nginx" |wc -l`':Nginx'
 MySQL_status=`netstat -lntup |grep -w "$Port_MySQL" |wc -l`':MySQL'
#...此处省略多项,按照自己需求配置即可
 flink_status=`netstat -lntup |grep -w "$Port_flink" |wc -l`':flink'
 
#钉钉webhook
Dingding_Url="把你新建的钉钉群机器人的webhook粘贴过来"
 
function SendDownMessageToDingding(){

#发送钉钉消息
curl -s "${Dingding_Url}" -H 'Content-Type: application/json' -d "
{
 'msgtype': 'text',
 'text': {'content': 'xxx服务监控\n$1服务down,请尽快处理!\n巡查时间:${Date_time}\nIP地址:${IP_addr}\n'},
 'at': {'atMobiles': ['${user}'],  'isAtAll': true}
  }"

}

function SendUpMessageToDingding(){

#发送钉钉消息
curl -s "${Dingding_Url}" -H 'Content-Type: application/json' -d "
{
 'msgtype': 'text',
 'text': {'content': 'xxx服务监控\n$1服务已恢复正常运行!\n巡查时间:${Date_time}\nIP地址:${IP_addr}\n'},
 'at': {'atMobiles': ['${user}'],  'isAtAll': true}
  }"

}

# log path
log_path="xxx"

# 遍历
#for i in #{$Nginx_status,$MySQL_status,$jobserver_status,$webserver_status,$Cache_status,$openapi_status,$userapi_status,$workbench_status,$keycloak_status,$vro#llout_status,$connector_status,$merge_status,$shadow_status,$sink_status,$flink_status}

#do
#        name=`echo $i | awk -F ':' '{print $2}'`
#        echo 1 > ${log_path}/${name}.log
#done

for i in {$Nginx_status,$MySQL_status,$jobserver_status,$webserver_status,$Cache_status,$openapi_status,$userapi_status,$workbench_status,$keycloak_status,$vrollout_status,$connector_status,$shadow_status,$flink_status}
do
	statcode=`echo $i | awk -F ':' '{print $1}'`
	name=`echo $i | awk -F ':' '{print $2}'`
	old_statcode=`head -n 1 ${log_path}/${name}.log`
    if [ $statcode -lt 1 ]
    then
		if [ $old_statcode -lt 1 ]
		then echo "[ERROR] $name is still stopped! Status_code=$statcode"
		else
			echo "[ERROR] $name is stopped! Status_code=$statcode"
			SendDownMessageToDingding $name
        fi
    else
		if [ $old_statcode -ge 1 ]
		then echo "[INFO] $name is still running normally! Status_code=$statcode"
		else
			echo "[INFO] $name returned to normal function! Status_code=$statcode"
			SendUpMessageToDingding $name
        fi
    fi
    echo $statcode > ${log_path}/${name}.log
done

3、定时任务

示例:

crontab -e
# 每五分钟执行一次
*/5 * * * * sh xx.sh
# 每半小时执行一次
*/30 * * * * sh  xx.sh
# 每天的15时25分执行一次
25 15 * * * sh xx.sh

命令说明:

在这里插入图片描述

crontab -u //设定特定用户的定时服务
crontab -l //列出当前用户定时服务内容
crontab -r //删除当前用户的定时服务
crontab -e //编辑当前用户的定时服务
在设定编辑之前都建议列出服务查看一下:crontab -l

4、部分效果截图

在这里插入图片描述

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值