#!/bin/bash
# 企业微信的 Webhook URL
WEBHOOK_URL="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=81df5018-c175-4f94-a805-XXXXXXXXX"
# 定义环境标识
ENVIRONMENT="XXXX-生产环境"
# 定义提到的用户和手机号列表
MENTIONED_LIST='["@all"]' # 根据需要修改
MENTIONED_MOBILE_LIST='["175276*****","1385*****83"]' # 根据需要修改
# 定义告警临界值
CPU_THRESHOLD=80 # CPU使用率临界值(百分比)
MEM_THRESHOLD=80 # 内存使用率临界值(百分比)
DISK_THRESHOLD=80 # 硬盘使用率临界值(百分比)
# 定义需要监控的JAR包数组
JAR_NAMES=("demo1.jar" "demo2.jar" "demo3.jar")
# 发送告警函数
send_alert() {
local content="$1"
# 构建消息内容,添加环境标识
EMAIL_BODY=$(cat <<EOF
{
"msgtype": "text",
"text": {
"content": "$ENVIRONMENT\n\n$content,请及时进行处理!",
"mentioned_mobile_list": [$MENTIONED_MOBILE_LIST]
}
}
EOF
)
# 发送请求
RESPONSE=$(curl -s -X POST \
-H "Content-Type: application/json" \
-d "$EMAIL_BODY" \
"$WEBHOOK_URL")
# 检查发送是否成功
ERRCODE=$(echo $RESPONSE | jq -r '.errcode')
if [ "$ERRCODE" -eq 0 ]; then
echo "Alert sent successfully"
else
echo "Failed to send alert: $RESPONSE"
fi
}
# 检查CPU使用率
cpu_usage=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}')
if (( $(echo "$cpu_usage > $CPU_THRESHOLD" | bc -l) )); then
send_alert "CPU使用率告警: $cpu_usage%"
fi
# 检查内存使用率
mem_usage=$(free | grep Mem | awk '{print $3/$2 * 100.0}')
if (( $(echo "$mem_usage > $MEM_THRESHOLD" | bc -l) )); then
send_alert "内存使用率告警: $mem_usage%"
fi
# 检查硬盘使用率
disk_usage=$(df / | grep / | awk '{print $5}' | sed 's/%//g')
if (( disk_usage > DISK_THRESHOLD )); then
send_alert "硬盘使用率告警: $disk_usage%"
fi
# 检查每个JAR包是否正在运行
for jar_name in "${JAR_NAMES[@]}"; do
if ! pgrep -f "$jar_name" > /dev/null; then
send_alert "JAR运行状态告警: $jar_name 没有运行"
fi
done
使用企业微信机器人配置服务器资源及Jar包告警
于 2024-08-07 20:23:23 首次发布