服务器监控脚本与推送钉钉机器人

管理员
管理员 2023-12-15

一、创建钉钉机器人

1、进入钉钉设置界面找到“通用->机器人管理”

image.png

2、“前往设置”选择添加“自定义”机器人

image.png

3、机器人命名并添加到1个群聊中【后续机器人的消息会自动发送到此群中】

image.png

4、复制保存创建机器人后的 Webhook 网址,此地址用于接收推送的消息

image.png


二、定时任务监控脚本

网址为钉钉机器人的Webhook

https://oapi.dingtalk.com/robot/send?access_token=******


1、监控CPU是否过载

#!/bin/bash
#监控CPU是否过载
# 设置阈值,当使用率超过该阈值时发送警报
threshold=80
# 使用top命令获取CPU占用信息,并使用grep和awk筛选和解析输出结果
usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}') # 获取CPU使用率
echo "当前CPU使用率为:$usage% 未过载"
# 检查CPU占用是否超过阈值
# 将浮点数转换为整数,以便进行比较
usage=${usage%.*}
if [ $usage -lt $threshold ]
then
echo "CPU 已过载"
# 在此处添加其他操作或通知机制
host_name=$(hostname) # 获取主机名 设置主机名 hostnamectl set-hostname push.txhlwxx.com
echo "主机名称为: $host_name"
curl 'https://oapi.dingtalk.com/robot/send?access_token=******' -H 'Content-Type: application/json' -d "{'msgtype': 'text','text': {'content':'监控面板,${host_name}服务器CPU(${usage}%)过载预警通知'}}"
fi


2、监控磁盘是否过载

#!/bin/bash
#监控磁盘是否过载
# 设置阈值,当使用率超过该阈值时发送警报
THRESHOLD=80
# 获取使用率,并提取百分比部分
usage_system=$(df -h | awk '$NF=="/"{printf "%s\n", $5}' | cut -d'%' -f1)
usage_data=$(df -h | awk '$NF=="/www"{printf "%s\n", $5}' | cut -d'%' -f1)
# 检查磁盘使用率是否超过阈值
# 将浮点数转换为整数,以便进行比较
usage_system=${usage_system%.*}
usage_data=${usage_data%.*}
if [ $usage_system -lt $THRESHOLD -o $usage_data -lt $THRESHOLD ]; then
    echo "磁盘使用率超过阈值,请及时清理!"
    # 在此处添加其他操作或通知机制
    # 获取主机名;设置主机名 hostnamectl set-hostname push.txhlwxx.com
host_name=$(hostname)
echo "主机名称为: $host_name"
    curl 'https://oapi.dingtalk.com/robot/send?access_token=******' -H 'Content-Type: application/json' -d "{'msgtype': 'text','text': {'content':'监控面板,${host_name}服务器系统磁盘(${usage_system}%),数据磁盘(${usage_data}%)过载预警通知'}}"
fi


3、监控内存是否过载

#!/bin/bash
#监控内存是否过载
# 设置阈值,当使用率超过该阈值时发送警报
THRESHOLD=80
# 获取使用率,并提取百分比部分
# 获取总内存大小
total=$(free -m | awk 'NR==2{print $2}')
# 获取已使用的内存
used=$(free -m | awk 'NR==2{print $3}')
# 计算使用率
usage=$(echo $used/$total*100 | bc -l)
# 输出结果
echo "内存使用率为: $usage%"
# 检查使用率是否超过阈值
# 将浮点数转换为整数,以便进行比较
usage=${usage%.*}
if [ $usage -lt $THRESHOLD ]; then
    echo "内存使用率超过阈值,请及时释放内存!"
    # 在此处添加其他操作或通知机制
host_name=$(hostname) # 获取主机名 设置主机名 hostnamectl set-hostname push.txhlwxx.com
echo "主机名称为: $host_name"
    curl 'https://oapi.dingtalk.com/robot/send?access_token=******' -H 'Content-Type: application/json' -d "{'msgtype': 'text','text': {'content':'监控面板,${host_name}服务器内存(${usage}%)过载预警通知'}}"
fi


三、常见问题

1、启动进程后无法杀进程

可能原因是存在父进程,需要先先杀父进程 然后再杀子进程

先查询父进程命令

ps -o ppid= -p 39080



回帖
  • 消灭零回复

微信二维码

微信二维码

微信扫码添加微信好友