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


以 Pod 方式运行在集群内是不需要证书的(In- 模式),但集群外需要声明 token之类的证书,并替换,即使用Proxy采集,以 采集为例,Job 配置为:

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

文章插图

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

文章插图
需要提前生成,这个参考官方文档即可 。记得解码 。
对于来说,可以转换为/api/v1/nodes/${1}/proxy//,代表 proxy 到,如果网络能通,其实也可以直接把的10255作为,可以直接写为:
${1}:10255//,代表直接请求,规模大的时候还减轻了的压力,即服务发现使用,采集不走。
在公众号后端架构师后台回复“Java”,获取Java面试题和答案 。
因为是暴露主机端口,配置相对简单,如果是 kube-state- 这种,以形式暴露,写法应该是:
万字长文,Prometheus 如何做到“活学活用”,大牛总结的避坑指南

文章插图

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

文章插图

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

文章插图
对于类型,需要转换为/api/v1//${1}//${2}:${3}/proxy/,需要替换 、svc 名称端口等,这里的写法只适合接口为/的,如果你的不是/接口,需要替换这个路径 。或者像我们一样统一约束都使用这个地址 。
这里的来源就是部署时写的那个,大多数文章中只提到.io/: 'true',但也可以定义端口、路径、协议 。以方便在采集时做替换处理 。
其他的一些如 是为了保留原始信息,方便做查询时的筛选条件 。
如果是多集群,同样的配置多写几遍就可以了,一般一个集群可以配置三类job:
GPU 指标的获取
-smi可以查看机器上的 GPU 资源,而 其实暴露了来表示容器使用 GPU 情况,
如果要更详细的 GPU 数据,可以安装dcgm,不过K8S 1.13 才能支持 。
更改的显示时区
为避免时区混乱,在所有组件中专门使用 Unix Time 和 Utc 进行显示 。不支持在配置文件中设置时区,也不能读取本机 /etc/ 时区 。
其实这个限制是不影响使用的:
2.16 版本:
修改源码更改的时区问题:
万字长文,Prometheus 如何做到“活学活用”,大牛总结的避坑指南

文章插图

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

文章插图
关于的讨论,可以看这个issue 。
issue:
如何采集 LB 后面的 RS 的
假如你有一个负载均衡 LB,但网络上只能访问到 LB 本身,访问不到后面的 RS,应该如何采集 RS 暴露的 ?
版本的选择
当前最新版本为 2.16,还在不断迭代,因此尽量用最新版,1.X版本就不用考虑了 。
2.16 版本上有一套实验 UI,可以查看 TSDB 的状态,包括Top 10的 Label、 。
万字长文,Prometheus 如何做到“活学活用”,大牛总结的避坑指南

文章插图
大内存问题
随着规模变大,需要的 CPU 和内存都会升高,内存一般先达到瓶颈,这个时候要么加内存,要么集群分片减少单机指标 。这里我们先讨论单机版的内存问题 。
原因:
我的指标需要多少内存:
万字长文,Prometheus 如何做到“活学活用”,大牛总结的避坑指南

文章插图
计算公式:
以我们的一个为例,本地只保留 2 小时数据,95 万,大概占用的内存如下:
有什么优化方案:
内存占用分析:
相关 issue:
容量规划
容量规划除了上边说的内存,还有磁盘存储规划,这和你的的架构方案有关 。
每2小时将已缓冲在内存中的数据压缩到磁盘上的块中 。包括、、、,这些占用了一部分存储空间 。一般情况下,中存储的每一个样本大概占用1-2字节大小(1.7Byte) 。可以通过来查看每个样本平均占用多少空间: