AlertFusion
运维告警集成平台

支持接入Prometheus和Zabbix,支持集成grafana可视化看板,接入AI大模型,实现告警统一管理。

快速开始

项目概览

快速部署

Docker 一键部署,1分钟即可启动完整的告警管理平台

AI 智能分析

集成 AI 技术,智能分析告警内容,提供解决建议

多平台集成

支持 Zabbix、Prometheus、Grafana 等主流监控平台

多渠道通知

支持企业微信、钉钉、飞书等多种通知方式

核心功能

告警接收

支持 Prometheus Webhook 和 Zabbix 脚本集成,实现多源告警统一接收和状态追踪。

消息推送

支持企业微信、钉钉、飞书等多种通知渠道,确保告警信息及时送达相关人员。

数据管理

提供实时告警看板、历史查询、日志导出和统计分析等完整的数据管理功能。

监控大屏

集成 Grafana 面板,支持目录树管理和面板分类组织,实现一站式监控查看。

AI辅助

集成AI智能分析功能,为告警提供问题诊断建议和解决方案,提升运维效率。

用户管理

支持用户注册登录、权限分级管理,确保系统安全性和功能的合理分配。

发版日志

正式版
v1.0
2025年6月21日
首次正式发布
开发中
v1.1
敬请期待

部署教程

Docker 一键部署

# 创建数据卷
docker volume create alertfusion-db

# 运行容器
docker run -d -p 10085:10085 \
  -v /etc/localtime:/etc/localtime:ro \
  -v /etc/timezone:/etc/timezone:ro \
  --name AlertFusion \
  -v alertfusion-db:/var/lib/mysql \
  --privileged=true --restart=always \
  registry.cn-chengdu.aliyuncs.com/pzl_devops/alertfusion_private:latest
部署说明:AI功能及消息发送需依赖互联网,容器启动后,访问 http://your-server-ip:10085 即可使用。

在线演示

体验 AlertFusion

无需部署,直接访问在线演示环境,体验 AlertFusion 功能特性

访问在线演示
演示说明:演示环境仅供功能体验,数据会定期清理。

使用教程

详细的集成教程,快速对接各种监控系统,实现统一告警管理

集成流程

1
部署 AlertFusion

使用 Docker 快速部署告警平台

2
配置监控系统

根据教程配置 Zabbix/Prometheus

3
测试告警推送

验证告警是否正常接收

4
完成对接

开始使用AlertFusion

Zabbix 系统对接教程

将 Zabbix 监控告警无缝推送到 AlertFusion 平台的完整配置指南

第一步:修改 Zabbix 服务器配置

编辑 zabbix_server.conf 文件,添加以下配置:

AllowRoot=1
第二步:创建告警脚本

将以下脚本保存为 zabbix_to_AlertFusion.py 并放入 /usr/lib/zabbix/alertscripts 目录:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import json
import requests
import sys

WEBHOOK_URL = "http://127.0.0.1:10085/bot_notify"  # ← 修改为你的实际接口地址
LOG_FILE = "resp.txt"  

def log_to_file(content):
    with open(LOG_FILE, "a", encoding="utf-8") as f:
        f.write(content + "\n")  

def send_alert(alert_json_str):
    try:
        alert_obj = json.loads(alert_json_str)  
        payload = {"alerts": [alert_obj]}       

        # 格式化请求体并打印到文件
        request_content = f"请求体: {json.dumps(payload, indent=2)}"
        print(request_content)
        log_to_file(request_content)  

        headers = {"Content-Type": "application/json"}
        response = requests.post(WEBHOOK_URL, json=payload, headers=headers, timeout=5)

        # 打印响应状态码和内容,并保存到文件
        response_content = f"状态: {response.status_code}\n响应: {response.text}"
        print(response_content)
        log_to_file(response_content)  

    except Exception as e:
        error_message = f"发送告警失败: {e}"
        print(error_message)
        log_to_file(error_message)  

if __name__ == "__main__":
    if len(sys.argv) < 2:
        print("缺少 JSON 输入参数")
        sys.exit(1)

    json_input = sys.argv[1]
    send_alert(json_input)
第三步:添加媒介类型

将以下内容保存为 JSON 文件,通过 Zabbix 前端导入媒介类型(根据您的 Zabbix 版本修改版本号):

