1 本人建议使用的监控是普罗米修斯和grafana的双向使用
2建议使用的告警推送和所有服务器的统一管理是spug,他还可以对服务端口等进行定时监控。
3 spug的告警监控的相关脚本
1, 内存
#!/bin/bash
# 获取内存使用率
memory_usage=$(free | grep Mem | awk '{print $3/$2 * 100}' | awk '{printf "%.2f\n", $1}')
# 设置内存使用率阈值(例如:80%)
threshold=80
# 判断内存使用率是否超过阈值
if (( $(echo "$memory_usage > $threshold" | bc -l) )); then
echo "服务器监控,内存使用率过高: ${memory_usage}%"
exit 1 # 返回非零状态码表示异常
else
echo "服务器监控,内存使用正常: ${memory_usage}%"
exit 0 # 返回零状态码表示正常
fi
2,磁盘
#!/bin/bash
# 设置磁盘使用率阈值(例如:80%)
threshold=80
# 定义需要监控的目录
dirs=("/root" "/home")
# 初始化告警标志
alert_flag=0
# 遍历每个目录并检查磁盘使用率
for dir in "${dirs[@]}"; do
# 获取指定目录的磁盘使用率,严格过滤非数字字符
usage=$(df -P "$dir" | awk 'NR==2 {gsub(/%/, "", $5); print $5}')
# 检查是否成功获取到数值
if [[ -z "$usage" || ! "$usage" =~ ^[0-9]+$ ]]; then
echo "无法正确获取目录 $dir 的磁盘使用率"
alert_flag=1
continue
fi
# 判断磁盘使用率是否超过阈值
if (( usage > threshold )); then
echo "服务器监控,目录 $dir 的磁盘使用率过高: ${usage}%"
alert_flag=1
else
echo "服务器监控,目录 $dir 的磁盘使用正常: ${usage}%"
fi
done
# 根据告警标志返回状态码
if [ "$alert_flag" -eq 1 ]; then
exit 1 # 返回非零状态码表示异常
else
exit 0 # 返回零状态码表示正常
fi
4 先关服务的部署,我使用的spug是docker的一键部署,然后普罗米修斯和grafana是到官网下载的tar包解压部署使用的。