《2021 阿里云可观测技术峰会演讲实录合辑(上)》——二、万节点规模云服务的SRE能力建设【下】

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
性能测试 PTS,5000VUM额度
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 《2021 阿里云可观测技术峰会演讲实录合辑(上)》——二、万节点规模云服务的SRE能力建设【下】

接上篇:

https://developer.aliyun.com/article/1222696?spm=a2c6h.13148508.setting.23.4f394f0em1x0Jq

image.png

Trace也使用Cmonitor来实现相关能力。日志方面,系统组件的日志、K8s控制面的日志、JVM的DCLog等,主要通过arms-Promtail(采集应用日志的探针)将日志投递到Loki内做长期存储。

 

K8s系统事件的日志,主要基于ARMS事件中心的功能对K8s的关键事件、Pod调度上的OOM、Error等事件进行监护。

image.png

上图为部分系统截图。

 

比如trace相关控制台可以查看每个请求经过的组件、接收用时、处理时长、回应耗时等标准信息。

image.png

日志收集方面,通过在Grafana里配置Loki的数据源,即可轻松根据关键字或Pod标签快速获取到Pod或某个service下挂载的Pod日志,对排查问题提供了极大便利。

 image.png

上图为ARMS提供的事件中心工作台截图。工作台提供了关键事件列表,可以对等级较高的事件进行订阅,订阅只需简单几步:填写基本规则,选择需要匹配事件的模式,选择告警发送对象,即可对关键事件进行监控,实现及时响应的目的。

image.png

完成数据收集后,下一步需要打造高效可用的数据可视化和问题排查工具。

 

Prometheus与Grafana是一对黄金搭档,因此我们也选择了Grafana作为数据可视化的工具。上图列举了大盘配置过程中的要点:

 

加载大盘时需要控制每个panel上的查询时间线,避免在前端展现过多时间线,导致浏览器渲染压力大。而且,对于问题排查而言,一次性显示多时间线并没有帮助

大盘配置了很多灵活的Variable,可以随意在一张大盘上切换各种数据源和查询条件

使用Transform让Table Panel灵活展现统计信息

分清Range和Instant查询开关,避免无用的范围查询拖慢大盘显示速度。

image.png

上图为监控节点信息、K8s集群Pod信息的大盘。整体布局一目了然,通过不同颜色对关键信息进行标记,通过Grafana的动态阈值功能将数字以不同的形式展现,提升问题排查效率。

image.png

上图为节点水位大盘,展示了磁盘iops、读写时间、网络流量、内存使用率、CPU使用率等重要信息。

 image.png

 上图为全局SLO大盘。通过Grafana托管服务配置自定义大盘,这也是ARMS最新上线的功能,在云上托管Grafana实例,即可通过云账号直接登录到Grafana界面,其中包含阿里云定制的特有功能。

 

上图大盘中包含了全局latency、QPS、成功率、错误码的分布情况、QPS的变化趋势,以及一些较细粒度的信息,比如单分片、负载均衡、Gateway组件、center组件等。如遇发版,可以通过带上版本号查看前后版本的区别,可以在pannel中以变量的形式展现datasource,也可以选择全球各个region进行切换查看。

 image.png

集群中依赖Kafka客户端和服务端,其监控来源于云监控集成。

 image.png

内部组件强依赖于Kafka,通过指标监控Kafka以及它与broker之间的连接数、平均消息长度、位点提交速率、消费流量等。Producer端提供了缓冲区的占用率、活跃的producer数等信息。

 image.png

如果组件使用Java编写,还需要监控JVM相关的GC情况,大盘能够提供JVMmemory的情况、GC相关情况、CPU使用率、线程数、线程状态等。此外,比如发版或有动态加载的类,在加载类的统计中可以查看是否存在持续上升的状态等。

 image.png

如果希望使用电子表格统计集群中的安装状态或重点客户状态,可以使用Grafana的transform功能将整个大盘打造成电子表格式的体验。可以用transform将字段映射到一张电子表格上,打开filter后还可通过筛选各种字段得出查询结果。

 image.png

日志信息的展示需要通过在Grafana里查询Loki的数据,比如center里有查询日志,其中包含很多原始信息,比如此次查询的时间、UID等。通过后处理的方式,首先将想要的日志按行的方式进行筛选,然后通过模式匹配提取信息,后续还可以按照PromQL将其中某些字段的做大小关系的匹配,最终将匹配出来的日志格式进行二次处理。

image.png

上图为告警和分级响应机制流程,依次为告警配置、人员排班、告警触发、应急处理、事后复盘和机制优化,最后将机制优化体现在告警配置上,形成完整的闭环。

image.png

以上流程是自建的告警系统,通过依赖自建系统定时跑任务检查指标,然后调用钉钉的webhook或其他运维系统的webhook发出告警,流程中存在几点不足:

 

自建系统的稳定性需要自己负责,如果告警系统的稳定性比运维系统更差,则告警系统的存在无意义。其次,随着整个集群开服的region越来越多,配置越来越复杂,自己维护配置并保证配置全球生效难以实现

 image.png

依赖手工排班,极易出现漏排或backup缺失

image.png

告警触发阶段触发条件非常单一,难以在告警触发链路上增加额外的业务逻辑,如动态阈值、动态打标等

image.png

应急处理阶段,信息发送非常频繁,无法主动认领和主动关闭。系统出现问题时,同类告警会在群里高密度发送,无法主动屏蔽告警也是缺陷之一

image.png

事后复盘优化的时候没有数据支撑,无法根据已有的告警统计信息来优化整个流程。

 

因此,我们选择基于ARMS来建立告警系统。ARMS强大的告警和分级响应机制为我们带来了诸多便利:

image.png

告警模板全球生效功能:只需配置一次告警规则,即可使不同的集群生效告警规则。比如没有告警模板时需要对每个cluster里的指标单独配置告警。而有了模板后,只需通过告警规则模板的方式将PromQL或告警的AlertRule apply到全球各个region集群,非常方便

image.png

告警排班表和动态通知:系统能够动态实现轮班替班工作,比手工排班更靠谱

image.png

事件处理流和告警富化:可以通过ARMS的事件处理流、告警中心的事件处理流和告警富化功能,在告警触发后动态地打上标记,并且做分级处理。如上图,可以给告警打上优先级标签,优先级较高的告警等级升级为P1,并且可以动态地修改告警接收人

 

为了实现上述功能,首先需要有数据源来提供打标的依据。在告警运维中心的控制台上有数据源的功能,告警触发时可以通过HTTP请求或RPC请求调用数据源,而后可以从HTTP URL里获取打标的结果。此接口的实现主要通过IFC轻量工具在线写好代码,代码主要负责读取ACM配置中心里的信息配置项,然后读取配置项并对外暴露HTTP接口,提供给告警运维中心动态地调用。

 

完成以上步骤后,还需配置事件处理流,将需要的信息通过匹配更新模式的方式传递到上述接口,并返回优先级,最终打到告警上。

image.png

告警的认领、关闭和屏蔽:ARMS 提供了认领、关闭、关注、屏蔽等实用功能,显著提升了告警质量

image.png

告警的认领接手率统计大盘:复盘的时候需要知道每个人处理了多少告警、处理时长、告警平均恢复时间等,引入了认领、关闭、恢复、屏蔽机制后,ARMS告警中心在后台记录了事件的日志,通过对日志的分析即可提供有用的复盘信息。

image.png

得到告警信息后,用户希望可以在白屏化的界面上处理问题,因此我们引入了基于Grafana的白屏化运维工具链。其原理为,在配置大盘的时候引入动态信息,并将其以链接的形式拼接到大盘里。

 

我们内部有各种系统,如果没有官方的链接拼接,则需要自己首拼 URL 或手动搜索,效率非常低。而通过在Grafana里嵌入链接的方式,将运维动作固化成链接之间的跳转,对于效率的提升非常有帮助。能够通过Grafana一套工具将所有工作完成,将运维动作标准化、固化,减少人工出错的可能性。


 3. 总结和未来工作

image.png

第一, 告警准确度和接手率的优化。目前还没有很好的方式能够将告警的复盘信息高效地利用起来,未来我们将尝试通过告警准确度和接手率的信息,及时调整不合理的告警阈值,也可能会尝试多阈值的告警,比如告警在A到B范围之内是多少等级,在B以上是多少等级。

 