{
  "zabbix_export": {
    "version": "7.2",
    "media_types": [
      {
        "name": "运维告警集成平台(AlertFusion)",
        "type": "SCRIPT",
        "script_name": "zabbix_to_AlertFusion.py",
        "parameters": [
          {
            "sortorder": "0",
            "value": "{ALERT.MESSAGE}"
          }
        ],
        "message_templates": [
          {
            "event_source": "TRIGGERS",
            "operation_mode": "PROBLEM",
            "subject": "Problem: {EVENT.NAME}",
            "message": "{ \"type\": \"zabbix\", \"status\": \"firing\", \"startsAt\": \"{EVENT.DATE} {EVENT.TIME}\", \"host\": \"{HOST.NAME}\", \"alertname\": \"{TRIGGER.NAME}\", \"severity\": \"{TRIGGER.SEVERITY}\", \"description\": \"{HOST.IP} - {TRIGGER.NAME}\", \"current_value\": \"{ITEM.LASTVALUE}\", \"fingerprint\": \"{EVENT.ID}\" }"
          },
          {
            "event_source": "TRIGGERS",
            "operation_mode": "RECOVERY",
            "subject": "Resolved: {EVENT.NAME}",
            "message": "{ \"type\": \"zabbix\", \"status\": \"resolved\", \"endsAt\": \"{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}\", \"host\": \"{HOST.NAME}\", \"alertname\": \"{TRIGGER.NAME}\", \"severity\": \"{TRIGGER.SEVERITY}\", \"description\": \"{HOST.IP} - {TRIGGER.NAME}\", \"current_value\": \"{ITEM.LASTVALUE}\", \"fingerprint\": \"{EVENT.ID}\" }"
          }
        ]
      }
    ]
  }
}
第四步:配置用户媒介

为管理员账号添加媒介权限,并创建告警动作来触发通知。

重要提示:确保脚本具有执行权限,并且 Zabbix 服务器能够访问 AlertFusion 的接口地址。

Prometheus 系统对接教程

通过 Alertmanager 将 Prometheus 监控告警智能推送到 AlertFusion 平台

第一步:配置 Alertmanager

编辑 alertmanager.yml 配置文件:

route:
  receiver: 'AlertFusion'
  group_wait: 30s
  group_interval: 5m

receivers:
- name: 'AlertFusion'
  webhook_configs:
  - url: 'http://127.0.0.1:10085/bot_notify' # 需修改为你实际部署服务器ip
    send_resolved: true
第二步:配置告警规则

创建告警规则文件,注意告警等级只能使用以下六种:

告警等级限制:'Warning', 'Information', 'Disaster', 'High', 'Average', 'Not classified'
groups:
- name: alertfusion-rules
  rules:
  - alert: HighCPUUsage
    expr: cpu_usage_percent > 80
    for: 5m
    labels:
      severity: Warning
    annotations:
      summary: "CPU使用率过高"
      description: "{{ $labels.instance }} CPU使用率已超过80%,当前值:{{ $value }}%"
      
  - alert: HighMemoryUsage
    expr: memory_usage_percent > 85
    for: 3m
    labels:
      severity: High
    annotations:
      summary: "内存使用率过高"
      description: "{{ $labels.instance }} 内存使用率已超过85%,当前值:{{ $value }}%"
第三步:配置消息模板

创建 alertfusion.tmp 模板文件:

{{ define "alertfusion.message" }}
{{- if eq .Status "firing" -}}
🚨 [告警触发] {{ .CommonLabels.alertname }}
{{- else -}}
✅ [告警恢复] {{ .CommonLabels.alertname }}
{{- end }}

🔹 实例: {{ .CommonLabels.instance }}
🔹 级别: {{ .CommonLabels.severity | toUpper }}
🔹 时间: {{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }} (UTC+8)

{{ range .Alerts }}
📌 {{ .Annotations.summary }}
📝 {{ .Annotations.description }}
🔗 [详情]({{ .GeneratorURL }})
{{ end }}

🛠️ 当前触发告警: {{ len .Alerts.Firing }} 条  
👍 已恢复告警: {{ len .Alerts.Resolved }} 条
{{ end }}
配置完成:重启 Alertmanager 服务后,告警将自动推送到 AlertFusion 平台。

Grafana 可视化对接教程

将 Grafana 精美仪表板无缝集成到 AlertFusion 统一监控大屏

第一步:配置 Grafana 服务器

编辑 /etc/grafana/grafana.ini 文件,启用匿名访问和 iframe 嵌入:

# 允许匿名访问
[auth.anonymous]
enabled = true
org_name = Main Org.  # 确保与后台组织名称一致
org_role = Viewer

# 允许被 iframe 嵌入
[security]
allow_embedding = true
第二步:重启 Grafana 服务
systemctl restart grafana-server
第三步:创建共享面板
  1. 在 Grafana 中创建或选择要共享的仪表盘
  2. 点击仪表盘右上角的"分享"按钮
  3. 选择"链接"选项卡,复制生成的链接

链接格式示例:

