#! /bin/bash

WEBHOOK_URL="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=6d5ee150-1eae-4168-aea6-e22d681adb11"

alert=0
alert_msg="--- 硬盘告警检测   **[警告]** ---\n"
normal_msg="--- 正常主机 ---\n"

# 参数: $1=HOST $2=grep_pattern $3=1表示本地执行(默认ssh)
check_disk() {
    local host="$1"
    local pattern="$2"
    local is_local="${3:-0}"
    local ret disk count free lyl lyl_num

    echo "检查 host=$host pattern=$pattern"

    if [ "$is_local" = "1" ]; then
        ret=$(df -h | grep "$pattern")
    else
        ret=$(ssh -p 60999 "$host" "df -h | grep '$pattern'")
    fi

    disk=$(echo "$ret" | awk '{print $1}')
    count=$(echo "$ret" | awk '{print $2}')
    free=$(echo "$ret" | awk '{print $4}')
    lyl=$(echo "$ret" | awk '{print $5}')
    lyl_num=$(echo "$lyl" | tr -d '%')

    if [ -n "$lyl_num" ] && [ "$lyl_num" -gt 50 ] 2>/dev/null; then
        alert=1
        alert_msg="${alert_msg}- 主机：**$host** 硬盘: $disk, 存储大小: $count, 空闲: $free, 利用率: **$lyl**\n"
    else
        normal_msg="${normal_msg}- 主机：$host 硬盘: $disk, 存储大小: $count, 空闲: $free, 利用率: $lyl\n"
    fi
}

check_disk "gz-k8s-92"     "vda"
check_disk "user-vm"       "vda3"
check_disk "admin-vm"      "vda3" 
check_disk "website-vm"    "vda"
check_disk "elk-vm"        "vda"
check_disk "elk-vm"        "vdb"
check_disk "awx-vm"        "vda"
check_disk "cmdb-vm"       "vda"
check_disk "jumpserver-vm" "vda3"

check_disk "sh-ts-80"      "vda"
check_disk "sh-ts-79"      "vda"
check_disk "bj-ts-58"      "vda"
check_disk "bj-ts-125"     "vda"
check_disk "gz-ts-164"     "vda"
check_disk "fz-ts-250"  "vda2"
check_disk "fz-ts-17"   "vda2"
check_disk "fz-ts-7"    "vda2"

check_disk "fz-ts-134-v2" "vda2"
check_disk "sh-k8s-v2" "vda1"
check_disk "sh-user-v2" "vda1"

if [ "$alert" -eq 1 ]; then
    final_msg="${alert_msg}\n${normal_msg}"
    echo "$final_msg"
    curl -s -H "Content-Type: application/json" \
        -d "{\"msgtype\": \"markdown\", \"markdown\": {\"content\": \"$final_msg\"}}" \
        "$WEBHOOK_URL" > /dev/null
    echo "已发送告警通知"
else
    echo "$normal_msg"
    curl -s -H "Content-Type: application/json" \
        -d "{\"msgtype\": \"markdown\", \"markdown\": {\"content\": \"$normal_msg\"}}" \
        "$WEBHOOK_URL" > /dev/null
    echo "所有磁盘利用率 <= 50%，已发送正常通知"
fi


