共计 2331 个字符,预计需要花费 6 分钟才能阅读完成。
1 Prometheus简介和架构
Prometheus 是由 SoundCloud 开源监控告警解决方案。架构图如下:
如上图,Prometheus主要由以下部分组成:
- Prometheus Server:用于抓取和存储时间序列化数据
- Exporters:主动拉取数据的插件
- Pushgateway:被动拉取数据的插件
- Altermanager:告警发送模块
- Prometheus web UI:界面化,也包含结合Grafana进行数据展示或告警发送
prometheus本身是一个以进程方式启动,之后以多进程和多线程实现监控数据收集、计算、查询、更新、存储的这样一个C/S模型运行模式。
![image-20220524114401712](/Users/mervinwang/Library/Application Support/typora-user-images/image-20220524114401712.png)
2 基本概念
- 多维数据模型(时序由 metric 名称和 k/v 的 labels 构成)
- 灵活的查询语句(PromQL)
- 无依赖存储,支持 local 和 remote 不用模型
- 采用 http 协议,使用 pull 模式,拉取数据
- 监控目标,可以采用服务发现和静态配置的方式
- 支持多种统计数据模型,图形化友好
3 关键组件或概念
- Prometheus Server,主要用于抓取数据和存储时序数据,另外还提供查询和报警规则的配置管理。
- Exporter,可以理解为客户端,负责收集数据,并暴露给Prometheus Server,Server定时采集。有两种方式:直接方式,类似于白盒测试,自己开发应用程序,埋点;间接方式,类似于黑盒测试,我们可以通过它对外暴露的接口采集数据。
- AlertManager,告警处理中心,Prometheus Server通过PromQL设置的告警规则,触发告警,AlertManager则对这些告警做分发和管理。
- PromQL,PromQL接口可以对接其它图形界面,例如Grafana可以配置Prometheus作为数据源。
- PushGateway,应用程序主动push数据到PushGateway,Prometheus Server定期pull数据。
- Metric,监控指标。Metric监控意味着采用各种指标,维度来监控系统状态。在Prometheus里,一个数据点由Metric(metric+labelsets)+timestamp+value组成。数据点是在Prometheus pull采集的数据处理并存储后形成的,所以前面所说的timestamp时间戳是针对pull后的时间,并不是在客户端采集时候的时间戳。整个数据是以这些数据点以时间戳为横轴的集合。
4 安装
4.1 下载镜像包
docker pull prom/node-exporter
docker pull prom/prometheus
docker pull grafana/grafana
4.2 启动node-exporter
docker run -d -p 9100:9100 \
-v "/proc:/host/proc:ro" \
-v "/sys:/host/sys:ro" \
-v "/:/rootfs:ro" \
--net="host" \
prom/node-exporter
4.3 启动prometheus
# 创建配置文件
[root@VM-10-48-centos ~] mkdir /data/config/prometheus -p && cd /data/config/prometheus
[root@VM-10-48-centos prometheus]vim prometheus.yml
global:
scrape_interval: 60s
evaluation_interval: 60s
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['localhost:9090']
labels:
instance: prometheus
- job_name: linux
static_configs:
- targets: ['172.16.1.37:9100']
labels:
instance: localhost
scrape_interval:指标数据抓取间隔。
scrape_timeout:指标数据抓取超时时间。
metrics_path:获取指标的HTTP资源路径。
scheme:抓取指标数据请求的协议。
bearer_token_file:用于验证身份授权的Bearer Token所在文件。
kubernetes_sd_configs:Kubernetes平台服务发现配置信息,允许从Kubernetes的REST API检索抓取目标,并始终与集群状态保持同步。
relabel_configs:允许在抓取之前对任何目标及其标签进行高级修改。
容器启动(请提前配置好docker环境及镜像加速)
docker run -it --name prometheus -d -p 9090:9090 -v /data/config/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
访问 http://localhost:9100/metrics
,可以看到当前 node exporter 获取到的当前主机的所有监控数据,如下所示:v
然后是一段relabel_configs配置,其作用主要是用于匹配最终要抓取的endpoint,构造抓取的地址,甚至给最终的时序指标加上一些label。这里以apiserver发现的node_exporter endpoint信息为例
正文完