Kubernetes 排障实战:用 Prometheus 提升集群可用性和排障效率
强大的工具,往往伴随着巨大的复杂性。与 Kubernetes 的分布式、动态性等硬核实力相伴而来的,是如何对其进行监控的挑战:
集群是否潜藏着性能瓶颈?
各项资源分配是否合理?
如何捕获影响稳定性的事件?
这些问题,不仅关乎系统的稳定性、高效性,还将直接影响业务质量和用户体验。
而 Prometheus 作为紧随 Kubernetes 之后的、CNCF 的“第二把交椅”,则凭借其与 Kubernetes 相伴而生、天然适配的独特优势,已然成为监控 Kubernetes 的首选。
接下来,围绕 Kubernetes 监控,本文将试着回答下列问题:
为何 Prometheus 是监控 Kubernetes 的“官配”?
“若覆盖不全面,则监控无意义”——此话怎讲?
Kubernetes 常见故障和最佳实践,展开说说?
既然有开源 Prometheus,又何需腾讯云 Prometheus?
Prometheus 的优势
对比其他监控方案,Prometheus 针对 Kubernetes 监控,具有不可替代的优势:
1.Prometheus 和 Kubernetes 彼此原生支持。
Prometheus 对 Kubernetes 的原生支持:Prometheus 可对 Kubernetes 中的目标进行动态发现,大幅简化了监控配置。
Kubernetes 对 Prometheus 的原生支持:Kubernetes 各组件内置 Prometheus 指标暴露,无需引入额外的导出工具。
2.Prometheus 针对云原生环境的独特设计。
针对架构复杂性:传统架构中只有主机和应用两个层面要监控;而 Kubernetes 不仅在两者之间引入了新的抽象层,并且这层 Kubernetes 自身组件也需要被监控。Prometheus 社区的活跃生态(多种 exporter、后端存储、语言 SDK),则能很好地承托 Kubernetes 的全面监控。
针对资源动态性:相比传统监控中的静态主机,Kubernetes 上的 pod 可能频繁被创建和销毁,传统的 Zabbix 等基础设施监控手段显然力不从心。而 Prometheus 可基于服务发现做指标拉取,自动更新监控目标,确保监控数据的实时性和准确性;此外,对于动态环境下的短生命周期任务,Prometheus 除了支持指标拉取,还支持各监控目标向 Prometheus 做指标推送。
针对指标高基数:云原生环境下大都是微服务架构,服务不仅数量多、维度也多,导致承载元数据的标签呈爆炸趋势。而 Prometheus 具备灵活标签的数据模型设计,则提供了很好的分类结构和检索方法,这样,对指标数据的组织将更加灵活、多维、适应变化、方便聚合:
针对查询精细化:强大的查询语言 PromQL,使用户能通过简洁的表达式,高效地检索和处理时间序列数据。PromQL 支持多种数学运算、聚合操作、趋势预测;还可用于绘制精细的可视化图表、管理精细的告警逻辑。
K8s 全栈监控
若覆盖不全面,则监控无意义。
乍一看,Kubernetes 指标似乎没啥特别,仍然跟其他系统类似,包括吞吐率、错误率、延迟和资源饱和度等。
然而,Kubernetes 监控的棘手之处在于:Kubernetes 不是“一个东西”,而是一个由控制平面、节点、Pod、键值存储等多个组件组成的系统。
所以针对 Kubernetes,若缺乏全栈视角和数据关联,又怎能实现故障的快速定位和根因分析呢?
例如:当一个容器 CrashLoopBackoff,它的可能原因有很多、影响范围也不同(如下图所示)。其中,若是底层的宿主机导致,则其影响范围可能不仅限于该特定容器,同宿主机上的其他 Pod 和容器也会受到影响,可能出现性能下降等问题。
为了全面打造 Kubernetes 的指标监控体系,自下而上,我们可以将 Kubernetes 从底层资源到顶层应用,分为 5 个不同的层面,用不同的方法和组件分别采集。接下来,我们将逐层击破,探讨每层监控对象的侧重点、所使用的监控手段、需关注的核心指标,以及如何通过构建可观测性,来保障系统的稳定运行。
宿主机层
宿主机是指用于运行 Kubernetes 节点的底层机器(物理机或 VM)。对其进行监控的核心,在于系统级别的性能指标,包括 CPU 使用率、内存使用情况、磁盘 I/O、网络流量和文件系统使用情况。
对于宿主机指标的导出和暴露,我们可借助 Prometheus 社区提供的开源 exporter 工具来实现,例如:
node-exporter
(监控 *NIX 系统)
windows_exporter
(监控 Windows 系统)
dcgm-exporter
(监控 GPU)
process-exporter
(监控进程)
以 node-exporter
为例,它是以二进制的形式被提供的,下载、安装、运行后,即可在其下述端点观察到暴露的指标:curl http://<宿主机IP>:9100/metrics
。在 Prometheus 将其配置为采集目标后,宿主机指标即可以一定时间间隔,被 Prometheus 定期采集。
在机器资源层面,毫无疑问,我们最关心的指标肯定是:CPU 和内存的利用率、网络出入带宽,等等。
使用 Grafana 可视化 node-exporter
指标,便可以直观展示指标数据、实时监控系统状态。以 Prometheus 为 node-exporter
预设的 Grafana 大盘为例:
而通过 Prometheus 的 AlertManager 组件,基于核心指标配置告警,则可以及时通知运维人员系统异常,确保快速响应和问题解决。
以腾讯云 Prometheus 为 node-exporter
预设的一条 alert 为例:我们可以用 PromQL 语句(1-node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) > 0.85
,表达当内存使用率超过 85% 时,发送告警消息。
K8s 组件层
Kubernetes 自身系统组件暴露的指标,可以让我们更好地了解组件内部的情况。关于 Kubernetes 有哪些系统组件有待监控,我们可以先观察 Kubernetes 架构图:
(在上图中,用户交互的部分 UI 和 CLI 不需要监控;容器引擎 Docker 一般不会出问题;pod 和 container 的监控我们会在后续层次介绍。)
系统组件层面监控的关键,在于 Control Plane(控制面)和 Worker Node(工作负载节点)。
控制面(Control Plane)是集群的大脑,负责管理和调度,若出现问题,将无法向 Kubernetes 下发指令。为了确保其正常运行,需要关注以下关键组件:
kube-apiserver: 负责 Kubernetes 中组件之间的通信。监控其延迟、请求量和错误率可以发现潜在的性能问题。
etcd: 保存所有集群数据的键值存储。监控其磁盘 I/O 和延迟,有助于维护一致性并防止数据瓶颈。
kube-scheduler: 用于将 pod 分配到 node。它跟踪调度延迟和 pod 绑定失败,以确保成功分配工作负载。
kube-controller-manager: 负责管理集群中的控制循环,确保集群的实际状态与用户期望的状态保持一致。
工作负载节点则运行容器及其管理工具,如 Docker、kubelet 和 kube-proxy,若这些节点出现故障,可能直接影响业务流量。
大多数 Kubernetes 组件的指标,都已通过 HTTP /metrics
端点默认暴露。相关组件及其关键指标的示例如下:
kubelet:
kubelet_running_pod_count
用于监控正在运行的 pod,kubelet_container_cpu_usage_seconds_total
用于监控容器 CPU 使用率,等等。
kube-proxy:
kubeproxy_sync_proxy_rules_duration_seconds
用于监控同步代理规则的延迟时间,kubeproxy_connections
用于监控当前活跃的连接数,等等。
kube-apiserver:
apiserver_request_duration_seconds
用于监控请求延迟、apiserver_request_total
用于监控 API 请求的总数,等等。
kube-scheduler:
scheduler_binding_duration_seconds
用于监控绑定延迟,scheduler_e2e_scheduling_duration_seconds
用于监控端到端调度延迟,等等。
kube-controller-manager:
workqueue_adds_total
用于计算项目添加到工作队列的次数,workqueue_queue_duration_seconds
用于计算队列持续时间,等等。
etcd:
etcd_server_has_leader
用于监控领导者是否存在,etcd_disk_wal_fsync_duration_seconds
用于监控预写日志同步持续时间。
同样地,拿到上述指标后,我们可为其配置大盘和告警。
以 Prometheus 为 kube-apiserver
预设的 Grafana 大盘为例:
以腾讯云 Prometheus 为 kubelet 预设的监控客户端证书过期的 alert 为例:
K8s 资源层
对于 Kubernetes 资源层,我们可以安装和使用 kube-state-metrics
这一组件,来监控 Kubernetes 的各类对象的状态(如 Service、Deployment、StatefulSet、Node 等)。
kube-state-metrics
是一个简单的服务,它通过监听 kube-apiserver
,订阅各类资源对象的变更,由此获取它们的状态(例如:某个 Deployment 期望的副本数、实际运行的 Pod 数量,等等),并对外暴露为指标。
由于 kube-state-metrics
并未被 Kubernetes 默认集成,因此在使用它之前我们需要先自行部署在 Kubernetes 集群中,以对集群中的资源状态进行监控。
kube-state-metrics
提供的常用指标示例如下:
kube_node_status_condition:node 节点的状态,可用来监控节点不正常或存在磁盘压力等问题。
kube_pod_container_status_last_terminated_reason:容器停止的原因。
kube_pod_container_status_waiting_reason:容器处于等待状态的原因,如 CrashLoopBackoff 等。
kube_pod_container_status_restarts_total:容器的重启次数。
kube_deployment_spec_replicas:deployment 配置中期望的副本数。
kube_deployment_status_replicas_available:deployment 实际可用的副本数。
有了上述指标,我们可以为所关心的 Kubernetes 资源(如 Pod、Deployment、Statefulset 等)配置相应的 Grafana 大盘。
以腾讯云 Prometheus 为 Pod 预设的 Grafana 大盘为例:
也可为各类 Kubernetes 资源配置告警规则,以腾讯云 Prometheus 预设的监控 pod 状态的 alert 为例,其表达式如下,代表某 pod 若处于 NotReady
状态超过 15 分钟,则发出告警通知:
K8s 容器层
在 Kubernetes 容器层,我们可以利用 cAdvisor 这一监控工具,实时监测节点上容器的资源使用情况,包括 CPU、内存、磁盘和网络等。
cAdvisor(Container Advisor)是 Google 开源的工具,专注于监测容器的资源使用和性能表现。由于其强大的监控功能,Kubernetes 已默认将 cAdvisor 与 Kubelet 集成,因此无需单独部署 cAdvisor 组件,我们就可通过 kubelet 为其暴露的指标采集地址(/metrics/cadvisor
),来获取容器运行信息。
cAdvisor 的常用指标多与 CP 内存、IO 等资源相关,例如:container_cpu_load_average_10s(过去十秒内容器 CPU 负载平均的值)、container_memory_usage_bytes(容器内存使用情况)……等等。
有了这些指标,我们即可为容器维度的 CPU、内存等资源状况构建 Grafana 大盘。
以腾讯云 Prometheus 预设的容器维度的大盘为例:
以腾讯云 Prometheus 预设的告警模板为例,可使用下述 PromQL 表达式,规定当容器的 CPU 使用率超过 80% 时,触发告警:
业务应用层
对于业务监控(例如订单数、在线用户数等)和应用监控(例如延迟、吞吐量、错误率),由于都需要从应用程序侧来实现,所以本文将这两个层面的监控统称为”业务应用层“。这类指标不仅可以帮助了解系统的健康状况,还可以为业务决策提供数据支持。
在监控业务和应用层指标时,可通过三种方式来实现指标暴露:
通过 Prometheus SDK 埋点:
使用 Prometheus 提供的 SDK 进行指标埋点,既可以在应用程序的业务逻辑中进行埋点,也可以通过框架层进行自动化埋点。
优点:性能更好、灵活性高,能够实时反映应用的状态和性能。
缺点:对应用程序有侵入性,需要修改代码。
通过 Exporter 暴露指标:
借助 Prometheus 生态的 exporter,将应用程序的指标导出。例如,使用 jmx_exporter 为 Java 程序暴露 JVM 指标和 Java 应用指标。
优点:对应用程序的侵入性较低。
缺点:需要额外的 exporter,可能引入运维开销和性能开销。
从日志中提取指标:
通过分析应用程序生成的日志文件,从中提取出有价值的指标,通常依赖于日志分析工具来处理和提取指标。
优点:对应用程序无侵入性,不需要修改代码。
缺点:链路较长,性能较差;依赖日志,对日志数据的规范性要求高。
得到上述指标后,便可灵活定义自己的业务和应用监控大盘:
我们也可以使用 PromQL,灵活定义告警规则,例如我们可以定义一个关于订单支付延时的告警:
K8s 排障实践
接下来,我们将一起探讨常见的 Kubernetes 故障及其根因,并从具体案例出发,分析如何借助 Prometheus,对 K8s 进行全面排障。
K8s 常见故障
常见的 Kubernetes 故障,从来源划分,可分为三个大类:Workload 故障、Network 故障和 K8s core 故障。
Workload 故障 是指运行在 Kubernetes 集群中的应用程序或服务出现的问题。这些故障可能影响应用的可用性、性能或功能。
常见原因:
Pod 崩溃: 应用程序崩溃或异常退出,导致 Pod 不可用。
资源不足: CPU、内存等资源不足,导致应用无法正常运行。
配置错误: 配置文件或环境变量错误,导致应用无法启动或运行不正常。
依赖服务故障: 应用依赖的外部服务(如数据库、API)出现故障,影响应用的正常运行。
Network 故障 是指 Kubernetes 集群中网络层面的问题,影响 Pod 之间、Pod 与外部服务之间的通信。
常见原因:
网络插件故障: 使用的网络插件(如 Calico、Flannel)出现问题,导致网络不通。
DNS 解析失败: Kubernetes 的 DNS 服务出现故障,导致 Pod 无法解析其他服务的名称。
网络策略限制: 网络策略配置错误,导致 Pod 之间的通信被阻止。
负载均衡器故障: 外部负载均衡器或 Ingress 控制器出现问题,影响外部流量的路由。
K8s Core 故障 是指 Kubernetes 集群的核心组件(如 API 服务器、调度器、控制器管理器等)出现的问题,影响整个集群的管理和调度能力。常见原因:
API 服务器不可用: API 服务器故障导致无法与集群进行交互,无法创建、更新或删除资源。
调度器故障: 调度器出现问题,导致新创建的 Pod 无法被调度到合适的节点上。
etcd 故障: etcd 是 Kubernetes 的数据存储,如果 etcd 出现故障,可能导致集群状态丢失或无法访问。
控制器管理器故障: 控制器管理器出现问题,可能导致集群中的资源无法正常管理和维护。
排障案例
如果我们采访 K8s 运维工程师,问他们最常见、最头疼的 K8s 故障是啥,那么遥遥领先的必然是这俩:
Pod 处于 pending 状态。
容器处于 CrashLoopBackOff 状态。
接下来,我们就以上述故障为例,说明我们如何用 Prometheus 对 K8s 进行全面监控,来及时识别和分析这类故障的根因及影响范围。
Pod Pending
一个 Pod 生命周期的不同阶段如下图所示:
如果一切顺利的话:
当 Pod 被创建时,它处于 Pending 阶段。
一旦 Pod 被调度并且容器已启动,Pod 会转变为 Running 阶段。
大多数 Pod 从 Pending 到 Running 的过程只需几秒钟,表示该 Pod 已被成功调度到集群节点,并启动容器。
而不幸的是,有些 Pod 无法从 Pending 转为 Running 状态,而是一直卡在了 Pending,正如我们经常碰到的那样:
Pod 卡在 Pending 状态,最常见的原因是它无法被正常调度到节点,其次是镜像下载问题,此外还可能是依赖问题(volume、configmap 等)。
就拿最为常见的,由于 Pod 无法被正常调度而卡在 Pending 状态的案例来说,它的常见原因如下:
资源限制:如果集群缺乏足够的资源(CPU 或内存),调度器无法将 Pod 放置在任何节点上,导致 Pod 处于 Pending 状态。
污点和容忍度:带有污点的节点会排斥 Pod,除非 Pod 具有匹配的容忍度。
亲和性/反亲和性规则:严格的 Pod 亲和性或反亲和性规则,可能会限制 Pod 可以调度到的节点。
节点选择器标签:Pod 可能被配置为仅在具有特定标签的节点上调度。如果没有节点匹配,Pod 将保持未调度状态。
存储要求:需要特定 PersistentVolumeClaims(PVCs)的 Pod,如果无法满足这些要求,也可能会处于 Pending 状态。
为了主动得知 Pod Pending 状态,我们在使用 Prometheus 监控 K8s 集群时,可以设置相应的告警规则。例如:
容器 CrashLoopBackOff
CrashLoopBackOff
代表了 Pod 中的 container 的异常状态:它正在发生永无止境的崩溃循环。
当 Pod 中的容器崩溃,且 Pod 的重启策略设置为 Always 时,Kubernetes 将继续尝试重启容器;但如果容器继续崩溃,它就会 CrashLoopBackOff,不断陷入启动-崩溃-启动-崩溃的循环,只不过在重启之间等待越来越长的 backoff 时间。
关于 CrashLoopBackOff 的根因,几个主要原因包括:
Pod 内存不足:每个 Pod 都有指定的内存空间。当 Pod 被分配的内存少于它实际运行所需的内存时,可能会导致内存不足的情况。此外,如果 Pod 中存在错误,导致在运行过程中不断消耗内存空间(例如,内存泄漏),也会使得可用内存逐渐减少,最终导致容器崩溃,从而触发 CrashLoopBackOff。
探针检查失败:Kubelet 使用探针来检查容器的状态,包括存活探针和启动探针。如果这些探针的检查失败,Kubelet 会认为容器不健康并进行重启。频繁的重启会导致容器进入 CrashLoopBackOff 状态,尤其是在探针配置不当或应用程序未能及时响应时。
应用程序自身的问题:容器内的应用程序可能由于代码错误、配置不当、依赖项缺失或其他运行时异常而不断崩溃。这种情况会导致容器无法稳定运行,从而引发 CrashLoopBackOff。开发人员需要仔细检查应用程序的日志,以识别和修复导致崩溃的根本原因。
若要主动获知容器的 CrashLoopBackoff 状态,可通过 Prometheus 指标 kube_pod_container_status_waiting_reason{reason="CrashLoopBackOff"}
,设置告警规则,例如:
最佳实践
通过以下最佳实践,可以帮助我们有效地监控和管理 Kubernetes 集群,确保其稳定高效运行:
全面的可观测工具:如前文所述,我们可以使用 Prometheus 作为主要工具,针对 Kubernetes 的各个层次,进行全栈指标监控。除此之外,围绕可观测性三大支柱——指标、日志和链路追踪——所搭建的全面可观测性,能进一步帮助及时发现和解决集群中的问题。
像腾讯云可观测平台这样的统一平台,即可用于全面收集和分析可观测数据,并形成可视化和告警,以最大限度地维护 Kubernetes 环境的稳定高效运行。
合理设置告警:针对需要及时采取行动的关键指标的异常表现,合理配置告警规则,以便及时响应 Kubernetes 集群中的异常变化。例如:通过密切跟踪节点和 Pod 的指标,及早发现性能问题并采取措施,以防止更大范围的系统故障。
统一可视化大盘:借助 Grafana 等可视化工具,将监控数据收拢到统一的大盘,以进行直观的展示和分析。实时跟踪资源水位和性能指标,能及时发现资源分配不当导致的性能下降或不必要的成本;观察指标时序变化趋势,能快速识别潜在的瓶颈和异常;一目了然的全栈多维数据,还能为资源优化和扩展决策提供有力支持。
自动扩缩容:利用 Kubernetes 的水平 Pod 自动扩展器 (HPA) 和集群自动扩展器,我们能根据实时工作负载需求,自动调整 Pod 和节点的数量,以减少异常事件且合理利用资源。HPA 通常基于 CPU 和内存等内置指标进行扩展。若引入 Prometheus Adapter,则可将 Prometheus 中的自定义指标也整合进 HPA,使其能够基于更丰富的指标进行决策。
优化 Pod 配置:基于实际应用需求配置 Pod 模板中的 CPU 和内存请求/限制,以避免过度分配;合理使用节点和 Pod 的亲和性/反亲和性规则,以平衡工作负载,避免限制调度的灵活性。
腾讯云 Prometheus
腾讯云 Prometheus 是基于开源 Prometheus 构建的高可用、全托管的服务,与腾讯云容器服务(TKE)高度集成,兼容开源生态丰富多样的应用组件,结合腾讯云可观测平台的告警功能和 Prometheus Alertmanager 能力,为用户提供免搭建的高效运维能力,减少开发及运维成本。
相比开源 Prometheus,腾讯云 Prometheus 具备如下优势:
接下来,我们将从高可用、免运维、云集成、易用性等等几个方面,展开来介绍腾讯云 Prometheus 的优势。
高可用性
开源 Prometheus 最常被诟病的问题是单点故障、水平扩展困难;当海量并发到来,很可能监控系统自身先被冲垮,则对业务系统的监控和预警更是无从谈起。
针对上述问题,腾讯云 Prometheus 在腾讯云底层的海量算力和存储能力之上,又基于 TKE 的容器化、弹性伸缩等云原生能力,自研落地了一套分布式、集群化、存算分离的技术架构,以及高可用、高效率的采集节点调度方案和存储节点分片方案。
通过集群化的采集和存储机制,解决了开源 Prometheus 单机大实例无法扩展的问题。
数据存储采用分片机制,查询组件能够对多个存储节点的数据进行聚合计算,确保最终结果准确返回给用户。
通过多节点集群避免单点故障,并支持弹性扩缩容。
分布式和集群化的轻量采集器在多个节点上运行,即使某个节点发生故障,其他节点仍能继续采集数据。
operator 通过一致性哈希实现对采集目标的负载均衡,确保 targets 的有效分片和分发。
灵活可扩展,支持 agent 模式、自建 Prometheus 数据上报,以及 Remote Write 和 Pushgateway 协议。
开箱即用 免运维
腾讯云 Prometheus 免去了用户自行安装和维护第三方组件(如 kube-state-metrics
和各种 exporter)的麻烦。用户不仅无需担心组件的兼容性和更新问题,还可通过控制台,一键集成对各种主流云产品和三方组件的监控。
云集成
云上产品,就用云上监控:腾讯云 Prometheus 已与腾讯云的其他产品实现了深度集成。
一键关联腾讯云 Kubernetes 集群监控,勾选常用 Kubernetes 指标。
一键勾选云上产品、开启 Prometheus 监控。提供自动服务发现、指标采集、以及预设 Grafana 大盘。
与 APM(应用性能管理)、PTS(性能测试服务)、CLS(云日志服务)等腾讯云产品实现了可观测数据打通,提供全面的监控和分析能力。
易用性
相比开源 Prometheus,腾讯云 Prometheus 通过腾讯云控制台,提供了友好的用户界面,用户无需依赖 YAML 文件进行配置,降低了使用门槛。
并且,腾讯云 Prometheus 内置了预设的大盘和告警模板,用户可以快速上手并进行监控设置。
此外,实例诊断功能使得用户能够轻松识别和解决潜在问题,提升了整体的使用体验:
安全合规
腾讯云 Prometheus 在安全性方面进行了增强,提供了多层次的安全防护措施,包括数据加密、访问控制和审计日志等。这些安全特性确保了用户监控数据的安全性和隐私保护,符合行业合规要求,特别适合对数据安全有高要求的企业用户。
技术支持
腾讯云为 Prometheus 用户提供了专业的技术支持服务,用户可以通过腾讯云的支持渠道获得及时的帮助和指导,使得用户在遇到问题时能够得到快速的响应和解决。
持续创新
腾讯云 Prometheus 不仅追随开源社区,不断进行技术更新和功能迭代;还结合用户反馈和市场需求,持续推出新特性和优化。
除此之外,腾讯云 Prometheus 团队还基于自身应对海量数据的经验,积极贡献代码,回馈 Prometheus 开源社区。例如:
当错误量较大时,优化 Cortex distributor 的内存使用量以避免 OOM。
优化 Prometheus 重启时的性能,将 WAL 加载的速度提升 20%~50%。
修复 Prometheus 停机快照时的 race condition 问题,避免数据被覆盖而丢失。
提高 Thanos 索引读取性能的优化。
Prometheus 标签 relabel 优化。
Grafana 支持企业微信作为告警渠道。
结语
在 Kubernetes 监控的复杂环境中,Prometheus 已成为 Kubernetes 平台的标配,以及实现全面可观测性的首选。
本文还介绍了腾讯云 Prometheus 相比开源版本的独特优势,如高可用、免运维、易用性等等。这些优势使客户在享受开源灵活性的同时,获得企业级的支持和保障。
同时,通过将创新性的高可用经验回馈给 Prometheus 开源社区,腾讯云 Prometheus 不仅推动了自身产品的进步,也为整个开源生态的健康发展贡献了力量。
我们诚邀您体验 腾讯云 Prometheus(15 天免费试用),借助其强大的监控能力和企业级支持,助力您的 Kubernetes 环境实现更高效的可观测性和稳定性。
联系我们
如有任何疑问,欢迎加入官方技术交流群
版权声明: 本文为 InfoQ 作者【腾讯云可观测平台】的原创文章。
原文链接:【http://xie.infoq.cn/article/3559c499029f4bf58db28c6d4】。文章转载请联系作者。
评论