跳至内容
钉钉自动巡检告警--磁盘空间

钉钉自动巡检告警--磁盘空间

March 31, 2026

钉钉自动巡检告警–Disk:

注意:在虚拟环境中要提前 pip 安装相应的库

注意:钉钉机器人有使用频率限制:每个机器人最多20条/min

建议采用Python虚拟环境避免冲突

#新建文件夹:
mkdir /to/your/myPython
touch /to/your/myPython/DingDing.py

#激活venv环境,使命令行前出现venv标志
python3 -m venv venv 

#在所在文件目录执行
source venv/bin/activate

#执行脚本
python3 /to/your/myPython/DingDing.py

#取消venv
deactivate

脚本代码及解释:

import requests

import json

import psutil

import socket

  
#自己的token,在 钉钉自建群 ==》机器人 ==》 自定义机器人 ==》查看token ==》 安全策略带关键词,如"告警" 

WEBHOOK_URL = "你的token"

  

def send_dingtalk_msg(content):

    """发送钉钉告警的核心函数"""

    headers = {"Content-Type": "application/json"}

  

    #构建消息体(必须包含关键词"告警")

    data = {

        "msgtype": "text",

        "text": {
        
            "content": f"【服务器自动巡检告警】\n{content}"

        }

    }

  

    try:

        response = requests.post(WEBHOOK_URL, data=json.dumps(data), headers=headers)

  

        result =response.json()

  

        if response.status_code == 200:

            print("钉钉消息发送成功!!!")

  

        else:

            print(f"发送失败,错误码:{response.status_code}")

  

    except Exception as e:

        print(f"网络请求出错:{e}")

  

def check_disk_usage():

    """检查磁盘使用率"""

    hostname = socket.gethostname()

  

    disk_info = psutil.disk_usage('/')

    percent = disk_info.percent

  

    print(f"当前磁盘使用率:{percent}")

  
	#设置一个合理的磁盘空间"报警值"
    if percent > 80:

        msg = f"主机名:{hostname}\n状态:磁盘空间不足\n当前使用率:{percent}%\n请及时清理日志或扩容!!!"

        send_dingtalk_msg(msg)

    else:

        print("磁盘状态正常")

  

if __name__ == "__main__":

    check_disk_usage()
    

设置crontab定时脚本:


#编辑脚本
crontab -e

#添加:
0 * * * * /to/your/venv/bin/python /to/your/DingDing.py

#完成后会出现新安装的提示

#如果想要测试的话还是直接用: 
python3 /to/your/DingDing.py