做好服务器运维工作,及时发现服务器状态异常,要做到第一时间知道,只需写个python监控脚本即可,(钉钉配置通知)以下是详细监控linux服务器脚本代码:
# -*- coding: utf-8 -*-
import threadingimport psutil
import requests
import time# 设定阈值
disk_threshold = 50
mem_threshold = 50
cpu_threshold = 50
ser_name = '广东省充电桩数据库服务器'# DingTalk webhook地址
webhook_url = 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxxxxxxxx' # 请替换为实际的webhook地址def send_dingtalk(title, message):message = title + '(' + ser_name + ')->' + messagedata = {"msgtype": "text","text": {"content": message}}response = requests.post(webhook_url, json=data)print(response.json())def monitor_disk_usage(ddd='/'):disk_usage = psutil.disk_usage(ddd)if disk_usage.percent > disk_threshold:send_dingtalk("磁盘[" + ddd + "]使用率过高", f"硬盘使用率已达{disk_usage.percent}%")def monitor_memory_usage():memory_usage = psutil.virtual_memory()if memory_usage.percent > mem_threshold:send_dingtalk("内存使用率过高", f"内存使用率已达{memory_usage.percent}%")def monitor_cpu_usage():cpu_usage = psutil.cpu_percent(interval=1)if cpu_usage > cpu_threshold:send_dingtalk("CPU使用率过高", f"CPU使用率已达{cpu_usage}%")def monitor_cpu():print("CPU监控中...")while True:monitor_cpu_usage()time.sleep(120) # 每2分钟运行一次CPU监控def monitor_disk():print("磁盘监控中...")while True:monitor_disk_usage()monitor_disk_usage('/opt/')time.sleep(1800) # 每30分钟运行一次def monitor_memory():print("内存监控中...")while True:monitor_memory_usage()time.sleep(60) # 每1分钟运行一次内存监控if __name__ == "__main__":send_dingtalk("start", "server mon start ok")cpu_thread = threading.Thread(target=monitor_cpu, daemon=True)disk_thread = threading.Thread(target=monitor_disk, daemon=True)memory_thread = threading.Thread(target=monitor_memory, daemon=True)cpu_thread.start()disk_thread.start()memory_thread.start()# 等待所有线程结束cpu_thread.join()disk_thread.join()memory_thread.join()
当服务器状态超过设置的异常值时,手机端钉钉实时收到通知,效果图如下: