Skip to content

adanos-alert is a alert manager with multi alert channel support

License

Notifications You must be signed in to change notification settings

mylxsw/adanos-alert

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Adanos-alert

Build Status Coverage Status Go Report Card codecov Sourcegraph GitHub

Adanos-alert 是一款使用 Golang 开发的告警通知系统,Adanos-alert 将关注点聚焦在了通知上,提供了丰富的事件聚合和通知机制,弥补了常见监控告警系统在通知方面的不足。

Features

  • 使用 Go 模板语法定制告警事件格式,展示效果
    • 预置多种告警通知事件模板
    • 支持自定义告警通知模板
  • 基于自定义表达式对事件进行分组
  • 支持基于自定义表达式忽略特定的事件
    • 支持最大忽略事件数,超过阈值后告警
  • 支持基于自定义表达式为事件建立关联关系,方便追溯
  • 基于多种时间维度聚合事件
    • 按照固定的时间周期(时间间隔)聚合
    • 按照多个固定的时间点聚合
    • 按照多个固定的时间范围,不同时间范围指定不同的聚合周期
  • 支持多种告警事件接入方式
    • Logstash 错误日志输出
    • HTTP API 接口
    • 命令行管道(使用 adanos-proxy)
    • Grafana 告警事件接入
    • Prometheus 告警事件接入
    • Prometheus Alertmanager 告警事件接入
    • Openfalcon 告警事件接入
  • 多种通知通道支持
    • 钉钉群消息
    • Jira 问题创建
    • 阿里云语音通知
    • HTTP 接口调用
    • 邮件通知
    • 微信通知
    • 阿里云短信
    • 网易云信短信
  • 通过 adanos-alert-agent 实现告警事件接收与调度分离,为事件告警通知提供高可用支持

环境依赖

Adanos-alert 使用 MongoDB 作为数据存储后端,所有的数据(告警规则、告警事件、事件组等)均存储在 MongoDB 中,因此需要先 安装 MongoDB 数据库,版本建议在 4.0 以上(低版本未测试过,可能存在兼容问题)。

安装运行

以下配置文件可供参考

  • ./systemd/ 目录包含 server 和 agent 在 systemd 管理下的启动命令
  • server.config.yaml 是 adanos-alert-server 的配置文件示例
  • agent.config.yaml 是 adanos-alert-agent 的配置文件示例
  • logstash.example.conf 是 Logstash 将错误日志输出到 adanos 的配置示例
  • prometheus.example.yaml 是 Prometheus 将告警信息接入到 adanos 的配置示例
  • prometheus.rules.example.conf 是 Prometheus 告警规则示例

adanos-alert-server 命令行选项(配置文件)

  • conf: configuration file path
  • shutdown_timeout: set a shutdown timeout for each service (default: 5s) [$GLACIER_SHUTDOWN_TIMOUT]
  • listen: http listen addr (default: ":19999")
  • grpc_listen: GRPC Server listen address (default: ":19998")
  • grpc_token: GRPC Server token (default: "000000")
  • preview_url: Alert preview page url (default: "http://localhost:19999/ui/groups/%s.html") [$ADANOS_PREVIEW_URL]
  • report_url: Alert report page url (default: "http://localhost:19999/ui/reports/%s.html") [$ADANOS_REPORT_URL]
  • mongo_uri: Mongodb connection uri,参考 https://docs.mongodb.com/manual/reference/connection-string/ (default: "mongodb://localhost:27017") [$MONGODB_HOST]
  • mongo_db: Mongodb database name (default: "adanos-alert") [$MONGODB_DB]
  • api_token: API Token for api access control [$ADANOS_API_TOKEN]
  • use_local_dashboard: whether using local dashboard, this is used when development
  • enable_migrate: whether enable database migrate when app run
  • re_migrate: 是否重新执行迁移,重新迁移会移除已有的预定义模板
  • aggregation_period: aggregation job execute period (default: "5s") [$ADANOS_AGGREGATION_PERIOD]
  • action_trigger_period: action trigger job execute period (default: "5s") [$ADANOS_ACTION_TRIGGER_PERIOD]
  • queue_job_max_retry_times: set queue job max retry times (default: 3) [$ADANOS_QUEUE_JOB_MAX_RETRY_TIMES]
  • keep_period: 保留多长时间的报警,如果全部保留,设置为0,单位为天,Adanos-Alert 会自动清理超过 keep_period 天的报警 (default: 0) [$ADANOS_KEEP_PERIOD]
  • syslog_keep_period: 保留多长时间的系统日志,如果全部保留,设置为0,单位为天,Adanos-Alert 会自动清理超过 syslog_keep_period 天的系统日志 (default: 0) [$ADANOS_SYSLOG_KEEP_PERIOD]
  • queue_worker_num: set queue worker numbers (default: 3) [$ADANOS_QUEUE_WORKER_NUM]
  • query_timeout: query timeout for backend service (default: "30s") [$ADANOS_QUERY_TIMEOUT]
  • aliyun_access_key: 阿里云语音通知接口 Access Key ID [$ADANOS_ALIYUN_ACCESS_KEY]
  • aliyun_access_secret: 阿里云语音通知接口 Access Secret [$ADANOS_ALIYUN_ACCESS_SECRET]
  • aliyun_voice_called_show_number: 阿里云语音通知被叫显号
  • aliyun_voice_tts_code: 阿里云语音通知模板,这里是模板ID,模板内容在阿里云申请,建议内容:"您有一条名为 ${title} 的报警通知,请及时处理!"
  • aliyun_voice_tts_param: 阿里云语音通知模板变量名 (default: "title")
  • log_path: 日志文件输出目录(非文件名),默认为空,输出到标准输出
  • jira_url: Jira 服务器地址,如 http://127.0.0.1:8080 [$ADANOS_JIRA_URL]
  • jira_username: Jira 连接账号 [$ADANOS_JIRA_USERNAME]
  • jira_password: Jira 连接密码 [$ADANOS_JIRA_PASSWORD]
  • no_job_mode: 启用该标识后,将会停止事件聚合和队列任务处理,用于开发调试

adanos-alert-agent 命令行选项(配置文件)

  • conf: configuration file path
  • shutdown_timeout: set a shutdown timeout for each service (default: 5s) [$GLACIER_SHUTDOWN_TIMOUT]
  • server_addr: server grpc listen address (default: "127.0.0.1:19998") [$ADANOS_SERVER_ADDR]
  • server_token: API Token for grpc api access control (default: "000000") [$ADANOS_SERVER_TOKEN]
  • data_dir: 本地数据库存储目录 (default: "/tmp/adanos-agent")
  • listen: listen address (default: "127.0.0.1:29999") [$ADANOS_AGENT_LISTEN_ADDR]
  • log_path: 日志文件输出目录(非文件名),默认为空,输出到标准输出

手动编译

编译时依赖以下工具

  • esc 是用于将静态文件打包到 Go 程序中的一个工具库

使用下面的命令直接完成编译并运行

make run

Dashboard 访问地址 http://localhost:19999

预览图

系统接入

TODO

Architecture

Adanos Alert 平台与其他系统之间的关系

Adanos Alert 平台与其他系统之间的关系

Adanos Alert 平台各组件之间的关系

Adanos Alert 平台各组件之间的关系

Adanos Alert Server 内部结构

Adanos Alert Server 内部结构

Related Projects