https://your-grafana-server/d/xxx/dashboard?orgId=1
第四步:在 AlertFusion 中配置面板
  1. 访问监控大屏:在 AlertFusion 导航栏中点击"监控大屏"菜单
  2. 创建目录结构:点击"创建目录"按钮,建立层级化的目录结构
  3. 添加面板:在目录中点击"添加面板"按钮,填写面板信息:
    • 面板名称:设置易于识别的名称
    • 面板URL:粘贴 Grafana 共享链接
    • 描述信息:添加面板的详细说明(可选)
  4. 管理面板:支持面板的编辑、删除和目录管理
第五步:使用监控大屏
  • 通过左侧目录树快速切换不同的 Grafana 面板
  • 右侧区域实时显示选中的监控面板内容
  • 支持全屏查看和自动刷新功能
最佳实践:建议按照业务模块或监控类型创建不同的目录,便于面板分类管理。

拓展学习

深入学习监控技术,掌握 Zabbix、Prometheus 和 Grafana 的核心技能

官方文档

监控系统对比

特性 Zabbix Prometheus Grafana
数据存储 关系型数据库(MySQL/PostgreSQL) 时间序列数据库(TSDB) 支持多种数据源
数据采集 Agent、SNMP、JMX Pull 模式,Exporter 通过数据源插件
告警机制 内置告警系统 Alertmanager 告警规则和通知
可视化 内置图表和仪表板 基础 Web UI 强大的可视化功能
学习难度 中等 较高 较低

Zabbix 深度学习

企业级监控解决方案,适合大规模基础设施监控

学习路径
1. 基础概念与架构
2. 安装与配置
3. 监控项与触发器
4. 模板与宏
5. 告警与通知
6. 高级功能与优化
核心知识点
  • 架构组件:Server、Agent、Proxy、Web界面
  • 数据采集:主动检查、被动检查、SNMP
  • 监控对象:主机、应用、服务、网络设备
  • 数据处理:预处理、计算项、聚合
  • 可视化:图形、屏幕、地图、仪表板
最佳实践
  • 合理规划主机组和模板结构
  • 使用宏提高配置的可维护性
  • 设置合理的数据保留策略
  • 定期备份配置和数据库
  • 监控 Zabbix 自身的性能
  • 优化数据库性能和索引
  • 使用 Zabbix Proxy 分布式部署
  • 配置合理的告警升级策略
高级功能
  • 自动发现:网络设备、文件系统、数据库
  • 低级发现:动态监控项创建
  • Web监控:HTTP场景监控
  • IPMI监控:硬件健康状态
  • VMware监控:虚拟化环境监控

Prometheus 深度学习

云原生监控系统,专为微服务和容器环境设计

学习路径
1. 时间序列数据库概念
2. Prometheus 架构
3. 指标类型与标签
4. PromQL 查询语言
5. Exporter 开发
6. 告警规则与 Alertmanager
核心知识点
  • 数据模型:指标名称、标签、时间戳、值
  • 指标类型:Counter、Gauge、Histogram、Summary
  • 服务发现:静态配置、DNS、Kubernetes、Consul
  • 存储引擎:本地存储、远程存储
  • 联邦集群:分层监控、跨集群查询
最佳实践
  • 合理设计指标命名和标签
  • 避免高基数标签
  • 使用 recording rules 优化查询
  • 配置合适的数据保留策略
  • 监控 Prometheus 自身指标
  • 使用联邦集群实现高可用
  • 配置远程存储解决方案
  • 优化抓取间隔和超时设置
生态系统
  • Alertmanager:告警路由和通知管理
  • Pushgateway:短期任务指标推送
  • Node Exporter:系统指标采集
  • Blackbox Exporter:黑盒监控
  • cAdvisor:容器指标监控

Grafana 深度学习

强大的可视化平台,支持多种数据源和丰富的图表类型

学习路径
1. 基础概念与安装
2. 数据源配置
3. 仪表板设计
4. 面板类型与配置
5. 变量与模板
6. 告警与通知
核心知识点
  • 数据源:Prometheus、InfluxDB、Elasticsearch
  • 面板类型:Graph、Stat、Table、Heatmap
  • 变量系统:Query、Custom、Constant、Datasource
  • 模板功能:重复面板、动态仪表板
  • 权限管理:组织、团队、用户角色
最佳实践
  • 设计清晰的仪表板层次结构
  • 使用变量提高仪表板复用性
  • 合理设置刷新间隔
  • 优化查询性能
  • 建立仪表板版本管理
  • 配置用户权限和团队管理
  • 使用注解标记重要事件
  • 设置合理的告警通知策略
插件生态
  • 数据源插件:InfluxDB、Elasticsearch、MySQL
  • 面板插件:Worldmap、Pie Chart、Heatmap
  • 应用插件:Kubernetes、Docker、AWS
  • 自定义插件:开发企业专用插件
  • 社区插件:丰富的第三方扩展

作者信息

运维爱好者

运维工程师

永远积极向上!

微信: pzl960504 | 邮箱: 2925006354@qq.com