简介:近年来,Kubernetes作为众多公司云原生改造的首选容器化编排平台,越来越多的开发和运维工作都围绕Kubernetes展开,保证Kubernetes的稳定性和可用性是最基础的需求,而这其中最核心的就是如何有效地监控Kubernetes集群,保证整个集群的一个良好的可观察性。本期将为大家介绍Kubernetes的监控方案。

前言

近年来,Kubernetes作为众多公司云原生改造的首选容器化编排平台,越来越多的开发和运维工作都围绕Kubernetes展开,保证Kubernetes的稳定性和可用性是最基础的需求,而这其中最核心的就是如何有效地监控Kubernetes集群,保证整个集群的一个良好的可观察性。本期将为大家介绍Kubernetes的监控方案。

监控方案目标

目前存在多套的Kubernetes监控方案,但实际实施起来可能会遇到很多问题,例如方案部署难、监控指标不准、没有合适的大盘、不知道哪些指标需要哪些不需要、数据太多很卡等等。其实这些问题的本质上还是因为Kubernetes的架构相对标准的虚拟机/物理机的方式要复杂很多,而面对复杂系统,就需要我们去做非常多的工作,例如:

  1. 明确监控目标:K8s内部的各类系统组件:APIServer、ETCD、Scheduler、Controller Manager、Kubelet等;K8s底层,例如虚拟机、物理机的监控;K8s之上的业务/出口等
  2. 相关监控数据采集:例如部署kube-state-metrics采集K8s内资源对象的数据;通过kubelet暴露的prometheus端口拉取运行的Pod、容器指标;通过service端口采集APIServer、ETCD、Scheduler等组件的指标
  3. 后端建设:搭建数据存储、可视化、告警等后端服务
  4. 内容建设:配置监控大盘、问题排查经验、每个组件监控的黄金指标、告警模板等
  5. 方案稳定性建设:包括数据采集、存储、可视化、告警等服务的质量监控和维护

SLS全栈监控方案

SLS作为阿里可观测性数据引擎,具备可观测数据日志、指标、分布式链路追踪、事件等的一站式采集和存储。为了便于用户快速接入和监控业务系统,SLS提供了全栈监控的APP,将各类监控数据汇总到一个实例中进行统一的管理和监控。全栈监控基于SLS的监控数据采集、存储、分析、可视化、告警、AIOps等能力构建,详细功能如下:

  • 实时监控各类系统,包括主机监控、Kubernetes监控、数据库监控、中间件监控等。
  • 支持ECS、K8s一键安装,支持图形化的监控配置管理,无需登录主机配置采集监控项。
  • 运维老司机多年经验的报表总结,包括资源总览、水位监控、热点分析、详细指标等数十个报表。
  • 支持自定义的分析,支持包括PromQL、SQL92等多种分析语法。
  • 支持对接AIOps指标巡检,利用机器学习技术自动发现异常指标。
  • 支持自定义告警配置,告警通知直接对接消息中心、短信、邮件、语音(电话)、钉钉,并支持对接自定义WebHook。

Kubernetes监控最佳实践

SLS全栈监控已经内置了对于Kubernetes监控的支持,并且解决了非常多的Kubernetes监控的痛点需求,例如:

  1. 部署简单,只需要一条命令就可以部署完整的Kubernetes监控方案
  2. 使用简单,内置了多种Kubernetes以及上下游相关的监控报表,开箱即用
  3. 运维简单,所有的监控数据、报表、告警等后端都是云化,只需要按量付费即可,无需去运维监控的实例
  4. 覆盖面全,监控范围包括Kubernetes中的各种内置组件,也包括相关联的主机、中间件、数据库等监控

部署

SLS全栈监控的Kubernetes部署方式相对比较简单,只需要按照接入页面中的提示,安装AliyunLogConfig自定义资源和监控组件,两个安装步骤只需要执行两个命令即可。

使用

Kubernetes监控部署完毕后就会自动部署采集Agent并采集监控数据到云端,默认采集的监控数据有:

  1. Kubernetes系统的元数据信息,例如节点、Pod、Deployment等配置信息
  2. Kubernetes系统组件的监控数据,包括APIServer、ETCD、Kubelet等
  3. Kubernetes上运行的Deployment、StatefullSet、DaemonSet、Pod、容器指标信息
  4. 节点的基础指标,例如节点CPU、内存、网络、磁盘IO等

数据采集到云端后,SLS全栈监控会默认提供一系列的Dashboard模板,包括集群级、应用级(Deployment、StatefullSet、DaemonSet等)、Pod级各类指标,绝大部分场景的监控只需要使用内置的Dashboard大盘即可,内置大盘主要有:

仪表盘

说明

资源总览

用于实时可视化展示主机配置信息和指标信息的总体情况,包括CPU核数、磁盘总空间、CPU平均使用率、内存平均使用率等。

主机列表

用于实时可视化展示每台主机的配置信息和指标信息,包括CPU核数、内存、CPU使用率、内存使用率等。

热点分析

用于实时可视化热点机器的CPU、内存等资源使用情况,包括CPU热点指标分布、内存热点指标分布、Top CPU使用率、Top 内存使用率等。

单机指标-简

用于实时可视化展示主机的CPU、内存等资源的使用趋势,包括CPU使用率、磁盘空间使用率、内存使用率等。

单机指标-详

用于实时可视化展示主机的CPU、内存等资源处于不同状态的使用趋势,包括CPU(处于Total、System、User、IOWait状态的CPU使用趋势)、内存(处于Total、Availableused、Used状态的内存使用趋势)等。

资源总览

用于实时可视化展示Kubernetes中资源的使用情况,包括Pod、Host、Service、Deployment等。

水位监控

用于实时可视化展示Kubernetes中资源的水位情况,包括Pod运行数、CPU总数、文件系统使用量等。

运行时监控

用于实时可视化展示Kubernetes中处于运行状态的资源信息,包括Deployment运行数量、Daemonset运行数量等。

核心组件监控

用于实时可视化展示Kubernetes中核心组件的相关数据,包括ETCD对象数、ETCD请求QPS等。

Node列表

用于实时可视化展示Node的整体情况以及每个Node的配置信息和指标信息,包括Node总数、运行中的Pod总数等。

Node指标

用于实时可视化展示Node的指标信息,包括可申请Pod数量、CPU使用率等。

Pod列表

用于实时可视化展示Pod的整体情况以及每个Pod的配置信息和指标信息,包括可申请的Pod总数等。

Pod指标

用于实时可视化展示Pod的指标信息,包括Pod基本信息、容器基础信息等。

Deployment列表

用于实时可视化展示每个Deployment的配置信息和指标信息,包括Deployment所属命名空间、集群等。

Deployment指标

用于实时可视化展示Deployment的指标信息,包括CPU Limit使用率、内存Limit使用率等。

StatefulSet列表

用于实时可视化展示每个StatefulSet的配置信息和指标信息,包括StatefulSet所属命名空间、集群等。

StatefulSet指标

用于实时可视化展示StatefulSet的指标信息,包括CPU Limit使用率、内存Limit使用率等。

DaemonSet列表

用于实时可视化展示每个DaemonSet的配置信息和指标信息,包括DaemonSet所属命名空间、集群等。

DaemonSet指标

用于实时可视化展示DaemonSet的指标信息,包括CPU Limit使用率、内存Limit使用率等。

1-集群级监控实践

在K8s迭代了数十个版本后,集群本身的稳定性一般不需要关心,绝大部分情况下,都是使用的不合理影响了集群的稳定性。通常情况下,集群级别监控只需要关注集群中运行的应用数量变化以及相关的水位变化。这里最常见的是使用《资源总览》、《水位监控》和《运行时监控》。其中

  1. 资源总览中能够查看每个资源的总数以及和前一天相比的变化情况,用来监控是否有一些快速变化的资源出现
  2. 水位监控中主要显示集群中能够申请的Pod、CPU、内存资源以及当前的申请率信息,防止到达水位上限
  3. 运行时监控中主要显示集群中的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中的各类问题,敬请期待。

原文链接

本文为阿里云原创内容,未经允许不得转载。

