告警与可观测性有这密不可分的关系,告警是先于用户发现问题的手段之一,如果没有告警系统,只能通过人工进行定期检查,即便是能够发现问题也不能立马定位到问题出现的原因,而且成本和效率也非常低下。
告警用途主要有两个方面,首先是通过监控数据,能够做到先于用户发现问题。告警系统通过对监控数据指标量化,监控数据变化,一旦发现问题之后,可以快速报给相应的工程师,快速处理问题,这样能够提升解决问题的效率,从而提升用户体验,而不用等着用户过来反馈问题,其次是能够通过聚合相关指标快速定位问题,结合可观测中的Log、Metrics、Tracing三大支柱,能够让相应的工程师快速定位问题产生的根本原因,而不是像无头苍蝇一样在海量的数据中翻找。
快速感知业务问题是体现告警的及时性和监控数据全面性,结合黑白监控两部分数据做告警,如通过黑盒监控对服务端口存活监控,看端口是否存活,白盒监控数据指标更多是通过Log、Metrics、Tracing三者相结合来发现问题,如对服务的核心关键指标Metrics监控,能够看出业务流量趋势、错误率、响应时间、P95、P99耗时情况,通过Tracing分析调用链的耗时情况,分析能够看到分段耗时,可以在通过Log去具体定位问题。
告警策略是告警中比较重要的一环,首先告警策略配置项要能够清楚结合业务场景和业务属性配置适合告警的策略,而不是盲目的;其次是告警质量,告警那么就是必须要处理的,而不是告警了,研发工程师忽略或者觉得没事,告警频率要是适度,选择合适的,而不是过多的告警导致告警泛滥,从而告警无效,或者告警过少发现不了问题,没有及时响应。
策略配置项,可以参考如下:
在策略配置时,可以参考如下,来确保告警任务合理性:
我们如何保证告警质量,首先是简化告警,针对阈值选择采用保守策略,逐渐视情况配置阈值,其次是告警的时效性,要确保告警的时效不能,问题出现很久了,才报警,这样不符合告警系统的预期,再次是告警收敛,防止告警泛滥,可以适合进行告警合并,将问题在告警表现出来,再次告警类型、级别,针对不同类型的告警类型,告警优先级,进行分类,便于区分重要程度,及告警升级等处理,最后是告警任务可操作,告警任务是可随时配置,如开启、暂停、关闭等,便于随时可控制,防止该告警任务出现不可控行为。
一般情况下,不同类型和级别告警任务处理存在不同的生命周期,这就需要我们能够识别告警任务并对告警任务初步判断,其次分析并定位器告警原因,判断是否将告警升级便于申请更多的资源协助定位排查,再次对告警任务描述处理周期及处理方案,对于非P0的告警,一般情况下当天发生的告警任务需要当天认领完毕并评估其影响范围,P0级别告警任务需要及时处理,防止影响范围扩大,当标识告警认领之后,该告警则不触发告警,但是还能够通过可视化平台看到该告警发生的曲线图,对于处理过的告警任务,可以作为经验库,团队定期复盘,总结和学习,防止同样的告警再次发生,从而提升系统的稳定性。
告警治理是对系统告警指标梳理、完善、正确性的持续检查,保证线上的告警是可用的,全面的,能够反馈问题的,防止随着时间慢慢腐化,导致告警指标不是最新的或者告警任务不准确,不完善等情况,另外一方面是定期对告警任务合理性,及时清理淘汰的任务,保证其简洁性。