prometheus--数据存储

1,040 阅读1分钟

本地存储

本地存储数据文件结构如下,按照2个小时一个block进行存储,每个block一个目录,该目录里中包含:一个或者多个chunk文件(保存timeseries数据)、一个metadata文件、一个index文件(通过metric name和labels查找timeseries数据在chunk文件的位置)。

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

本地存储的局限性在于它不是集群或复制的,在可伸缩性和持久性方面受到单个节点的限制。但可以与远程存储系统集成接口。

data/
├── 01EFAVNRBAYQ9C455ZV4EC7ADT
│   ├── chunks
│   │   └── 000001
│   ├── index
│   ├── meta.json
│   └── tombstones
├── 01EFAVNRN1YTFKCN0KY53W1W0J
│   ├── chunks
│   │   └── 000001
│   ├── index
│   ├── meta.json
│   └── tombstones
├── 01EFBSJ5HXQVYY778X7K9B1V30
│   ├── chunks
│   │   └── 000001
│   ├── index
│   ├── meta.json
│   └── tombstones
├── 01EFBSJ5P1DMD2N7KBZ4X17GYA
│   ├── chunks
│   │   └── 000001
│   ├── index
│   ├── meta.json
│   └── tombstones
├── queries.active
└── wal
    ├── 00000244
    ├── 00000245
    ├── 00000246
    ├── 00000247
    └── checkpoint.00000243
        └── 00000000

存储配置:

  • --storage.tsdb.path: 存储数据的目录,默认为data/

  • --storage.tsdb.retention.time: 数据存储的时间,默认15天

  • --storage.tsdb.retention.size: 声明数据块的最大值,不包括wal文件,如512MB

远程数据存储(influxdb)

此处以influxdb为例

prometheus配置文件中的端点

emote_write:
  - url: "http://192.168.11.150:8086/api/v1/prom/write?db=prometheus"

remote_read:
  - url: "http://192.168.11.159:8086/api/v1/prom/read?db=prometheus"

使用用户验证时,引用以下配置

remote_write:
  - url: "http://192.168.11.150:8086/api/v1/prom/write?db=prometheus&u=lemontest&p=lemontest"

remote_read:
  - url: "http://192.168.11.150:8086/api/v1/prom/read?db=prometheus&u=lemontest&p=lemontest"

其他可以集成的存储方式:prometheus.io/docs/operat…

参考资料:

prometheus.io/docs/promet…

docs.influxdata.com/influxdb/v1…