本文最后更新于:2023年12月5日 晚上
metrics Server 提供核心监控指标,比如 Node 节点的 CPU 和内存使用率,其他的监控交由 Prometheus 组件完成
简介
官网:https://prometheus.io/docs/introduction/overview/
github:https://github.com/prometheus
prometheus 是基于 go 语言开发的一套开源的监控、报警和时间序列数据库的组合,是由 SoundCloud 公司开发的
开源监控系统,prometheus 是 CNCF(Cloud Native Computing Foundation,云原生计算基金会)继 kubernetes 之后毕业的第二个项目,prometheus 在容器和微服务领域中得到了广泛的应用,其特点主要如下:
TSDB
TSDB:Time Series Database,时间序列数据库,简称时序数据库
什么是时序数据库?顾名思义,就是存储与时间相关的数据,该数据是在时间上分布的一系列值
时序数据库被广泛应用于物联网和运维监控系统
这个网站可以查看各种时序数据库的排名:
阿里云版 TSDB,文档写的还不错:https://help.aliyun.com/product/54825.html
Prometheus 内置了 TSDB,目前是 V3.0 版本,是一个独立维护的 TSDB 开源项目;在单机上,每秒可处理数百万个样本
Prometheus TSDB 数据存储格式:
- 以每 2 小时为一个时间窗口,并存储为一个单独的 block
- block 会压缩、合并历史数据块,随着压缩合并,其 block 数量会减少
- block 的大小并不固定,但最小会保存两个小时的数据
P137
PromQL
https://songjiayang.gitbooks.io/prometheus/content/promql/summary.html
PromQL:Prometheus Query Language,是 Prometheus 自己开发的数据查询 DSL 语言,语言表现力非常丰富,内置函数很多,在日常数据可视化以及 rule 告警中都会使用到它
系统架构
安装
三种安装方式:docker、二进制、operator
一般不使用 docker 安装,推荐 operator,但是 operator 安装会隐藏很多细节,所以要先学习二进制安装
prometheus server
node exporter
收集各 k8s node 节点上的监控指标数据,监听端口为 9100
node exporter 和 metrics server:
原理都是一样的,都是从 node 的 kublete 获取数据,但是 node exporter 从本机的 kubelet 获取数据,metrics server 从所有 node 的 kubelet 获取数据,所以 node exporter 需要在每个 node 都部署一份,而 metrics server 只部署一个就可以
安装:
在每个 node 都执行以下安装步骤:
与 prometheus 集成:
在 prometheus server 中添加一个 job:
重启 prometheus ,等一会然后观察监控情况:
haproxy exporter
除了 node_exporter,官方还提供了监控 haproxy 的 exporter
需要将其部署在 haproxy 服务所在的节点
prometheus 添加 haproxy 数据采集
grafana 添加模板
367 2428
其他 exporter
如果官方没有提供监控相应服务的 exporter,需要使用第三方或自己开发
https://github.com/zhangguanzhang/harbor_exporter
https://github.com/nginxinc/nginx-prometheus-exporter/
Grafana
调用 prometheus 的数据,进行更专业的可视化
cAdvisor
https://www.oschina.net/p/cadvisor
cAdvisor 是由谷歌开源的 docker 容器性能分析工具,cAdvisor 可以对节点机器上的资源及容器进行实时监控和性能数据采集,包括 CPU 使用情况、内存使用情况、网络吞吐量及文件系统使用情况,cAdvisor 不仅可以搜集一台机器上所有运行的容器信息,还提供基础查询界面和 http 接口,方便其他组件如 prometheus 进行数据抓取
k8s1.12 之前 cadvisor 集成在 node 节点的上 kubelet 服务中,从 1.12 版本开始分离为两个组件,因此需要在 node 节点单独部署 cadvisor
官方 github 给出部署方法,可是需要 pull 国外的镜像
prometheus 采集 cadvisor 数据
grafana 添加 pod 监控模板
395 893 容器模板 ID
prometheus 报警设置
prometheus 触发一条告警的过程:
安装 alertmanager
配置 alertmanager
官方配置文档:https://prometheus.io/docs/alerting/configuration/
启动 alertmanager
报警规则文件示例
配置 prometheus