简单、有效、全面的Kubernetes监控方案的更多相关文章

  1. Kubernetes 监控方案之 Prometheus Operator(十九)

    目录 一.Prometheus 介绍 1.1.Prometheus 架构 1.2.Prometheus Operator 架构 二.Helm 安装部署 2.1.Helm 客户端安装 2.2.Tille ...

  2. kubernetes 监控方案之:heapster+influxdb+grafana(十八)

    目录 一.Heapster 介绍 二.部署 三.使用 heapster 已经 deprecated 了:https://github.com/kubernetes/heapster,所以下面的演示主要 ...

  3. Kubernetes监控:部署Heapster、InfluxDB和Grafana

    本节内容: Kubernetes 监控方案 Heapster.InfluxDB和Grafana介绍 安装配置Heapster.InfluxDB和Grafana 访问 grafana 访问 influx ...

  4. kubernetes监控终极方案-kube-promethues

    kube-promethues简介 前面我们学习了Heapster+cAdvisor方式监控,这是Prometheus Operator出现之前的k8s监控方案.后来出现了Prometheus Ope ...

  5. 【译】Kubernetes监控实践(2):可行监控方案之Prometheus和Sensu

    本文介绍两个可行的K8s监控方案:Prometheus和Sensu.两个方案都能全面提供系统级的监控数据,帮助开发人员跟踪K8s关键组件的性能.定位故障.接收预警. 拓展阅读:Kubernetes监控 ...

  6. 详解k8s一个完整的监控方案(Heapster+Grafana+InfluxDB) - kubernetes

    1.浅析整个监控流程 heapster以k8s内置的cAdvisor作为数据源收集集群信息,并汇总出有价值的性能数据(Metrics):cpu.内存.网络流量等,然后将这些数据输出到外部存储,如Inf ...

  7. 详解k8s原生的集群监控方案(Heapster+InfluxDB+Grafana) - kubernetes

    1.浅析监控方案 heapster是一个监控计算.存储.网络等集群资源的工具,以k8s内置的cAdvisor作为数据源收集集群信息,并汇总出有价值的性能数据(Metrics):cpu.内存.netwo ...

  8. Kubernetes 集群和应用监控方案的设计与实践

    目录 Kubernetes 监控 监控对象 Prometheus 指标 实践 节点监控 部署 Prometheus 部署 Kube State Metrics 部署 Grafana 应用如何接入 Pr ...

  9. 最全面的 C++ 资源、框架大全

    转载自   http://www.codeceo.com/article/cpp-resource-framework.html#0-tsina-1-99850-397232819ff9a47a7b7 ...

  10. kubernetes监控-prometheus(十六)

    监控方案 cAdvisor+Heapster+InfluxDB+Grafana Y 简单 容器监控 cAdvisor/exporter+Prometheus+Grafana Y 扩展性好 容器,应用, ...

随机推荐

  1. IDEA设置Maven华为镜像仓库

    国内开发者由于网络原因,直接从中央仓下载第三包速度较慢或不稳定,使用国内镜像站可以很好解决该问题. 下面就介绍下如何将华为开源镜像站配置为maven的默认第三方库下载源. 1.打开系统用户目录&quo ...

  2. Linux DISPLAY环境变量的妙用(error:QXcbConnection: Could not connect to display) ,xhost 命令, 通过ssh连接显示界面

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...

  3. Flutter Chanel通信流程

    目录介绍 01.flutter和原生之间交互 02.MethodChanel流程 03.MethodChanel使用流程 04.MethodChanel代码实践 05.EventChannel流程 0 ...

  4. OkHttp请求耗时统计

    目录介绍 01.先提问一个问题 02.EventListener回调原理 03.请求开始结束监听 04.dns解析开始结束监听 05.连接开始结束监听 06.TLS连接开始结束监听 07.连接绑定和释 ...

  5. 记录--记一次前端CSS升级

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 目前平台前端使用的是原生CSS+BEM命名,在多人协作的模式下,容易出现样式冲突.为了减少这一类的问题,提升研效,我调研了业界上主流的7种 ...

  6. tableau日常使用小技巧

    一.设置数值自定义格式为万 0"."0,"万" #"."#, 万 二.

  7. execute immediate 用法小结

    1.常规用法 v_sql varchar2(1000); v_sql := 'update Test set name= ''lw112190'' where id= 1'; execute imme ...

  8. JS 为什么0==““ 会是true

    0 是逻辑的 false 1 是逻辑的 true空字符串是逻辑的 false null 是逻辑的 false NaN==任何 都是false 所以:空字符串是逻辑的 false , 0是逻辑的fals ...

  9. 表的唯一约束的作用 KingbaseES VS Oracle

    背景 演示唯一约束怎样创建.删除.禁用和使用唯一性约束,已经多种数据库的差异. 什么是唯一约束 唯一性约束指表中一个字段或者多个字段联合起来可以唯一标识一条记录的约束, 字段中,可以包括空值. 唯一性 ...

  10. python爬虫配置随机请求头headers伪装User-Agent

    python爬虫随机headers伪装fake_useragent fake_useragent 库 调用方法ua.random可以随机返回一个headers(User-Agent) from fak ...