第二, 多类型数据联动。比如在排查问题的时候,除了Metrics、Trace和Log之外,还有profiler、CPU的火焰图等信息,而目前这些信息与可观测数据的联动较低。提升数据联动,可以提升问题排查效率。

 

第三, 埋点成本控制。对于外部客户而言,埋点成本直接关系到客户使用阿里云的成本。我们将定期地对自监控指标的维度、发散的维度等进行针对性的治理,并且对于无用的维度进行数据清理,将埋点成本控制在较低水平。

相关实践学习
通过云拨测对指定服务器进行Ping/DNS监测
本实验将通过云拨测对指定服务器进行Ping/DNS监测,评估网站服务质量和用户体验。
相关文章
|
5月前
|
存储 机器学习/深度学习 大数据
参与开源大数据Workshop·杭州站,共探企业湖仓演进实践
Apache Flink 诚邀您参加 7 月 27 日在杭州举办的阿里云开源大数据 Workshop,了解流式湖仓、湖仓一体架构的最近演进方向,共探企业云上湖仓实践案例。
179 12
参与开源大数据Workshop·杭州站,共探企业湖仓演进实践
|
7月前
|
容灾 应用服务中间件 调度
八年磨一剑,四大技术视角总结云上应用管理实践
这篇文章是阿里云 EDAS 团队在近八年服务客户的过程中,在应用管理两大领域(容量管理和流量管理)方向往云时代迈进时所呈现出来的不同进行深入剖析与总结,以帮助大家在更好的理解云上环境的特点,在生产实践中有效避坑。
|
人工智能 Kubernetes Cloud Native
阿里云易立:以云原生之力,实现大模型时代基础设施能力跃升 | KubeCon 主论坛分享
阿里云易立:以云原生之力,实现大模型时代基础设施能力跃升 | KubeCon 主论坛分享
|
存储 消息中间件 Prometheus
《2021 阿里云可观测技术峰会演讲实录合辑(上)》——二、万节点规模云服务的SRE能力建设【上】
《2021 阿里云可观测技术峰会演讲实录合辑(上)》——二、万节点规模云服务的SRE能力建设
184 0
|
自然语言处理 运维 监控
《2021 阿里云可观测技术峰会演讲实录合辑(下)》——一、 基于OPLG从0到1构建统一可观测平台实践【上】
《2021 阿里云可观测技术峰会演讲实录合辑(下)》——一、 基于OPLG从0到1构建统一可观测平台实践【上】
177 0
《2021 阿里云可观测技术峰会演讲实录合辑(下)》——一、	基于OPLG从0到1构建统一可观测平台实践【上】
|
存储 SQL 运维
《2021 阿里云可观测技术峰会演讲实录合辑(上)》——三、友邦人寿可观测体系设计与落地
《2021 阿里云可观测技术峰会演讲实录合辑(上)》——三、友邦人寿可观测体系设计与落地
181 0
|
运维 Prometheus 监控
《2021 阿里云可观测技术峰会演讲实录合辑(上)》——一、行业SaaS微服务稳定性保障实战【下】
《2021 阿里云可观测技术峰会演讲实录合辑(上)》——一、行业SaaS微服务稳定性保障实战【下】
186 0
|
Prometheus 运维 监控
《2021 阿里云可观测技术峰会演讲实录合辑(上)》——一、行业SaaS微服务稳定性保障实战【上】
《2021 阿里云可观测技术峰会演讲实录合辑(上)》——一、行业SaaS微服务稳定性保障实战【上】
203 0
|
存储 数据采集 边缘计算
《2021 阿里云可观测技术峰会演讲实录合辑(下)》——一、 基于OPLG从0到1构建统一可观测平台实践【下】
《2021 阿里云可观测技术峰会演讲实录合辑(下)》——一、 基于OPLG从0到1构建统一可观测平台实践【下】
154 0
|
监控 安全
《2021 阿里云可观测技术峰会演讲实录合辑(下)》——一、基于OPLG从0到1构建统一可观测平台实践——场景实践4:基于RASP的应用安全防护
《2021 阿里云可观测技术峰会演讲实录合辑(下)》——一、基于OPLG从0到1构建统一可观测平台实践——场景实践4:基于RASP的应用安全防护