普罗米修斯(prometheus)安装

一、prometheus简介

Prometheus 所有采集的监控数据均以指标(metric)的形式保存在内置的时间序列数据库当中(TSDB):属于同一指标名称,同一标签集合的、有时间戳标记的数据流。

​官方文档​

Prometheus server 定期从配置好的 jobs 或者 exporters 中拉 metrics,或者接收来自 Pushgateway 发过来的 metrics,或者从其他的 Prometheus server 中拉 metrics。

Prometheus server 在本地存储收集到的 metrics,并运行已定义好的 alert.rules,记录新的时间序列或者向 Alertmanager 推送警报。

Alertmanager 根据配置文件,对接收到的警报进行处理,发出告警。

在图形界面中,可视化采集数据。

1. prometheus相关参数配置

storage.local.memory-chunks
设定prometheus内存中保留的chunks的最大个数,默认为1048576,即为1G大小

storage.local.retention
用来配置采用数据存储的时间,168h0m0s即为24*7小时,即1周

storage.local.series-file-shrink-ratio
用来控制序列文件rewrite的时机,默认是在10%的chunks被移除的时候进行rewrite,如果磁盘空间够大,不想频繁rewrite,可以提升该值,比如0.3,即30%的chunks被移除的时候才触发rewrite。

storage.local.max-chunks-to-persist
该参数控制等待写入磁盘的chunks的最大个数,如果超过这个数,Prometheus会限制采样的速率,直到这个数降到指定阈值的95%。建议这个值设定为storage.local.memory-chunks的50%。Prometheus会尽力加速存储速度,以避免限流这种情况的发送。

storage.local.num-fingerprint-mutexes
当prometheus server端在进行checkpoint操作或者处理开销较大的查询的时候,采集指标的操作会有短暂的停顿,这是因为prometheus给时间序列分配的mutexes可能不够用,可以通过这个指标来增大预分配的mutexes,有时候可以设置到上万个。

storage.local.series-sync-strategy
控制写入数据之后,何时同步到磁盘,有'never', 'always', 'adaptive'. 同步操作可以降低因为操作系统崩溃带来数据丢失,但是会降低写入数据的性能。 默认为adaptive的策略,即不会写完数据就立刻同步磁盘,会利用操作系统的page cache来批量同步。

storage.local.checkpoint-interval
进行checkpoint的时间间隔,即对尚未写入到磁盘的内存chunks执行checkpoint操作。

2. 选型方案条件

  1. 满足数据的安全性,需要支持容错,备份
  2. 写入性能要好,支持分片
  3. 技术方案不复杂
  4. 用于后期分析的时候,查询语法友好
  5. grafana读取支持,优先考虑
  6. 需要同时支持读写

3. 存储

Prometheus按2小时一个block进行存储,每个block由一个目录组成,该目录里包含:

  1. 一个或者多个chunk文件(保存timeseries数据)
  2. 一个metadata文件
  3. 一个index文件(通过metric name和labels查找timeseries数据在chunk文件的位置)


备注:最新写入的数据保存在内存block中,达到2小时后写入磁盘。


为了防止程序崩溃导致数据丢失,实现了WAL(write-ahead-log)机制,启动时会以写入日志(WAL)的方式来实现重播,从而恢复数据。

Prometheus保存块数据的目录结构如下所示:

普罗米修斯(prometheus)安装_数据

本地存储不可复制,无法构建集群,如果本地磁盘或节点出现故障,存储将无法扩展和迁移。

因此只能把本地存储视为近期数据的短暂滑动窗口。如果对数据持久化的要求不是很严格,可以使用本地磁盘存储多达数年的数据。

二、pushgateway安装

github地址

进入解压后的pushgateway位置。后台启动执行

./pushagateway &

默认端口为 9091

三、grafana安装

官方文档

安装教程

centos7环境下执行

wget https://dl.grafana.com/enterprise/release/grafana-enterprise-8.4.6-1.x86_64.rpm
sudo yum localinstall grafana-enterprise-8.4.6-1.x86_64.rpm

默认端口为 3000