简介:近年来,Kubernetes 作为泛滥公司云原生革新的首选容器化编排平台,越来越多的开发和运维工作都围绕 Kubernetes 开展,保障 Kubernetes 的稳定性和可用性是最根底的需要,而这其中最外围的就是如何无效地监控 Kubernetes 集群,保障整个集群的一个良好的可察看性。本期将为大家介绍 Kubernetes 的监控计划。
前言
近年来,Kubernetes 作为泛滥公司云原生革新的首选容器化编排平台,越来越多的开发和运维工作都围绕 Kubernetes 开展,保障 Kubernetes 的稳定性和可用性是最根底的需要,而这其中最外围的就是如何无效地监控 Kubernetes 集群,保障整个集群的一个良好的可察看性。本期将为大家介绍 Kubernetes 的监控计划。
监控计划指标
目前存在多套的 Kubernetes 监控计划,但理论施行起来可能会遇到很多问题,例如计划部署难、监控指标不准、没有适合的大盘、不晓得哪些指标须要哪些不须要、数据太多很卡等等。其实这些问题的实质上还是因为 Kubernetes 的架构绝对规范的虚拟机 / 物理机的形式要简单很多,而面对简单零碎,就须要咱们去做十分多的工作,例如:
- 明确监控指标:K8s 外部的各类零碎组件:APIServer、ETCD、Scheduler、Controller Manager、Kubelet 等;K8s 底层,例如虚拟机、物理机的监控;K8s 之上的业务 / 进口等
- 相干监控数据采集:例如部署 kube-state-metrics 采集 K8s 内资源对象的数据;通过 kubelet 裸露的 prometheus 端口拉取运行的 Pod、容器指标;通过 service 端口采集 APIServer、ETCD、Scheduler 等组件的指标
- 后端建设:搭建数据存储、可视化、告警等后端服务
- 内容建设:配置监控大盘、问题排查教训、每个组件监控的黄金指标、告警模板等
- 计划稳定性建设:包含数据采集、存储、可视化、告警等服务的品质监控和保护
SLS 全栈监控计划
SLS 作为阿里可观测性数据引擎,具备可观测数据日志、指标、分布式链路追踪、事件等的一站式采集和存储。为了便于用户疾速接入和监控业务零碎,SLS 提供了全栈监控的 APP,将各类监控数据汇总到一个实例中进行对立的治理和监控。全栈监控基于 SLS 的监控数据采集、存储、剖析、可视化、告警、AIOps 等能力构建,具体性能如下:
- 实时监控各类零碎,包含主机监控、Kubernetes 监控、数据库监控、中间件监控等。
- 反对 ECS、K8s 一键装置,反对图形化的监控配置管理,无需登录主机配置采集监控项。
- 运维老司机多年教训的报表总结,包含资源总览、水位监控、热点剖析、具体指标等数十个报表。
- 反对自定义的剖析,反对包含 PromQL、SQL92 等多种剖析语法。
- 反对对接 AIOps 指标巡检,利用机器学习技术主动发现异常指标。
- 反对自定义告警配置,告警告诉间接对接音讯核心、短信、邮件、语音(电话)、钉钉,并反对对接自定义 WebHook。
Kubernetes 监控最佳实际
SLS 全栈监控曾经内置了对于 Kubernetes 监控的反对,并且解决了十分多的 Kubernetes 监控的痛点需要,例如:
- 部署简略,只须要一条命令就能够部署残缺的 Kubernetes 监控计划
- 应用简略,内置了多种 Kubernetes 以及上下游相干的监控报表,开箱即用
- 运维简略,所有的监控数据、报表、告警等后端都是云化,只须要按量付费即可,无需去运维监控的实例
- 覆盖面全,监控范畴包含 Kubernetes 中的各种内置组件,也包含相关联的主机、中间件、数据库等监控
部署
SLS 全栈监控的 Kubernetes 部署形式绝对比较简单,只须要依照接入页面中的提醒,装置 AliyunLogConfig 自定义资源和监控组件,两个装置步骤只须要执行两个命令即可。
相干参考(1. 创立全栈监控实例;2. 创立 Kubernetes 监控)
应用
Kubernetes 监控部署结束后就会主动部署采集 Agent 并采集监控数据到云端,默认采集的监控数据有:
- Kubernetes 零碎的元数据信息,例如节点、Pod、Deployment 等配置信息
- Kubernetes 零碎组件的监控数据,包含 APIServer、ETCD、Kubelet 等
- Kubernetes 上运行的 Deployment、StatefullSet、DaemonSet、Pod、容器指标信息
- 节点的根底指标,例如节点 CPU、内存、网络、磁盘 IO 等
数据采集到云端后,SLS 全栈监控会默认提供一系列的 Dashboard 模板,包含集群级、利用级(Deployment、StatefullSet、DaemonSet 等)、Pod 级各类指标,绝大部分场景的监控只须要应用内置的 Dashboard 大盘即可,内置大盘次要有:
1- 集群级监控实际
在 K8s 迭代了数十个版本后,集群自身的稳定性个别不须要关怀,绝大部分状况下,都是应用的不合理影响了集群的稳定性。通常状况下,集群级别监控只须要关注集群中运行的利用数量变动以及相干的水位变动。这里最常见的是应用《资源总览》、《水位监控》和《运行时监控》。其中
- 资源总览中可能查看每个资源的总数以及和前一天相比的变动状况,用来监控是否有一些疾速变动的资源呈现
- 水位监控中次要显示集群中可能申请的 Pod、CPU、内存资源以及以后的申请率信息,避免达到水位下限
- 运行时监控中次要显示集群中的 Deployment、StatefullSet、Pod、Container 的变动状况
2- 零碎组件监控实际
同样,K8s 的零碎组件监控,通常只须要关怀其中应用局部的不合理即可,因而只须要查看其中 APIServer 和 ETCD 的局部,避免有十分多的额定资源和拜访导致 APIServer 或 ETCD 申请过慢。
3- 利用根底指标监控
全栈监控默认提供了 Node、Pod、Deployment、DaemonSet、StatefullSet 的根底指标监控,所有这些资源都包含列表的 Overview 指标以及详情的 Detail 指标,而且各个相关联的资源还反对跳转关系,例如:所有的列表反对跳转到详情的 Detail 指标、Node 中反对关联运行的 Pod 指标、Deployment/DaemonSet/StatefullSet 反对跳转关联 Pod。
4- 热点监控
热点监控次要辅助咱们疾速找到“离群”的机器,避免因为局部机器成为热点,导致该机器上利用响应变慢,以至于影响整个集群的性能。在找到热点机器后,还能够通过改机器的 IP,跳转到对应 Node 的具体指标中,查看热点具体是由该节点上哪个 Pod 引起。
小结
本文次要关注在 Kubernetes 的监控计划上(如何接入可参考《全栈监控阐明》),从监控的问题发现到定位其实还有很多的工作须要做,还须要更多的可观测性数据来撑持,后续咱们会介绍,如何利用多种可观测数据来帮助排查和定位 Kubernetes 中的各类问题,敬请期待。
原文链接
本文为阿里云原创内容,未经容许不得转载。