Supervisor企微报警

一,接口轮询

import time
import requests
from xmlrpc.client import ServerProxy

# 替换为你的企业微信API地址
API_URL = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=YOUR_API_KEY"

# 多个Supervisor服务器配置
supervisor_servers = [
    {
        "host": "192.168.1.110",
        "port": 9001,
        "user": "admin",
        "password": "123456",
    }
    # ... 添加更多Supervisor服务器配置
]


def create_server_proxy(server_config):
    server_url = f"http://{server_config['user']}:{server_config['password']}@{server_config['host']}:{server_config['port']}/RPC2"
    return ServerProxy(server_url)


# 为每个Supervisor服务器创建ServerProxy实例
server_proxies = [create_server_proxy(server_config) for server_config in supervisor_servers]


def send_message(content):
    payload = {
        "msgtype": "text",
        "text": {
            "content": content
        }
    }
    response = requests.post(API_URL, json=payload)
    if response.status_code == 200:
        print("消息发送成功")
    else:
        print("消息发送失败,错误代码:", response.status_code)


def main():
    while True:
        try:
            for server, server_config in zip(server_proxies, supervisor_servers):
                processes = server.supervisor.getAllProcessInfo()
                for process in processes:
                    if process['statename'] in ['FATAL', 'EXITED','STOPPED']:
                        message = f"Host: {server_config['host']} - 进程 {process['name']} 状态异常:{process['statename']} 请及时关注!"
                        print(message)
                        #send_message(message)

            time.sleep(60)  # 每分钟检查一次进程状态
        except Exception as e:
            print(f"监控过程中出现错误:{e}")

if __name__ == "__main__":
    main()

二,事件监听


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容