12 可观测性:监控与日志

背景

监控和日志是大型分布式系统的重要基础设施,监控可以帮助开发者查看系统的运行状态,而日志可以协助问题的排查和诊断。

在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日志采集方案
发布了44 篇原创文章 · 获赞 0 · 访问量 982

猜你喜欢

转载自blog.csdn.net/weixin_37748689/article/details/96992692
今日推荐