Blog.wlens.top
683 字
3 分钟
服务器状态实时监控:用 Telegram 接收 CPU、内存和 MySQL 连接数

服务器状态实时监控:
使用 Telegram 接收 CPU、内存和 MySQL 连接数
简介: 本笔记介绍一种通过 Telegram 接收服务器 CPU、内存使用率和 MySQL 连接数的监控方法。该脚本每 10 分钟发送一次服务器数据,帮助您实时掌握服务器状态。
脚本功能
- CPU 使用率监控: 实时获取 CPU 使用率,并发送到 Telegram。
- 内存使用率监控: 实时获取内存使用率,并发送到 Telegram。
- MySQL 连接数监控: 实时获取 MySQL (3306 端口) 的连接数,并发送到 Telegram。
- 443 端口连接数监控: 实时获取 443 端口的连接数,并发送到 Telegram。
脚本实现
以下是用于监控服务器状态并将其发送到 Telegram 的 Bash 脚本:
#!/bin/bash
# 配置信息TELEGRAM_BOT_TOKEN="YOUR_TELEGRAM_BOT_TOKEN" # 替换为您的 Telegram Bot TokenTELEGRAM_CHAT_ID="YOUR_TELEGRAM_CHAT_ID" # 替换为您的 Telegram Chat ID
# 监控循环while truedo # 获取 CPU 使用率 cpu_usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | awk -F. '{print $1}')
# 获取内存使用率 memory_usage=$(free | awk '/Mem/{printf("%.2f"), $3/$2*100}')
# 获取 MySQL (3306 端口) 连接数 mysql_connections=$(netstat -tn | grep ':3306' | grep -c 'ESTABLISHED')
# 获取 443 端口连接数 port_443_connections=$(netstat -tn | grep ':443' | grep -c 'ESTABLISHED')
# 构建消息内容 message="CPU 使用率: ${cpu_usage}%\n内存 使用率: ${memory_usage}%\nMySQL 连接数: ${mysql_connections}\n443端口连接数: ${port_443_connections}"
# 发送消息到 Telegram curl -s -X POST https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage -d chat_id=${TELEGRAM_CHAT_ID} -d text="${message}"
# 休眠 10 分钟 (600 秒) sleep 600done
关键配置:
TELEGRAM_BOT_TOKEN
: 您的 Telegram Bot 的 Token,用于身份验证。TELEGRAM_CHAT_ID
: 您希望接收消息的 Telegram Chat ID。
脚本说明:
- 获取 CPU 使用率: 使用
top
命令获取 CPU 使用率,并使用awk
命令提取数值。 - 获取内存使用率: 使用
free
命令获取内存使用情况,并使用awk
命令计算内存使用率。 - 获取 MySQL 连接数: 使用
netstat
命令获取 MySQL (3306 端口) 的连接数。 - 获取 443 端口连接数: 使用
netstat
命令获取 443 端口的连接数。 - 构建消息: 将获取到的数据组合成一条消息。
- 发送消息: 使用
curl
命令通过 Telegram Bot API 发送消息。 - 休眠: 脚本每 10 分钟休眠一次,以便定期监控服务器状态。
注意事项
- 替换占位符: 请务必将
YOUR_TELEGRAM_BOT_TOKEN
和YOUR_TELEGRAM_CHAT_ID
替换为您的实际值。 - 脚本权限: 确保脚本具有执行权限 (
chmod +x script.sh
)。 - 后台运行: 建议将脚本配置为后台进程运行,例如使用
nohup ./script.sh &
。 - 错误处理: 该脚本未包含错误处理机制,实际应用中应添加错误处理逻辑,例如检查命令执行结果、记录错误日志等。
- 安全性: 妥善保管您的 Telegram Bot Token,避免泄露。
服务器状态实时监控:用 Telegram 接收 CPU、内存和 MySQL 连接数
https://blog.wlens.top/posts/服务器监控发送到telegram/