edwin 监控报警系统
目录
edwin 简介
edwin是一个开源的报警和监控平台, 使用Python 语言开发, web 框架使用的是 Flask. 仓库地址是 https://github.com/harryliu/edwin .
edwin 可以使用它监控任意东西, 如有异常(分为警告级和严重级), 可以发出报警. 可以自定义报警的通知方式, 比如邮件/短信/电话. 另外, 它提供一个web UI, 能以dashboard形式展现监控指标的状态.
edwin对于监控项目的组织形式, 由小到大是: check item -> pagelet -> page -> dashboard. 另外,可以为 check item指定一个或多个 team 来负责. 这样灵活的组织形式, 使得edwin非常适合管理大量监控条目.
一句话, edwin 是一个非常适合团队使用的监控报警平台, 而且也适合多个团队共用.
edwin 组件
edwinServer.Web
, 做为web service和 web 展现页面.
需要部署在你的服务器上, 需要Python2.7, 具体见 requirements_Server.txt 文档edwinServer.Scripts
, 有脚本专门发送告警
部署在你的服务器上, 推荐和edwinServer.Web放在同一个机器上, 当然也可以不放在一起. 安装环境见 requirements_Server.txt 文档edwinAgent
, 你的检查脚本即是一个agent, edwin已经提供了agent开发示例
部署在你想要的机器上, 运行环境是jython2.7和python2.7, 考虑到jython安装非常方便, 推荐使用jython2.7
edwin是如何工作的?
两个概念
- 检查状态, 即你的check item是否正常, 在edwin中, 有三种检查状态:正常/警告级异常/严重异常
- 检查结果, 分为两种: 即可以可量化的, 以及也不可量化的. 对于可量化的, 你的agent需要登记检查值, 对于不可量化的check item, 你的agent需要登记检查状态.
三个步骤
- 在客户端机器上运行你的agent脚本, 即完成检查, 通过web service将检查结果保存在服务器端.
dwinServer.Scripts.send_alarm
组件定时查看检查结果, 如有异常会发出报警.edwinServer.Web
会在web页面上以醒目的方式展现检查结果.
guide 说明
- 对于可量化的check item, 你需要在数据库中设置警告级临界值和严重级临界值. 你的agent只需要登记实际检查值即可, 服务器端自动判断报警级别.
- 对于不可量化的check item, 你的agent程序需要给出检查状态, 即正常抑或警告或紧急.
- 告警发送方式
- 对于警告级异常, edwin会以email方式发出警告
- 对于紧急级异常, edwin会以邮件/短信/电话的方式发出警告, 当然可以禁掉短信/电话的告警方式
- 重复警告的处理
谁都不想收到一堆重复的警告, 尤其是不那么重要或者检查频率高的check item, edwin为每个check item提供三个开关来控制是否允许重复告警, 分别是
ALLOW_REPEATED_MAIL_ALARM
、ALLOW_REPEATED_SMS_ALARM
和ALLOW_REPEATED_CALL_ALARM
- Web提供为每个check item提供基本的趋势图, 帮助我们回顾检查的结果
几个截图
dashboard 截图:
page 截图: