你可能还想看
1. 6年团队Leader: 程序员的8种软技能
2. 代码覆盖率在性能优化上的一种可行应用
3. 阿里10年技术人:实战中的架构设计方法
4. 谈谈关系型数据库与Serverless
5. 液冷数据中心正当红,解密“浸没式液冷”
关注我们欢迎关注加星标✨ 每日推送不错过
凌云时刻
SLS 作为一站式的可观测平台,提供了对 Log、Metric、Trace 等数据的完整支持,包括数据存储、查询分析、ETL、可视化、监控告警等能力。随着企业业务的不断发展,线上服务以及它们所产生的的可观测数据也会越来越多,越来越复杂,如何从这些海量的异构数据中快速发现有价值的信息,进而赋能运维与运营人员,是一个比较大的挑战。
在这个过程中,可能面临的挑战有:
多套系统重复建设,维护成本高难度大
数据孤岛化,异构数据的协同监控比较困难,不得不做各种数据处理
大量的重复告警无法收敛,用户心态已经麻痹
通知渠道与通知内容形式相对比较单薄,需要进一步去排查和发现问题,影响处理效率
动态分派、人员值班等能力弱,导致工作负载不均衡,影响工作效率
……
为了解决这些问题,我们在 SLS 原有的监控告警能力基础上,进一步做了非常多重大的功能与体验升级,致力于将 SLS 打造成一站式的智能运维平台,从而帮助企业与用户解决以上诸多痛点。之前已经有多篇文章对此作了较为完整的介绍,可参考附1、附2。
在过去的一年,我们在功能性、易用性、集成度等方面做了大幅改进和优化,致力于满足不同需求层次的客户诉求,让智能告警触手可及。
整体上,SLS 智能告警系统主要分为以下几个组成部分:
告警监控:依托于 SLS 本身强大的存储和查询分析能力,我们可以支持海量数据的实时查询分析、异构数据的协同分析、跨账号跨地域的协同监控等能力;
告警管理:提供了多种告警降噪能力,包括去重、合并、抑制、静默等;
行动管理:对接了十多种通知渠道,可以快速配置使用,并且提供了非常灵活且强大的动态分派能力;
开放告警:对于数据并未接入 SLS 的用户,可以通过开放告警的能力,将自建系统或其它云产品的告警接入 SLS 告警管理系统,从而快速使用 SLS 的告警管理与行动管理能力。
在过去的一年,主要从以下两个维度做了功能演进:
从点到线:每个独立模块都做了功能增强与优化,例如对于告警监控继承了独享 SQL,丰富了内置规则库等;对于告警管理实现了算法降噪等;通知管理部分新增了多个通知渠道,实现了与外部 CMDB 系统的对接,增强了移动端的通知查看体验;开放告警也丰富了多个数据源等(参考下图标注部分);
从线到面:基于业务实现告警的统一管理,通过在告警管理中心应用中,进行逻辑上的业务划分,可以实现从数据到监控到告警管理的完整流程。
在需要对大量数据进行监控的时候,由于查询资源的限制,可能会导致查询不完整、查询超时等问题,从而导致监控失效。为了解决该问题,SLS 告警的监控集成了 SQL 独享版,通过开启该功能,可以支持更大数据量、更高性能的监控。
在配置监控查询分析语句的时候,可以选择是否开启 SQL 独享版,有以下三种选项:
启用:始终使用 SQL 独享版去查询,该选项会产生少量的独享 SQL 费用;
关闭:不使用 SQL 独享版。在数据量比较大、SQL 比较复杂的情况下,可能会导致查询不精确,从而影响监控的准确性;
自动:默认不使用 SQL 独享版,当发现查询不精确或者超时失败的时候,会使用 SQL 独享版再去查询。该选项在性能和费用之间做了平衡。
在告警降噪过程中,我们可以通过配置适当的合并规则,将具有相似特征的告警合并到同一个分组中,实现批量的通知。例如可以设置将相同应用的告警进行合并,从而避免同一个应用的多个告警频繁触发通知。
但是在有些场景下,并没有非常明确的预设规则可以用来进行合并。基于这些场景,我们提供了智能合并模式。SLS 告警智能合并依托于 NLP 算法,自动化地去学习告警之间的关联或相似关系,在不依赖于历史告警数据的前提下(冷启动),可以实时地对不同来源的告警进行智能合并,然后再通知给用户,让用户免于告警风暴的困扰。关于智能合并更详细的介绍,可以参考附3。
通知渠道方面,在已有的短信、语音、邮件、钉钉、自定义 Webhook 等基础上,新增了企业微信、飞书、Slack、函数计算、事件总线等通知渠道。
另外对于钉钉、企业微信、飞书、Slack、自定义 Webhook 等这些 Webhook 类型的通知渠道,提供了 Webhook 集成的功能,从而可以配置一次多处复用。在通知内容上,也对这些通知渠道做了包装,因此用户无需感知不同通知渠道的数据协议,只需要关注于自己希望看到的通知内容即可。
除了短信、钉钉这样的通知渠道,还可以对接函数计算来实现一些自动化的响应。即在告警触发后,无需人工干预,可以使用设定好的规则自动去处理故障,让故障的处理变得更加自动化和高效。详细使用案例可以参考附4。
由于告警通知支持多个渠道,每个渠道都有各自的内容格式,比如邮件支持 HTML,钉钉等 IM 渠道支持 Markdown,因此同样的通知内容,在不同渠道中,需要使用不同的样式。另外对于具体的通知内容,可能需要根据不同的条件来展示不同的内容(例如告警触发的时候显示原始日志,恢复的时候无需展示);或者需要通过循环的方式,来遍历触发的日志内容,进行格式化的呈现。
基于这样动态渲染以及更丰富样式的诉求,我们在原有内容模板语法的基础上做了大幅改进,从而升级到了新版的模板语法。新版模板语法主要有以下特点:
内容和样式分离,因此在不同的通知渠道中定制不同的样式就变得比较简单
支持 if、for 循环等多种结构,从而可实现动态渲染
提供了 50+ 内置函数对数据进行处理,例如时间格式化、JSON 解析、字符串处理、数学计算等
例如同样的一条告警,使用新的模板语法,可以实现更好看的样式,从而让内容呈现更加直观。更多详细介绍,可以参考附5。
旧模板通知 | 新模板通知 |
SLS 告警管理中,行动策略天然地支持动态分派的能力,例如将测试环境的告警发送给某个接收人,生产环境的告警通过短信发送给另一个接收人:
但是这对于某些特定场景,还是不太方便,例如:
用户信息并没有导入到 SLS 中,而是在企业自建的用户管理系统中(例如 LDAP、AD 等)进行维护
动态分派的条件比较复杂,且条件判断可能非常多,例如几十个上百个条件分支,配置复杂且不方便维护
在这种情况下,SLS 告警提供了动态接收人的方式,用户只需要提供一个 Webhook 服务,用于处理用户信息的对接以及告警通知的分派,无需将大量的用户信息导入 SLS 或配置大量的条件分支。
通过这种方式,可以灵活地与各种企业自建的 CMDB 系统进行对接,包括已有的用户信息管理、通知分派、值班等逻辑,都可以与 SLS 告警系统无缝对接。更多详细介绍可以参考附6。
通常在接收到告警通知后,我们可能需要登录控制台,再去查看详细的日志以及告警信息,然后进行告警事务的处理。这就带来了一些不方便,尤其是在路上或者夜里的时候,不仅需要开电脑,还需要登录才能操作。为了增强移动端的体验,我们提供了免登陆查看告警详情的功能。在接收到告警之后,通过免登陆链接在手机上直接点击,无需登录即可查看告警详情、查看触发日志、进行事务处理等操作。更多介绍可参考附7。
默认情况下,告警是在某个 Project 下进行管理的,也就是说,告警和数据相关联。但是在实际的一些使用场景中,我们可能希望能够根据业务单元为粒度,统一进行告警的管理以及态势的统计分析。因此我们提供了告警管理中心 APP,以业务为中心进行告警的统一管理,每个业务都包含从资源层到事务管理的完整链路。
在告警管理中心 APP 中,我们可以基于这样的业务划分,实现告警通知的统一管理、基于业务的告警态势查看与管理事务等功能。更多详细内容可以参考附8。
目前已经集成的云产品包括容器服务 ACK、服务网格 ASM、操作审计等。以及 SLS 的日志应用,例如 k8s 事件中心、成本管家、日志审计、全栈监控 Cloud Lens for OSS 等十多个应用。
除了将数据接入到 SLS 进行监控之外,对于一些用户已有的监控系统产生的告警,或者多云场景下的告警,也可以通过开放告警的方式统一接入到 SLS 告警管理平台,进行统一的告警管理。目前开放告警累计支持了 Prometheus、AlertManager、Grafana、Zabbix、DataDog、Loki、AWS CloudWatch、New Relic、华为云云监控等十多个监控源,从而可以将 SLS 作为统一的告警管理中心来对各个不同系统的告警进行管理。
随着 Infrastructure as Code 的理念发展,越来越多的企业在使用 Terraform 来进行云资源的管理编排。SLS 告警提供了对 Terraform 的支持,从而方便集成到企业的自动化流程中。另外也提供了完整的 SDK ,以方便批量自动化对告警规则及相关资源进行管理,相关信息可以参考附9、附10。
综合来说,过去的一年中我们主要在功能完整性、生态、易用性等方面做了比较大的演进。但整体上来说,依然存在着一些不足:
功能强大带来的是使用门槛的提高,首次上手的难度依然有待改进;
生态开放上有待继续完善,需要更灵活的对接形式,以方便用户按照自身需求做二次开发,避免陷入纯粹的需求驱动的误区;
告警通知后的事务管理,与钉钉等工具的协作依然需要不断演进,完善使用场景,形成操作闭环。
接下来的研发过程中,SLS 一站式智能告警运维系统会努力变得更加好用易用,进一步帮助用户更高效地挖掘潜在的数据价值。
附1:一站式云原生智能告警运维平台——SLS 新版告警发布!
https://developer.aliyun.com/article/783352
附2:这才是可观测告警运维平台——20 个 SLS 告警运维场景
https://developer.aliyun.com/article/783354
附3:抑制告警风暴—SLS 告警智能合并发布
https://developer.aliyun.com/article/835401
附4:SLS 告警响应升级——通知对接 FC 进行自动化操作
https://developer.aliyun.com/article/832394
附5:SLS 告警重磅更新——让你的告警通知一目了然
https://developer.aliyun.com/article/793786
附6:设置动态接收人
https://help.aliyun.com/document_detail/415360.html
附7:免登录查看告警详情
https://help.aliyun.com/document_detail/346631.html
附8:告警管理中心概述
https://help.aliyun.com/document_detail/393361.html
附9:使用 Terraform 玩转 SLS 告警
https://developer.aliyun.com/article/880380
附10:如何使用 SDK 管理告警
https://help.aliyun.com/document_detail/387421.html
欢迎关注加星标✨ 每日推送不错过