12 可观测性:监控与日志
背景监控和日志是大型分布式系统的重要基础设施,监控可以帮助开发者查看系统的运行状态,而日志可以协助问题的排查和诊断。在k8s中,监控和日志属于生态的一部分,并不是核心组件,因此大部分的能力依赖上层的云厂商的适配。k8s定义了解毒的接口规范和标准,任何符合接口标准的组件都可以快速集成。监控监控的类型资源监控CPU、内存、网络等资源类的指标,常以数值、百分比为单位进行统计,是最...
·
背景
监控和日志是大型分布式系统的重要基础设施,监控可以帮助开发者查看系统的运行状态,而日志可以协助问题的排查和诊断。
在k8s中,监控和日志属于生态的一部分,并不是核心组件,因此大部分的能力依赖上层的云厂商的适配。k8s定义了解毒的接口规范和标准,任何符合接口标准的组件都可以快速集成。
监控
监控的类型
- 资源监控
- CPU、内存、网络等资源类的指标,常以数值、百分比为单位进行统计,是最常见的资源监控方式。
- 性能监控
- 应用的内部监控,通常是通过Hook的机制在虚拟机层、字节码执行层隐式回调,或者在应用层显示注入,获取更深层次的监控指标,常用来应用诊断和调优
- 安全监控
- 针对安全进行的一系列监控策略,例如越级监控、安全漏洞扫描等
- 事件监控
- k8s中另一类的监控方式,紧密贴合k8s的设计理念,补充常规监控方案的欠缺与弊端
k8s的监控演进
早期:每个kubelet上有一个cadvisor采集信息,Heapster定期拉去数据,进行聚合,暴露接口供查询。
K8s监控接口标准
通过APIServer Aggregated API注册了三种不同的metrics接口,将监控的消费能力进行标准化和解耦,从而实现了与社区的融合
Prometheus-开源社区的监控“标准”
- 简洁强大的接入标准
- 多种数据采集、离线方式
- k8s的兼容
- 丰富的插件机制与生态
- prometheus operator的助力
kube-eventer-k8s事件离线工具
日志
日志的场景
- 主机内核的日志
- 主机内核日志可以协助开发者诊断例如:网络栈异常,驱动异常,文件系统异常,影响节点(内核)稳定的异常
- Runtime的日志
- 最常见的运行时时Docker,可以通过Docker的日志排查例如删除Pod Hang等问题
- 核心组件的日志
- APIServer日志可以用来审计,Sheduler日志可以诊断调度,etcd日志可以查看存储状态,ingress日志可以分析接入层流量
- 部署应用的日志
- 可以通过应用日志分析查看业务层的状态,诊断异常
日志的采集
从采集位置上划分,需要支持如下三种:
Fluentd日志采集方案
总结
阿里云容器服务监控体系
阿里云容器服务日志体系
总结
- 监控
- 四种容器场景下常见的监控方式
- k8s监控的演进与接口标准
- 两种常见的开源监控方案
- 日志
- k8s日志的四种不同场景
- Fluentd日志采集方案
更多推荐
已为社区贡献5条内容
所有评论(0)