从零打造自己的CI/CD系统|抑制报警风暴
在部署的时候,不可避免的应用的对应的某一个节点会有一段时间的不可用状态,这个时候可能会接到告警,组内多人协同工作的场景下,除开当事人,其他人可能会疑惑难道线上出故障了之类的情况,所以这个时候我们可能需要报警抑制,今天我们拿部署的时候如何屏蔽
zabbix
告警来给大家举下例子。
情况说明
•抛开zabbix
来说,很多公司可能已经不再用这个监控工具了•搭配prometheus
的consul
的自动发现,使用方式和zabbix
一样,都是调用接口直接操作•其他的监控软件多数也是有接口存在,直接复用•比较复杂的场景,可以自行编写Ansible
模块来满足需求
注意事项
这里所谓的报警抑制是指在特定的场景下,在一定时间内监控频次比较高,而服务的部署需要的时间是这个的几倍,这个时候可能会触发告警阈值,导致瞬间接收到告警。在部署php
语言的应用的时候,可能是用不到,因为部署服务重新加载的速度很快,远小于告警区间。所以这个操作大家视情况而定,非强制。
使用Ansible实现zabbix主机的注册和摘除
主机摘除
其实Ansible
已经提供了现成的模块帮我们实现主机摘除的动作,在发布机器上进行本地命令执行即可。切记,这里适配的发布模式是rolling update
, 避免后端多台机器同时接收指令导致业务受损。
主机注册
同主机摘除一样,模块也是现成的,我们直接调用,实现主机的添加即可。
延伸
Ansible
当前已经提供了3387个模块,当然了,如果现有的模块不能满足需要,你可以自己编写,官方文档也提供了很详细的文档,后面我们也会讲到这块的东西,同样的,在部署从过程中这种理念可以一直贯彻下去,比如在部署的时候,前端SLB
的摘除,nginx
的动态摘除添加等,都是为了追求发布过程中用户无感,相信有不少公司也是使用的prometheus
consul
实现的内部监控体系的建设,同样Ansible
也提供了consul
模块,使用这个模块可以轻松实现kv
的增删操作,这样的话,我们就不用手动操作prometheus
的配置文件了,动态的来实现监控指标的增删操作。
总结
最近大家是不是在吐槽内容实在是太过于干巴巴的了,明天将会把前面讲的东西贯穿起来,来一个基于PHP
语言的项目的发布演示,届时相关代码我会提交到github
上,大家有意见或建议可以留言哈。