ACP云原生容器工程师 - 日志与监控
概述
阿里云的可观测性体系: 日志管理、监控管理
日志管理
Kubernetes可观测性体系概述
可观测性指如何从外部输出推测及衡量体系内部状态
Kubernetes可观测性体系包括:监控和日志,是大型分布式系统的重要基础设施
- 监控可以帮助开发者插卡系统的运行状态
- 日志可以协助问题的排查和诊断
- 在Kubernetes中,监控和日志属于生态的一部分,他并不是核心组件,因此大部分的能力依赖上层的云厂商的适配。
- Kubernetes定义了介入的接口标准和规范,任何符合接口的组件都可以快速集成。
Logging-日志
- 基于阿里云日志服务SLS提供了完整的日志方案,可以对应用日志进行收集、处理,并提供了操作审计,kubernetes事件中心等能力。
Metrics-监控指标
- 对基础设施服务(比如ECS、存储、网络),云监控提供了全面的监控。
- 对于业务应用的性能指标,ARMS无需修改业务代码即可对Java和PHP应用提供全方位的性能监控。
Tracing-全链路追踪
- Tracing Analysis为开发者提供了完整的分布式应用调用链路统计、拓扑分析等工具。
- 能够帮助开发者快速发现和诊断分布式应用中的性能瓶颈,提升微服务应用的性能和稳定性。
Kubernetes日志使用场景
Kubernetes日志使用场景主要分为四个大的场景:
- 主机内核的日志: 协助开发者进行一些常见的问题与诊断:网络栈异常、驱动异常、文件系统异常、影像节点(内核)稳定的异常。
- Runtime日志:主要包括Docker日志
- 核心组件的日志:APIServer日志可以用来审计,Scheduler日志可以诊断调度,etcd日志可以查看存储状态,Ingress日志可以分析接入层流量
- 部署应用的日志:可以通过应用日志分析插卡业务层的状态,状态异常。
Kubernetes日志的采集
从采集位置上划分,主要分为三种:
- 宿主机文件
- 容器内文件
- 容器标准/错误输出
阿里云ACK日志服务
可创建两种日志:
- 集群日志服务
- 应用配置日志服务
监控
监控类型
从监控类型上划分,在Kubernetes中可以分成4个不同的类型:
- 资源监控:主要监控CPU、内存、网络等常规指标
- 性能监控:应用的内部监控,通常是通过Hook的机制在虚拟机层、字节码执行层通过隐式调用,或者是在应用层显示注入,获得更深层次的一个监控指标,一般是用来应用的调优和诊断的。
- 安全监控:安全监控主要是对安全进行的一系列的监控监控,类似像越权管理、安全漏洞扫描等。
- 事件监控:事件监控紧密贴合Kubernetes的设计理念,补充常规监控方案的欠缺和弊端。
监控工具
- Cloud Monitor: 基础资源监控
- SLS: 阿里云日志服务
- AHAS: 架构感知监控,应用高可用服务AHAS
- ARMS APM:阿里云应用性能监控ARMS
- ARMS Prometheus:阿里云托管版Prometheus
- XTrace:链路追踪Tracing Analysis
基础资源监控Cloud Monitor
云监控
- 是一项针对阿里云资源和互联网应用进行监控的服务
- 云监控用于监控各云服务资源的监控指标,探测云服务ECS和运营商站点的可用性,并针对制定监控指标设置报警。
- 全面了解阿里云上资源的使用情况和业务运行状况,并及时对故障资源进行处理,保证业务正常运行。
查看容器监控数据
管理报警规则
日志服务SLS
主要负责日志的采集、分析
可采集以下日志:
- APIServer等核心组件的日志
- Service Mesh/Ingress等接入层的日志
- 应用的标准日志
提供上层的日志分析能力
默认提供了基于API Server的审计分析能力、接入层的可观测性展现,应用层的日志分析
应用实时监控服务ARMS
- 是一款阿里云应用性能管理(APM)类监控产品
- 可以基于前端、应用、业务自定义等维度,迅速便捷地为企业构架秒级响应的业务监控能力
- ARMS提供一系列的监控定制功能,包括数据接入、数据计算、数据存储、大盘展示与报警、下游API对接等环节
- 用户需要关心三件事:数据从哪里来、实时计算怎么编排、数据怎么用
架构感知监控AHAS
- AHAS是架构感知监控,通常在Kubernetes集群中负载的类型大部分为微服务,微服务的调用拓扑也比较复杂,因此当集群的网络链路出问题时,如何快速定位问题、发现问题、诊断问题则成为了最大的难题。
- AHAS通过网络的流量和走向,将集群的拓扑进行展现,提供更高层次的问题诊断方式。
- 为Kubernetes应用安装AHAS探针后,AHAS能自动识别系统中的Pod、Deployment、Service和它们与其他组件的依赖关系
- 通过采集Kubernetes元信息,构建Kubernetes资源的物理拓扑关系,支持自建Kubernetes集群、阿里云容器服务Kubernetes集群
不同层次的监控解决方案
从可观测性的角度,以ACK为基础的系统架构可以粗略分为4个层次,自下而上分别是:
- 基础设施层
- 容器性能层
- 应用性能层
- 用户业务层
阿里云容器服务ACK监控方案详解
基础设施层可观测性:包括架构可视化感知方案和基础设施指标监控方向
集群、容器的性能指标监控:阿里云托管版Prometheus监控方案、开源Prometheus监控方案、事件的监控方案
应用性能可观测性:无侵入应用监控APM监控方案、侵入应用监控APM监控方案
用户业务可观测性:自定义日志监控方案
小结
阿里云容器服务ACK版可观测性体系包括:
Logging-日志
Metrics-监控指标
Tracing-全链路追踪
阿里云容器服务ACK版集成了日志服务、在创建集群时启用日志服务、快速采集Kubernetes集群的容器日志、包括容器的标准输出以及容器内的文本文件
阿里云容器服务ACK版提供了云原生标准的监控接口
它将监控的数据消费能力进行了标准化解耦
可以实现和不同云厂商提供的监控服务进行标准化接入
目前已经实现多个监控云服务打通接入
阿里云容器服务ACK版监控生态解决方案分为:
基础设施层场景的可观测性
容器性能层场景的可观测性
应用性能层场景的可观测性
用户业务层场景的可观测性