关于k8s集群监控

https://blog.csdn.net/u011230692(集群监控系统相关介绍)

信息搜集:kube-state-metrics/Prometheus/cAdvisor

其中cAdvisor是k8s原生的集群监控软件

信息展示:Grafana

.
.
.

docker stats命令查看内存使用情况

该命令从下面的路径中的文件进行内存信息读取

/sys/fs/cgroup/memory/docker/

其中./memory.stat中存放了一下信息
关于k8s集群监控_第1张图片

这种信息获取方式时docker原生的,其缺点是:只能统计当前宿主机的所有容器,数据是实时的,没有存储,没有报警,没有可视化。

默认时stats命令会每隔1秒钟刷新一次,如果只看当前状态:docker stats --no-stream

cAdvisor

为了解决docker stats的存储和展示的相关问题,谷歌提出了开源项目cadvisor,cAdvisor可以对节点机器上的资源及容器进行实时监控和性能数据采集,包括CPU使用情况内存使用情况网络吞吐量文件系统使用情况

利用Linux的cgroups获取容器的资源使用信息
在K8S中集成在Kubelet里作为默认启动项,官方标配。

kube-state-mestrics

功能:(将prometheus中可以用PromQL查询到的指标数据转换成k8s对应的数,也就是将prometheus的metrics数据格式转换成k8s API接口能识别的格式)
kube-state-mestrics可以实现的新功能:

  1. 调度了多少个replicas,当前可用的有几个
  2. 各个pod的状态(running/stopped/terminated)
  3. pod重启的次数
  4. 有多少个job在运行

kube-state-mestrics将k8s的运行状况在内存中做了一个快照,并获取新的指标,但没有能力导出这些指标。
kube-state-mestrics可以作为metric-server的一种数据来源
pormetheus对集群的监控就可以通过kube-state-metrics来实现

prometheus

prometheus采集到的metrics并不能直接给k8s用,因为**两者数据格式不兼容**,因此需要kube-state-mestrics来将prometheus采集到的metrics数据格式转化成k8s API接口能识别的格式,转换以后,因为是自定义API,所以还需要用Kubernetes aggregator在主API服务器中注册,以便直接通过/apis/来访问。

Core metrics(核心指标): 从 Kubelet、cAdvisor 等获取度量数据,再由metrics-server提供给 Dashboard、HPA 控制器等使用。 核心指标只包含node和pod的cpu、内存等

Custom Metrics(自定义指标): 由Prometheus Adapter提供API custom.metrics.k8s.io,由此可支持任意Prometheus采集到的指标。

目前k8s中的自定义指标(Custom Metrics)一般由prometheus提供,再通过k8s-prometheus-adpater聚合到APIserver,来实现和核心指标(Core metrics)同样的效果

Prometheus的一些组件:

  1. Prometheus Server: 从Exporter拉去和存储监控数据,并提供一套灵活的查询语言(PromQL)

  2. Exporters/jobs 负责收集目标对象的性能数据,并通过HTTP接口供Prometheus Server获取。

Prometheus工作流程:

  1. Prometheus server获取metrics,有三种方式或者说数据来源
    (①.从配置好的jobs/exporters中拉取metrics
    (②. 接收来自Pushgateway发过来的metrics,、
    其中pushgateway使用的一个例子:对于瞬时任务,可能Prometheus server还没来得pull,任务就已经结束,所以对于瞬时任务,客户端推送的数据先push到pushgateway中缓存一下,然后再由Prometheus server使用pull方式获取这些数据,可以这样理解,使用push方式的数据推送,会被存在pushgateway中
    (③. 从其他的Prometheus server中拉取metrics)
  2. Prometheus server 在本地存储收集到的metrics,并运行已定义好的alert.rules,记录新的时间序列或者向Alertmanager推送警报
  3. Alertmanager根据配置文件,对接收到的的警报进行处理。
  4. 在图形界面中可视化采集的数据

关于Prometheus中的模块介绍

关于k8s集群监控_第2张图片
Retrieval: 负责定时去暴露的目标页面上抓取采样指标数据
Storage:时负责将采样数据写到磁盘中
PromQL: 是Prometheus提供的查询语言模块。
Prometheus Server:负责采集监控数据,并且对外提供PromQL实现监控数据的查询以及聚合分析
Exporters:用于向Prometheus Server暴露数据采集的endpoint,Prometheus轮训这些Exporter采集并且保存数据;

你可能感兴趣的:(k8s学习笔记)