7.1 阿里云容器服务Kubernetes的监控总览

如图7-1所示,阿里云Kubernetes集群监控方案与云服务和开源方案深入结合,实现了完善的监控体系。

7.1.1 云服务集成

阿里云容器服务Kubernetes目前已经和四款监控云服务进行了“打通”,它们分别是SLS(日志服务)、ARMS(应用实时监控服务)、AHAS(应用高可用服务)和Cloud Monitor(云监控)。

图7-1 阿里云Kubernetes集群监控方案

SLS主要负责日志的采集、分析。在阿里云容器服务Kubernetes中,SLS可以采集三种不同类型的日志。

● API Server等核心组件的日志。

● Service Mesh和Ingress等接入层的日志。

● 应用的标准日志。

其中Ingress接入层控制台界面如图7-2所示。

图7-2 Ingress接入层控制台界面

除了采集日志的标准链路外,SLS还提供了上层的日志分析能力,默认提供了基于API Server的审计分析能力、接入层的可观测性展现、应用层的日志分析。

在阿里云容器服务Kubernetes中,日志组件已经默认安装,开发者只需要在集群创建时勾选即可。

如图7-3所示,ARMS(实时监控服务)主要负责采集、分析、展现应用的性能指标。ARMS目前主要支持Java与PHP两种语言的集成,可以采集虚拟机(JVM)层的指标,例如GC的次数、应用的慢SQL查询操作、调用栈等,对于后期性能调优可以起到非常重要的作用。

图7-3 应用实时监控系统

AHAS是架构感知监控,如图7-4所示。通常在Kubernetes集群中负载的类型大部分为微服务,微服务的调用拓扑也会比较复杂,因此当集群的网络链路出现问题时,如何快速定位问题、发现问题、诊断问题则成了最大的难题。AHAS使用网络流量和走向数据,构造并展现出集群的拓扑结构,为业务提供了更高层次的问题诊断方式。

图7-4 架构感知监控

7.1.2 开源集成方案

开源方案的兼容和集成也是阿里云容器服务Kubernetes监控能力的一部分,主要包含如下两个部分。

1.Kubernetes内置监控组件的增强与集成

在Kubernetes社区中,heapster/metrics-server是内置的监控方案,而且Dashboard、HPA等核心组件会依赖于这些内置监控能力提供的性能数据。

由于Kubernetes生态中组件的发布周期和Kubernetes的release不一定保证完全同步,造成了部分消费者限于监控能力在Kubernetes中存在监控问题。阿里云就这个问题做了metrics-server的增强,实现了版本的兼容。

此外,针对节点的诊断能力,阿里云容器服务增强了NPD的覆盖场景,支持了FD文件句柄的监测、NTP时间同步的校验、出入网能力的校验等,并开源了Eventer,支持收集离线Kubernetes的事件数据并发送给SLS、Kafka以及钉钉,实现ChatOps。

2.Prometheus生态的增强与集成

Prometheus是Kubernetes生态中三方监控的事实标准,因此阿里云容器服务提供了其安装包供开发者一键集成。此外,我们还在如下三个层次做了增强。

● 存储和性能的增强:提供了产品级的存储能力支持(TSDB、InfluxDB),保证了持久高效的监控数据写入与查询。

● 采集指标的增强:修复了部分由于Prometheus自身设计缺陷造成的监控不准的问题,提供了CPU单卡、GPU多卡、GPU共享分片的Exporter。

● 上层可观测性的增强:支持场景化的CRD监控指标集成,例如Argo、Spark、TensorFlow等组件的云原生监控能力,支持多租户场景下应用可观测性。