本地存储
本地存储数据文件结构如下,按照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…
参考资料: