监控和告警对于运维工程师来说,是一个永远也无法逃避的课题;一套完善的监控和告警系统,可以将运维人员从繁忙的支撑工作中抽身出来,去研究和探索更有意义的课题。
本次课题不讲述如何监控,只是记录自己在运维工作中所实现的一些告警的功能,供参考。
一、告警模板
1.1 邮件模板
1 | <table border="1"> |
这里把告警和恢复分开了,可根据自己需求定制不同的内容,我这里仅仅是区分了开始时间和恢复时间。
邮件模板支持html,所在可以自定义展示的颜色和样式
1.2 微信模板
1 | {{ define "wechat_business.start.html" }} |
微信模板貌似只能以文本的方式展示,相对于邮件来说就没有那么多华丽的样式和颜色了,虽然我的邮件告警也并不华丽,哈哈哈……
目前还没有这个模板的微信告警,下面的图片是其它模板的,不过效果都是一样的
1.3 短信模板
短信模板申请
短信告警用的是阿里短信服务,首先需要在阿里的短信服务中申请一个短信签名,然后用这个签名申请一个短信模板,以下是申请好的短信模板
短信告警服务配置
我使用PrometheusAlert服务来做短信告警,github地址:https://github.com/feiyu563/PrometheusAlert
PrometheusAlert服务配置阿里云短信接口
1 | vim PrometheusAlert/conf/app.conf |
有条件的话也可以自己动手写一个短信接口
短信告警模板
这里说是短信告警模板有点不太恰当,因为从严格意义上来说在我的环境里短信告警并没有模板,只是相对于其它的PromQL来说多了一条配置,如下所示:
1 | prometheus/alerts/host_alert.rules |
相对于最后一条PromQL而言,在 labels 和 annotations 下面分别多了一个 level 和 description 项,level 定义故障的严重程度,description 用于追加需要用短信展示的内容。
1.4 语音外呼告警
对于语音外呼告警也可以使用各大云平台的外呼功能;我这里并没有使用收费的外呼功能,只是粗略的用一台电脑、一部手机、一个电话卡、实现了呼叫功能(仅仅是在半夜可以把你从睡梦中叫醒,目前还做不到语音播报告警内容)。
之所以没有使用阿里云的外呼功能,是因为申请过程特别繁琐;当然也可以使用阿里云市场中别人封装好的外呼能力,按次计费而且也特别便宜,后续可以考虑使用。
二、使用告警模板
首先由prometheus查询PromQL来触发告警,由prometheus 将告警信息发送给 alertmanager
1 | vim prometheus/prometheus.yml |
然后由alertmanager收到告警信息后,进行分组、抑制和告警路由
1 | vim alertmanager-0.18.0/alertmanager.yml |