# 统一运维告警推送系统 **Repository Path**: jiuchang-longshan-shanxi_0/Alarmpush ## Basic Information - **Project Name**: 统一运维告警推送系统 - **Description**: 一个功能完整的syslog日志接收和告警推送系统,支持钉钉、企业微信、飞书和阿里云短信等多种告警方式。 告警源支持邮件采集、syslog、webhook - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 8 - **Forks**: 0 - **Created**: 2025-08-01 - **Last Updated**: 2025-09-07 ## Categories & Tags **Categories**: nms **Tags**: 运维管理, syslog, 告警推送, 告警通知 ## README # Syslog告警推送系统 一个功能完整的syslog日志接收和告警推送系统,支持钉钉、企业微信、飞书和阿里云短信等多种告警方式。 ![输入图片说明](screenshots/weixin.png) ## 功能特性 - 🔍 **实时日志监控**: 接收并显示syslog日志 - 🚨 **智能告警推送**: 基于关键词匹配自动发送告警 - 📱 **多平台支持**: 支持钉钉、企业微信、飞书群机器人和阿里云短信 - 📊 **统计分析**: 实时统计接收日志数、告警发送成功/失败数量 - 🎛️ **Web管理界面**: 现代化的Web界面管理系统 - 🧪 **测试功能**: 内置告警测试功能 - ⚙️ **灵活配置**: 支持在线配置各种参数 ## 系统要求 - Python 3.7+ - Windows/Linux/macOS - 网络连接(用于发送告警) ## 安装步骤 ### 1. 安装依赖 ```bash pip install -r requirements.txt ``` ### 2. 配置系统 启动系统后,通过Web界面进行配置: - **基础配置**: Syslog端口(默认514)、Web端口(默认5000) - **告警关键词**: 设置触发告警的关键词(如:error, critical, alert) - **钉钉配置**: 钉钉群机器人Webhook URL - **企业微信配置**: 企业微信群机器人Webhook URL - **飞书配置**: 飞书群机器人Webhook URL和签名密钥 - **阿里云短信**: Access Key、签名、模板代码、手机号码 ### 3. 启动系统 ```bash python app.py ``` 系统启动后: - Syslog服务器监听端口:514(可配置) - Web管理界面:http://localhost:5000 ## 使用说明 ### Web管理界面 访问 `http://localhost:5000` 打开管理界面,包含以下功能模块: 1. **实时日志**: 查看接收到的syslog日志 2. **告警事件**: 查看触发的告警事件 3. **服务状态**: 管理syslog服务的启停,查看服务日志 4. **系统配置**: 配置各种告警推送参数 5. **测试功能**: 测试告警推送是否正常工作 #### 界面截图 **主界面 - 实时日志监控** ![主界面](screenshots/main-dashboard.png) **告警事件管理** ![告警事件](screenshots/alert-events.png) **服务状态监控** ![服务状态](screenshots/service-status.png) **系统配置界面** ![系统配置](screenshots/system-config.png) **告警测试功能** ![告警测试](screenshots/alert-test.png) ### 配置告警推送 #### 钉钉群机器人 1. 在钉钉群中添加自定义机器人 2. 获取Webhook URL 3. 在系统配置中填入URL #### 企业微信群机器人 1. 在企业微信群中添加群机器人 2. 获取Webhook URL 3. 在系统配置中填入URL #### 飞书群机器人 1. 在飞书群中添加自定义机器人 2. 获取Webhook URL 3. 配置签名密钥(可选,用于消息验证) 4. 设置@用户列表(可选,格式:user_id1,user_id2) 5. 在系统配置中填入相关信息 #### 阿里云短信 1. 开通阿里云短信服务 2. 创建短信签名和模板 3. 获取Access Key ID和Secret 4. 在系统配置中填入相关信息 ### 发送测试日志 可以使用以下方法向系统发送测试syslog消息: #### 使用logger命令(Linux/macOS) ```bash logger -n localhost -P 514 "This is a test error message" ``` #### 使用Python脚本 ```python import socket sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.sendto(b"Test error message from python", ('localhost', 514)) sock.close() ``` #### 使用PowerShell(Windows) ```powershell $udpClient = New-Object System.Net.Sockets.UdpClient $bytes = [System.Text.Encoding]::UTF8.GetBytes("Test error message") $udpClient.Send($bytes, $bytes.Length, "localhost", 514) $udpClient.Close() ``` ## 告警规则 系统会检查接收到的syslog消息,如果消息内容包含配置的关键词(默认:error, critical, alert, emergency),则会触发告警推送。 ## 系统架构 ``` ┌─────────────────┐ ┌──────────────────┐ ┌─────────────────────┐ │ Syslog源 │───▶│ Syslog服务器 │───▶│ 告警推送 │ │ (设备/应用) │ │ (UDP 514端口) │ │ (钉钉/微信/飞书/短信) │ └─────────────────┘ └──────────────────┘ └─────────────────────┘ │ ▼ ┌──────────────────┐ │ Web管理界面 │ │ (HTTP 5000端口) │ └──────────────────┘ ``` ## 故障排除 ### 常见问题 1. **端口被占用** - 检查514端口是否被其他程序占用 - 可以修改配置使用其他端口 2. **告警发送失败** - 检查网络连接 - 验证Webhook URL是否正确(钉钉/企业微信/飞书) - 检查飞书签名密钥配置是否正确 - 检查阿里云短信配置是否正确 3. **权限问题** - Linux下监听514端口需要root权限 - 可以使用其他端口(如5140)避免权限问题 ### 日志查看 系统运行日志可以通过以下方式查看: - Web界面的"服务状态"页面 - 控制台输出 ## 安全建议 1. 不要在公网暴露syslog端口 2. 定期更换API密钥 3. 限制Web管理界面的访问 4. 使用防火墙限制访问来源 ## 许可证 MIT License ## 贡献 欢迎提交Issue和Pull Request来改进这个项目。