Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

thomasgogo/alert_engine

Repository files navigation

Alert Engine

一个基于Django的智能告警管理系统,用于统一处理来自多个监控系统的告警。

功能特性

  • 多数据源支持: 支持Prometheus/Alertmanager、Zabbix、Grafana等监控系统
  • 告警分组: 自动将相关告警分组管理
  • 智能去重: 基于指纹识别的告警去重机制
  • 规则引擎: 灵活的规则配置,支持自定义告警处理逻辑
  • 知识库: 内置知识库,提供告警处理建议
  • 工作流: 支持自定义告警处理工作流
  • 多种通知方式: 支持邮件、Webhook等多种通知渠道

项目结构

alert-engine/
├── alert_engine/ # Django项目配置
├── alerts/ # 告警管理核心模块
├── rules/ # 规则引擎
├── knowledge/ # 知识库
├── workflows/ # 工作流管理
├── sources/ # 数据源映射
├── actions/ # 动作执行器
├── algorithms/ # 算法模块(去重、根因分析等)
└── core/ # 核心基础模块

快速开始

环境要求

  • Python 3.8+
  • Django 4.2+

安装步骤

  1. 克隆项目
git clone https://github.com/thomasgogo/alert_engine.git
cd alert_engine
  1. 创建虚拟环境
python3 -m venv .venv
source .venv/bin/activate # Linux/Mac
#
.venv\Scripts\activate # Windows
  1. 安装依赖
pip install -r requirements.txt
  1. 配置环境变量
cp .env.example .env
# 编辑 .env 文件,配置必要的环境变量
  1. 数据库迁移
python manage.py migrate
  1. 创建超级用户
python manage.py createsuperuser
  1. 运行开发服务器
python manage.py runserver

访问 http://127.0.0.1:8000/admin/ 进入管理后台

API 使用示例

接收 Alertmanager 告警

curl -X POST http://localhost:8000/api/sources/alertmanager/webhook/ \
 -H "Content-Type: application/json" \
 -d '{
 "version": "4",
 "alerts": [{
 "status": "firing",
 "labels": {
 "alertname": "HighCPU",
 "severity": "warning",
 "instance": "server01"
 },
 "annotations": {
 "description": "CPU usage is above 80%"
 }
 }]
 }'

查询告警列表

curl http://localhost:8000/api/alerts/events/

主要模块说明

Alerts(告警管理)

  • AlertEvent: 单个告警事件
  • AlertGroup: 告警分组
  • 支持告警状态管理(firing/resolved)

Rules(规则引擎)

  • 基于条件匹配的规则系统
  • 支持多种动作(邮件、Webhook等)
  • 优先级和顺序控制

Knowledge(知识库)

  • 基于模式匹配的知识库
  • 自动建议解决方案
  • 支持标签和优先级

Sources(数据源)

  • 支持多种监控系统的数据格式
  • 统一的数据映射层
  • 可扩展的适配器模式

Algorithms(算法)

  • 告警去重算法
  • 根因分析
  • 智能分组

配置说明

环境变量

.env 文件中配置:

DJANGO_DEBUG=false
DJANGO_ALLOWED_HOSTS=localhost,127.0.0.1
EMAIL_BACKEND=django.core.mail.backends.smtp.EmailBackend
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_USE_TLS=true
EMAIL_HOST_USER=your-email@gmail.com
EMAIL_HOST_PASSWORD=your-password
DEFAULT_FROM_EMAIL=alerts@example.com

规则配置

规则支持以下条件操作符:

  • eq: 等于
  • ne: 不等于
  • gt: 大于
  • lt: 小于
  • contains: 包含
  • in: 在列表中

动作类型

  • email: 发送邮件通知
  • webhook: 调用Webhook
  • slack: Slack通知(需配置)
  • sms: 短信通知(需配置)

开发指南

运行测试

python manage.py test

批量数据导入

使用提供的脚本导入测试数据:

python bulk_data_import.py --count 1000 --batch-size 100

端到端测试

python test_e2e_flow.py

贡献指南

欢迎提交 Issue 和 Pull Request!

许可证

MIT License

联系方式

About

alert engine

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

AltStyle によって変換されたページ (->オリジナル) /