开发者学堂课程【Kubernetes 入门: 可观测性:监控与日志】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/51/detail/1018
可观测性:监控与日志
内容介绍:
一、背景
二、监控
三、日志
四、总结
一、背景
监控和日志是大型分布式系统的重要基础设施,监控可以帮助开发者查看系统的运行状态,而日志可以协助问题的排查和诊断。
在 Kubernetes 中,监控和日志属于生态的一部分,并不是核心组件,因此大部分的能力依赖上层的云厂商的适配。Kubernetes 定义了接入的接口标准和规范,任何符合接口标准的组件都可以快速集成。
二、监控
1、监控的类型
l 资源监控
CPU、内存、网络等资源类的指怀,吊以效值、日刀比平 LL13P,n0n 方式。
l 性能监控
应用的内部监控,通常是通过 Hook 的机制在虚拟机层、字节码执行层隐式回调,或者在应用层显示注入,获取更深层次的监控指标,常用来应用诊断与调优。
l 安全监控
针对安全进行的一系列监控策略,例如越权管理、安全漏洞扫描等等
l 事件监控
Kubernetes 中一种另类的监控方式,紧密贴合 Kubernetes 的设计理念,
l 补充常规监控方案的缺欠与弊端。
2、Kubernetes 的监控接口标准
通过 APIServer Aggregated API 注册了三种不同的 metrics 接口,将监控的消费能力进行标准化和解耦,从而实现了与社区的融合。
3、Prometheus-开源社区的监控“标准”
l 简洁强大的接入标准
l 多种数据采集、离线方式
l Kubernetes 的兼容
l 丰富的插件机制与生态
l Prometheus Operator 的助力
三、日志
1、日志的场景
l 主机内核的日志:
主机内核日志可以协助开发者诊断例如︰网络栈异常,驱动异常,文件系统异常,影响节点(内核)稳定的异常。
l Runtime 的日志:
最常见的运行时是 Docker,可以通过 Docker 的日志排查例如删除 Pod Hang 等问题。
l 核心组件的日志:
APIServer 日志可以用来审计,Scheduler 日志可以诊断调度,etcd 日志可以查看存储状态,Ingress 日志可以分析接入层流量。
l 部署应用的日志:
可以通过应用日志分析查看业务层的状态,诊断异常
2、日志的采集
从采集位置上划分,需要支持如下三种:
1、宿主机文件
2、容器内文件
3、容器标准/错误输出
3、Fluentd 日志采集方案
l Data Collection
l Data Aggregation& Processing
l lndexing &storage
l Analysis &visualization
四、总结
在 Kubernetes 中,监控和日志属于生态的一部分,并不是核心组件 Kubernetes 定义了接入的接口标准和规范,任何符合接口标准的组件都可以快速集成。
与监控日志紧密相关的四个产品:
l SLS(Log):日志服务
l ARMS(APM):应用的性能监控
l AHAS(Architecture Awareness):架构感知监控
l Cloud Monitor:云监控
metrics-server 把功能做了很多裁剪,会很不方便,会跟及自己的节奏进行发布
npd 增加了很多监控和检测项
在采集层提供了优化的 node-exporter,场景化的 other-exporters
以及针对 GPU 的 GPU-exporter
阿里云容器服务日志体系
我们可以采集 pod、Kemel、etcdCore 、Components、Docker 的日志,都收集到 SLS 中,通过 数据离线,离线到 ossMax 、Compute 中,在 Opensearch、 E-MapRreduce、 Flink 中实施日志的搜索和消费,可以对接 Grafana 和 DataV 进行数据的采集和消费
l 监控
四种容器场景下常见的监控方式
Kubernetes 监控的演进与接口标准
两种常用的开源监控方案
l 日志
Kubernetes 日志的四种不同场景
Fluentd 日志采集方案