服务器上实现在CPU占用超过50%并持续达到10秒时向Telegram发送警报信息,你可以使用一些脚本和工具来监控系统资源并发送通知。下面是一个基本的示例:
步骤概述:
安装所需的工具和库
编写监控脚本
设置定时任务
1. 安装所需的工具和库
在开始之前,你需要安装一些工具和库。使用 yum 或 apt-get 安装以下软件包:
sar(System Activity Reporter):用于系统资源监视。
jq:用于处理 JSON 数据。
curl:用于向 Telegram API 发送消息。
# 安装sar
sudo yum install sysstat # 如果是 CentOS 或 RHEL
sudo apt-get install sysstat # 如果是 Ubuntu 或 Debian
# 安装jq和curl
sudo yum install jq curl # 如果是 CentOS 或 RHEL
sudo apt-get install jq curl # 如果是 Ubuntu 或 Debian2. 编写监控脚本
创建一个监控脚本,该脚本将检查 CPU 使用率并在满足条件时发送警报到 Telegram。以下是一个简单的示例脚本:
#!/bin/bash
# Telegram Bot API Token
TOKEN="YOUR_TELEGRAM_BOT_TOKEN"
# Your Telegram chat ID
CHAT_ID="YOUR_TELEGRAM_CHAT_ID"
while true; do
# 使用sar获取CPU使用率数据
cpu_usage=$(sar -u 1 5 | tail -n 1 | awk '{print 100 - $NF}')
# 检查CPU使用率是否超过50%
if (( $(echo "$cpu_usage > 50" | bc -l) )); then
# 如果超过50%,则开始计时
count=0
while (( $(echo "$cpu_usage > 50" | bc -l) )); do
((count++))
sleep 1
cpu_usage=$(sar -u 1 1 | tail -n 1 | awk '{print 100 - $NF}')
# 检查连续时间是否达到10秒
if ((count >= 10)); then
# 发送警报到Telegram
message="⚠️ CPU 使用率超过50%!当前使用率为 $cpu_usage %"
curl -s -X POST https://api.telegram.org/bot$TOKEN/sendMessage -d chat_id=$CHAT_ID -d text="$message"
break
fi
done
fi
sleep 5 # 等待5秒后重新检查
done确保将 YOUR_TELEGRAM_BOT_TOKEN 和 YOUR_TELEGRAM_CHAT_ID 替换为你的 Telegram 机器人令牌和聊天 ID。
3. 设置定时任务
最后,将监控脚本设置为定时任务,以便它在服务器启动时自动运行,并持续监控 CPU 使用率。
使用 crontab -e 命令编辑 crontab 文件,添加以下行:
@reboot /path/to/your/script.sh >/dev/null 2>&1将 /path/to/your/script.sh 替换为你实际存储脚本的路径。
保存并退出编辑器。现在,当服务器启动时,监控脚本将自动开始运行。
请注意,这只是一个简单的示例脚本,可能需要根据你的需求进行修改和调整。另外,确保在使用脚本之前对其进行测试,以确保其正常运行并发送正确的警报消息到你的 Telegram 帐号。
确保脚本具有执行权限,如果没有,可以使用 chmod 命令添加执行权限:
sudo chmod +x /root/script.sh将/root/替换为脚本的路径
手动执行脚本
sudo ./script.sh确认脚本是否在后台运行:
你可以使用 ps 命令查看正在运行的进程,检查脚本是否在后台运行:
ps aux | grep script.sh如果脚本正在运行,你应该能够看到相关的进程信息。如果没有显示任何信息,说明脚本可能已经停止或未正确启动。
停止脚本的执行:
要停止正在运行的脚本,你可以使用 kill 命令加上脚本的进程 ID(PID)来终止它。首先找到脚本的进程 ID,然后使用 kill 命令终止:
ps aux | grep script.sh # 找到脚本的 PID
sudo kill PID # 使用实际的 PID 替换 PID通过增加系统负载来模拟 CPU 使用率超过50%的情况,并观察是否会向 Telegram 发送警报信息。有几种方法可以增加系统负载:
方法一:使用 stress 工具
如果未安装 stress 工具,可以通过包管理器进行安装:
在 Debian/Ubuntu 系统中:
sudo apt-get install stress在 CentOS/RHEL 系统中:
sudo yum install stress然后,可以使用 stress 命令来模拟 CPU 负载。例如,以下命令将在系统上创建四个 CPU 负载任务:
stress --cpu 4可以使用 Telegram Bot API 来发送消息。
以下是使用 curl 命令发送消息到 Telegram 的示例:
TOKEN="YOUR_TELEGRAM_BOT_TOKEN"
CHAT_ID="YOUR_CHAT_ID"
MESSAGE="Hello, this is a test message from curl!"
curl -s -X POST https://api.telegram.org/bot$TOKEN/sendMessage -d chat_id=$CHAT_ID -d text="$MESSAGE"将 YOUR_TELEGRAM_BOT_TOKEN 替换为你的 Telegram Bot 令牌,YOUR_CHAT_ID 替换为你的 Chat ID,然后将消息内容替换为你想要发送的实际消息。
执行这个 curl 命令后,如果一切正常,你应该能够在 Telegram 上收到一条来自你的 Bot 的测试消息。
请确保你的服务器能够连接到互联网,并且没有被防火墙或其他网络设置阻止了 curl 命令与 Telegram API 的连接。
关于将BOT放入群组
你可以在 Telegram 中创建一个机器人,并向其发送 /start 命令。然后将此机器人添加到你想要获取 Chat ID 的群组中。接着,访问
https://api.telegram.org/bot<YourBOTToken>/getUpdates(将 <YourBOTToken> 替换为你创建的机器人的令牌),然后查找包含群组信息的 JSON 数据,其中包括群组的 Chat ID
联系机器人@BotFather,输入命令 /setprivacy ,选择自己的机器人,设置为Disable模式即可。
若群组中机器人依然收不到普通消息,将机器人踢出群再拉进群,就可以收到消息了。
/setprivacy