You need to enable JavaScript to run this app.
导航

可观测性概述

最近更新时间2024.02.29 11:18:35

首次发布时间2023.08.29 22:38:12

随着 Kubernetes 的广泛使用,云原生架构给可观测性带来了新的挑战。在微服务和容器化的背景下,您需要充分了解应用程序以及 Kubernetes 基础设施的运行状态,快速定位并解决出现的问题,同时需要对应用以及集群运行状态数据的收集和分析,持续优化和改进,从而保证运行环境安全可靠。

本文为您介绍容器服务可观测性系统的组成,以及基于火山引擎云产品实现容器服务可观测系统构建的最佳实践。

Kubernetes 的可观测挑战

Kubernetes 系统对于可观测性方面的挑战包括:

  • 架构复杂:Kubernetes 系统包括控制面和数据面,包含种类众多相互通信的组件,可观测性必须能够覆盖全面。
  • 动态资源:Kubernetes 集群中动态创建 Pod、Service 等资源并为其分配 IP,重建 Pod 时为其分配新的资源和 IP,需要动态监控这些资源的创建、删除以及底层资源的水位。
  • 微服务架构:在微服务和容器化的背景下,传统应用按照微服务架构分解成多个组件,每个组件副本数又可以根据需求,实现弹性扩缩容。这对问题的排查和故障处理提出了非常高的要求。

针对 Kubernetes 系统的可观测性挑战,尤其在集群规模快速增长的情况下,高效可靠的 Kubernetes 系统可观测性能力,是系统稳定性保障的基石。

可观测性架构

在云原生架构中,可观测性(Observability)一般是指三个具体的方向,分别为:日志事件(Logging)链路追踪(Tracing)聚合指标(Metrics)
alt

  • 日志事件(Logging):日志和事件是系统离散行为和状态的记录,这些记录可以用来分析程序的行为。当程序出错时,能够通过日志和事件找到错误的原因并给予修复。应用程序输出日志很容易,但收集和分析日志却可能会很复杂,面对成千上万的集群节点、迅速滚动的事件信息和数以 TB 级的文本,传输与归集都并不简单。为此,需要对接专门的系统进行日志的搜集、存储、查看和检索。
  • 链路追踪(Tracing):在云原生系统中,由于应用程序微服务化,链路追踪不只局限于调用栈。一个外部请求往往需要若干个内部服务的联动响应,这时候完整的调用轨迹将跨越集群内的多个服务。同时包括服务间的网络传输信息及各个服务内部的调用堆栈信息。因此,云原生系统中的链路追踪也被称为 全链路追踪。链路追踪的主要目的是排查故障,例如:调用链的哪一部分、哪个方法出现错误或阻塞,输入输出是否符合预期等等。
  • 聚合指标(Metrics):聚合指标是指系统中某一类信息的统计聚合。例如:集群节点资源的使用量、水位、配额等。聚合指标的主要目的是监控(Monitoring)和告警(Alert),当某些指标达到风险阈值时触发告警,以便自动处理或者提醒管理员介入。

日志(Logging)

容器服务基于火山引擎 日志服务,提供集群的日志持久化存储、查询等功能。

项目说明

日志类型

支持集群、应用的多种类型日志,包括:

  • 容器日志:支持容器标准输出(Stderr、Stdout)日志、容器文件路径日志。
  • 组件日志:支持 Ingress 组件日志。
  • 控制面组件日志:支持控制面组件日志,包括:kube-apiserver、kube-scheduler、kube-controller-manager 和 etcd。
日志存储支持海量数据的持久化存储,性能稳定、读写便捷。
检索分析支持使用关键词检索日志,快速定位异常事件;同时支持使用 SQL 对日志进行实时统计与分析,快速获取关键数据。
可视化查询与分析结果支持可视化展示,支持多维度的统计图表类型和自定义的交互式仪表盘,辅助数据的实时监控与运营。

说明

日志服务支持海量数据秒级查询分析,提供高效实时的日志处理工具,降低了日志类数据的使用门槛,有效提升运维能力及数据分析效率。当集群发生故障时,您可以从日志服务中查看过去的日志信息,进行故障排查。

事件(events)

Kubernetes 事件是一个对象,它显示集群、节点、Pod 或容器内发生的事情。这些对象通常是为了响应 Kubernetes 系统内部发生的变化而生成的。Kubernetes 事件能够帮助用户深入了解集群的健康和性能。事件一般分为 2 种:

  • Warning 事件:表示产生这个事件的状态转换是在非预期的状态之间产生的。
  • Normal 事件:表示期望到达的状态和目前达到的状态是一致。

容器服务基于火山引擎 日志服务,提供集群的事件和持久化存储、查询等功能。

指标(Metrics)

容器服务支持通过火山引擎云监控、托管 Prometheus 或云原生观测方案,实现集群、基础资源和应用指标(Metrics)的采集、监控和告警。

方案介绍方案介绍相关文档
云监控火山引擎云监控服务是火山引擎云上一站式监控告警解决方案。可以收集并可视化展示各类云产品的资源状态,帮助您全面了解其健康状况。您可以将容器服务集群接入云监控产品,帮助您收集并可视化展示容器服务集群、节点、命名空间、工作负载、容器组和容器等多种资源状态。什么是云监控
托管 Prometheus火山引擎托管 Prometheus(Volcengine Managed Service for Prometheus,VMP)是完全继承和对接开源 Prometheus 生态,并托管在火山引擎云端的监控产品。兼容开源 Prometheus 的接口以及社区 Exporter 生态,提供免搭建、免运维的 Prometheus 集成环境,减少开发及运维成本。什么是托管 Prometheus
云原生观测云原生观测是针对容器服务集群提供的一体化可观测性解决方案。在基础观测能力之上,提供了基于 eBPF 实现的代码零侵入指标采集方式,实现面向 Kubernetes 集群、组件、资源、网络、应用和服务的指标和链路监控。云原生监控

说明

容器服务指标监控的详细介绍和方案对比,请参见 监控概述