IT系统在运维阶段,告警信息是否能够及时通知到运维管理人员是非常重要的。
一般的告警事件能够通过邮件、短信方式进行报警通知运维管理人员,但是如果没有专业的监控预警系统,传递告警信息并不是太简单的事情。
维护系统时经常会出现两种情况:
软件故障,越复杂的软件越会出问题,涉及系统间对接问题尤其多。
硬件故障,网络不通、服务器当机等
由于系统问题出现的原因不同,很多时候也只能“头痛医头脚痛医脚”。
如果是应用处理过程中出现异常,比如用户输入、或系统预置信息异常造成
业务中断,这个业务还很重要,异常处理时不仅记录详细错误日志,还使用短信、邮件的方式通知运维人员。
如果服务器断电断网,通常都是通过一些网站云监测察觉,然后短信、邮件的方式通知运维人员。
还有一些异常,只是记录异常,并不及时通知运维。
如果应用少还好说,固定通知一个人就好,如果太多了,通知谁有时都可能是个问题。
今天看Github的监控方案时,发现老外还是挺倾向于使用Slack的,通过Webhook的方式将告警信息发到Slack平台,实质上就是通过HTTP方式,将告警信息POST到一个接收服务中。这个接收地址对应了Slack中的用户频道(Channel),订阅了这个频道的用户都能得到通知。也就是说Slack就是个发布订阅系统,可以聚合很多数据源,比如(github、微博、和一些自定义的渠道)。
在应用中配置slack参数
route:
receiver: 'slack'
receivers:
- name: 'slack'
slack_configs:
- send_resolved: true
text: "{{ .CommonAnnotations.description }}"
username: 'Prometheus'
channel: '#'
api_url: 'https://hooks.slack.com/services/'
在slack客户端获得告警通知
slack_proc.jpg
通过分离这个告警系统中的每个环节实现整体的灵活:
告警信息报出(系统异常转化成告警) =》
告警信息传递(告警信息发送到订阅平台) =》
告警信息传输给人 (告警信息通知到人)