linux/CentOS 服务器中cpu、内存、磁盘及中间件监听,钉钉机器人告警

一、背景

当前不同的公司服务器较多,在项目开发、部署和演示过程多次遇到服务器无故宕机的情况,另外各服务器上部署的中间件也存在无故下线的情况,如果出现以上情况就特别棘手,而技术人员无法第一时间感知。

二、操作说明

1、检查服务器curl命令是否可用

(1)调用相关命令进行检查

# 查看当前版本
curl --version 
# 检查网站是否可达,若html显示在屏幕上则证明命令可用
curl http://www.baidu.com

(2)如果无法调用,则可参照文章进行curl安装
https://blog.csdn.net/qq_38215042/article/details/108768839

2、shell文件配置

(1)当前是将服务器CPU相关监听和中间件的Shell脚本文件分开设置的,主要是考虑到文件过大,在配置修改和定时命令执行时出现问题不好排查,执行时间也会比较耗时。
(2)在相应的shell脚本文件中,已经将配置可能要修改点作了标记,可根据实际情况进行针对性修改。
(3)在shell脚本修改完成后,查看脚本是否执行权限,没有则调用命令进行设置

# 将sh文件添加可执行权限
chmod u+x dingtalk.sh 
# 或设置全部权限
chmod 777 dingtalk.sh

(4)权限设置后,可先调用执行一下,检查下是否有格式问题
./dingtalk.sh或相对路径执行./home/admin/server/dingtalk.sh

3、定时任务创建

定时任务常用命令如下

crontab -u //设定特定用户的定时服务
crontab -l //列出当前用户定时服务内容
crontab -r //删除当前用户的定时服务
crontab -e //编辑当前用户的定时服务
在设定编辑之前都建议列出服务查看一下:crontab -l
# 对cron定时任务列表进行编辑
crontab -e
# i 进行修改,ESC键退出编辑,;wq保存并退出
# 每五分钟执行一次
*/5 * * * * sh xx.sh
# 每半小时执行一次
*/30 * * * * sh  xx.sh
# 每天的1525分执行一次
25 15 * * * sh xx.sh

# 中间件脚本文件
 */5 * * * * sh /home/admin/server/dingtalk.sh
# 服务器脚本文件
 */5 * * * * sh /home/admin/server/dingtalk_server.sh

命令说明

在这里插入图片描述

4、定时任务执行情况检查

# 进入定时任务log下
cd /var/log
# 查看定时任务是否调用
tail -f cron

三、Shell配置说明

1、服务器CPU、内存、磁盘监控

#!/bin/bash

#【配置1】要@的人员手机号码,此处的手机号必须和钉钉上的一致
 user="17858888888"
# user1="13888888888"
# user2="XXXX"

#【配置2】网卡配置(可选),此处配置的是想要展示的ip地址,使用ifconfig查看inet对应的ip
ifconfig="eth0"

#主机信息
 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}'`

 #获取cpu使用率
cpuUsage=`top -b -n1 | fgrep "Cpu(s)" | tail -1 | awk -F'id,' '{split($1, vs, ","); v=vs[length(vs)]; sub(/\s+/, "", v);sub(/\s+/, "", v); printf "%d", 100-v;}'`

#获取磁盘使用率
data_name="/" 
diskUsage=`df -h | grep -w $data_name | awk -F'[ %]+' '{print $5}'`

#统计内存使用率
mem_used_persent=`free -m | awk -F '[ :]+' 'NR==2{printf "%d", ($2-$7)/$2*100}'`

#【配置3】钉钉webhook
Dingding_Url="https://oapi.dingtalk.com/robot/send?access_token=xxxxxx"
 

#【配置4】服务监听-发送钉钉消息,消息内容可修改
# at中atMobiles为数组结构,可添加上面配置的user1、user2等,可根据不同的业务@指定的人员,isAtAll是否@所有人设置
function SendServerMessageToDingding(){
curl ${Dingding_Url} -H 'Content-Type: application/json' -d '{
 "msgtype":"text",
 "text":{"content":"服务监控:\n服务器资源耗尽警告,请尽快处理!\n巡查时间:'${Date_time}'\nIP地址:'${IP_addr}'\n资源状况如下:\n【CPU可用:'${cpuUsage}'%】\n【磁盘使用率:'${diskUsage}'%】\n【内存使用率:'${mem_used_persent}'%】"},
 "at":{"atMobiles":['${user}'],"isAtAll":false}
  }'

}

#【配置5】 此处可根据服务器的实际情况,进行阈值调整
function serverCheck(){
       if [[ "$cpuUsage" > 75 ]] || [[ "$diskUsage" >90 ]] || [[ "$mem_used_persent" > 90 ]];
	then
   	 SendServerMessageToDingding
       fi
}
serverCheck

2、中间件监控

#!/bin/bash

#【配置1】中间件端口设置
 Port_Nginx="80"
 Port_MySQL="3306"
#...此处省略多个端口,可添加该服务器上的其他中间件配置
# Port_Nacos="xxx"
# Port_ElesticSearch="xxx"
 
#【配置2】网卡配置(可选),此处配置的是想要展示的ip地址,使用ifconfig查看inet对应的ip
ifconfig="eth0"

#【配置3】要@的人员手机号码,此处的手机号必须和钉钉上的一致
 user="17858888888"
# user1="13888888888"
# user2="XXXX"

#主机信息
 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}'`

#【配置4】中间件监控项
 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'
 
#【配置5】钉钉webhook,此处为添加的钉钉机器人webhook,当前为已经添加使用的webhook
Dingding_Url="https://oapi.dingtalk.com/robot/send?access_token=xxxxxxx"
 
#【配置6】应用挂机-发送钉钉消息,消息内容可修改
# at中atMobiles为数组结构,可添加上面配置的user1、user2等,可根据不同的业务@指定的人员,isAtAll是否@所有人设置
function SendDownMessageToDingding(){
curl -s "${Dingding_Url}" -H 'Content-Type: application/json' -d "
{
 'msgtype': 'text',
 'text': {'content': '服务监控\n$1服务down,请尽快处理!\n巡查时间:${Date_time}\nIP地址:${IP_addr}\n'},
 'at': {'atMobiles': ['${user}'],  'isAtAll': false}
  }"

}

#【配置7】应用恢复-发送钉钉消息,消息内容可修改
# at中atMobiles为数组结构,可添加上面配置的user1、user2等,可根据不同的业务@指定的人员,isAtAll是否@所有人设置
function SendUpMessageToDingding(){
curl -s "${Dingding_Url}" -H 'Content-Type: application/json' -d "
{
 'msgtype': 'text',
 'text': {'content': '服务监控\n$1服务已恢复正常运行!\n巡查时间:${Date_time}\nIP地址:${IP_addr}\n'},
 'at': {'atMobiles': ['${user}'],  'isAtAll': false}
  }"

}

#【配置8】 log path,将消息记录到指定日志目录
log_path="/home/logs"

#【配置9】遍历 --此处要配置【中间件】服务的信息,根据情况在in{$xxx,$yyy.....}中进行添加中间件
for i in {$Nginx_status,$MySQL_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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


电脑钉钉直播声音小怎么处理? 1、声音设置里面,调一下输出设备,把有一个名为扬声器的打开,如果还不行去桌面右下角那个小喇叭设置一下声音输出用扬声器。
12 月 28 日上午,钉钉在杭州正式开启 7.0 版本产品发布会。发布会上,钉钉总裁叶军详细解读了钉钉 7.0 版本的新功能,同时推出了汉仪字库为其量身打造的定制字体“钉钉进步体”。钉钉官方宣布,联合汉仪字库共同打造
      亲们或许不知道钉钉如何创建企业团队的详细操作,那么今天小编就讲解钉钉创建企业团队的操作步骤哦,希望能够帮助到大家呢。
      说起钉钉相信大家应该都不陌生,那么你们晓得绑定支付宝吗?以下就带来了钉钉中绑定支付宝的简单步骤方法。
      最近钉钉软件的使用人群在迅速提高,很多员工都开通了智能办公电话,下文分享的就是钉钉开通智能办公电话的方法,大家可以参考一下哦。
      最近钉钉软件的使用人群在迅速提高,很多老师在直播时都喜欢白板功能,下文分享的就是钉钉中白板功能使用教学,大家可以参考一下哦。
      最近钉钉软件的使用人群在迅速提高,那么怪如何打开专注模式呢?下文分享的就是钉钉开启专注模式的方法,大家可以参考一下哦。
      最近钉钉软件的使用人群在迅速提高,有伙伴在咨询关于认证数字化教师的相关问题,下文分享的就是钉钉认证数字化教师的方法,大家可以参考一下哦。
      最近钉钉软件的使用人群在迅速提高,很多伙伴对于主管管理部门权限的打开不会操作,下文分享的就是钉钉主管管理部门权限打开方法,大家可以参考一下哦。
      刚接触钉钉软件的上班族,打卡后想要查看打卡结果该如何操作呢?下文分享的就是钉钉中查看打卡结果的方法,大家可以参考一下哦。
      很用户都在使用钉钉软件,那么你们知道消息直通车该如何开启呢?下文讲述的就是钉钉开通消息直通车的操作方法,感兴趣的用户可以参考一下哦。
      伙伴下载好使用钉钉时,就会显示未激活的情况,那么该如何处理呢?下面小编为大家整理一下关于钉钉显示未激活处理方法,希望这些方法能够帮助到大家。
      钉钉软件大家都知道吧,那么更新后的员工健康功能该如何使用呢?下文讲述的就是钉钉员工健康功能使用说明,希望大家喜欢。
      很老师都在使用钉钉软件,那么如果是要更改老师任课科该如何操作呢?下文讲述的就是钉钉更改老师任课科目的方法,希望大家喜欢。
      很老师都在使用钉钉软件,那么如果是英语老师该如何布置作业呢?下文讲述的就是钉钉群中给学生布置英语作业的方法,希望大家喜欢。
      最近钉钉软件的使用人群在迅速提高,新用户们对于知识库一定还比较的陌生,下文分享的就是钉钉知识库使用介绍,大家可以参考一下哦。
      很多企业都在使用钉钉软件上微课,那么你们知道企业微课该如何上吗?下文讲述的就是钉钉中看企业微课的操作步骤,感兴趣的用户可以参考一下哦。
      很用户都在使用钉钉软件,那么你们知道家校本教师该如何改作业呢?下文讲述的就是钉钉中家校本教师判作业方法,感兴趣的用户可以参考一下哦。
      最近钉钉软件的使用人群在迅速提高,首先传图识字是新用户们都很苦恼的问题,下文分享的就是钉钉传图识字操作方法,大家可以参考一下哦。
      大家在使用钉钉软件之前都会实名认证吧,那么如何借助借助支付宝进行实名认证呢?下文讲述的就是钉钉借助支付宝进行实名认证的方法,感兴趣的用户可以参考一下哦。