万字长文,Prometheus 如何做到“活学活用”,大牛总结的避坑指南

链接:/?p=1921
后端架构师(ID:)第 1055次推文图 / 图虫
往日回顾:11 月全国程序员平均工资出炉
正文
监控系统的历史悠久,是一个很成熟的方向,而作为新生代的开源监控系统,慢慢成为了云原生体系的事实标准,也证明了其设计很受欢迎 。
本文主要分享在实践中遇到的一些问题和思考,如果你对 K8S 监控体系或的设计还不太了解,可以先看下容器监控系列 。
容器监控系列:
几点原则
的局限
K8S 集群中常用的 一级标题
属于 CNCF 项目,拥有完整的开源生态,与这种传统 agent 监控不同,它提供了丰富的来满足你的各种需求 。
你可以在这里看到官方、非官方的。如果还是没满足你的需求,你还可以自己编写,简单方便、自由开放,这是优点 。

但是过于开放就会带来选型、试错成本 。之前只需要在agent里面几行配置就能完成的事,现在你会需要很多搭配才能完成 。还要对所有维护、监控 。尤其是升级版本时,很痛苦 。非官方 还会有不少 bug 。这是使用上的不足,当然也是的设计原则 。
K8S 生态的组件都会提供/接口以提供自监控,这里列下我们正在使用的:
: kube-state-:
node-:
还有各种场景下的自定义,如日志提取后面会再做介绍 。
自定义 :
K8S 核心组件监控与面板
k8s 集群运行中需要关注核心组件的状态、性能 。如 、 等,基于上面提到的的指标,可以在中绘制如下图表:

万字长文,Prometheus 如何做到“活学活用”,大牛总结的避坑指南

文章插图

万字长文,Prometheus 如何做到“活学活用”,大牛总结的避坑指南

文章插图

万字长文,Prometheus 如何做到“活学活用”,大牛总结的避坑指南

文章插图

万字长文,Prometheus 如何做到“活学活用”,大牛总结的避坑指南

文章插图
模板可以参考-for--,根据运行情况不断调整报警阈值 。
-for--:
这里提一下虽然支持了能力,可以很方便地做多级下拉框选择,但是不支持 模式下配置报警规则,相关issue
issue:
官方对这个功能解释了一堆,可最新版本仍然没有支持 。借用 issue 的一句话吐槽下:
关于的基础用法,可以看看《容器监控实践—》 。
容器监控实践—:
采集组件 All IN One
体系中都是独立的,每个组件各司其职,如机器资源用 Node-,Gpu 有 等等 。但是越多,运维压力越大,尤其是对 Agent做资源控制、版本升级 。我们尝试对一些进行组合,方案有二:
另外,Node- 不支持进程监控,可以加一个-,也可以用上边提到的,使用的 input来采集进程指标 。
合理选择黄金指标
采集的指标有很多,我们应该关注哪些? 在“Sre ”中提出了“四个黄金信号”:延迟、流量、错误数、饱和度 。实际操作中可以使用 Use 或 Red 方法作为指导,Use 用于资源,Red 用于服务 。
采集中常见的服务分三种:
对 Use 和 Red 的实际示例可以参考容器监控实践—K8S常用指标分析这篇文章 。
容器监控实践—K8S常用指标分析:
K8S 1.16中的指标兼容问题
在 K8S 1.16版本,的指标去掉了和的 label,替换为了pod 和。如果你之前用这两个 label 做查询或者绘图,需要更改下 Sql 了 。因为我们一直支持多个 K8S 版本,就通过 配置继续保留了原来的**_name 。
万字长文,Prometheus 如何做到“活学活用”,大牛总结的避坑指南

文章插图
注意要用 gs,不是,采集后做的 。
采集外部K8S集群、多集群
如果部署在K8S集群内采集是很方便的,用官方给的Yaml就可以,但我们因为权限和网络需要部署在集群外,二进制运行,采集多个 K8S 集群 。