0
点赞
收藏
分享

微信扫一扫

Infulxdb部署做Prometheus远端存储

Infulxdb部署做Prometheus远端存储_配置文件

本地存储配置

prometheus默认是在本地集成了一个tsdb数据库,用来做本地存储。采用自定义格式将数据保存在本地磁盘当中。按照2个小时为一个时间窗口,将两个小时内产生的数据存储在一个Block块中,每一个快中包含该时间窗口内的所有样本数据chunks,元数据文件meta.json,以及索引文件index

Infulxdb部署做Prometheus远端存储_数据库_02

当前时间窗口内正在收集的样本数据,Prometheus则会直接将数据保存在内存当中。为了确保此期间如果Prometheus发生崩溃或者重启时能够恢复数据,Prometheus启动时会从写入日志(WAL)进行重播,从而恢复数据。此期间如果通过API删除时间序列,删除记录也会保存在单独的逻辑文件当中(tombstone)。

在文件系统中这些块保存在单独的目录当中,Prometheus保存块数据的目录结构如下所示,默认是安装之后保存在data目录下

Infulxdb部署做Prometheus远端存储_配置文件_03


通过时间窗口的形式保存所有的样本数据,可以明显提高Prometheus的查询效率,当查询一段时间范围内的所有样本数据时,只需要简单的从落在该范围内的块中查询数据即可。

同时该存储方式可以简化历史数据的删除逻辑。只要一个块的时间范围落在了配置的保留范围之外,直接丢弃该块即可。

当然,这些逻辑数据能够使用命令直接删除的。删除之后,收集的样本自然就不存在了。

在promethesu启动参数里面,有很多参数可以直接配置

Infulxdb部署做Prometheus远端存储_数据库_04

以下是常用参数说明

参数

默认值

含义

--storage.tsdb.path

data/

日志存储的路径

--storage.tsdb.retention

15d

样本保存的时间

--storage.tsdb.min-block-duration

2h

头部块是时间戳 范围

--storage.tsdb.max-block-duration

36h

压缩块的最大时间戳范围,它是任何持久化块的最小持续时间。

--storage.tsdb.no-lockfile

fasle

.不要在数据目录中创建锁定文件

在一般情况下,Prometheus中存储的每一个样本大概占用1-2字节大小

远端存储

适用于大量历史监控数据的存储和查询。通过中间层的设配器的转化,实现将数据保存到远端。

适配器实现了prometheus存储的remote write和remote reade接口,并把数据转化为远端存储支持的数据格式。

存储设配器:

prometheus通过下面的两种方式来实现与其他远端存储系统对接

  • 按照标准格式将metrics写到远端存储
  • 按照标准格式从远端的url来读取metrics

Infulxdb部署做Prometheus远端存储_配置文件_05

配置远端存储infuxdb

InfluxDB是一个由InfluxData开发的开源时序型数据库,专注于海量时序数据的高性能读、高性能写、高效存储与实时分析等,在DB-Engines Ranking时序型数据库排行榜上排名第一,广泛应用于DevOps监控、IoT监控、实时分析等场景。

InfluxDB是一种时序数据高效读写、压缩存储、实时计算能力为一体的数据库服务,除了具有成本优势的高性能读、高性能写、高存储率,InfluxDB还具有如下特点:

  1. 无系统环境依赖,部署方便。
  2. 无结构化(SchemaLess)的数据模型,灵活强大。
  3. 原生HTTP管理接口,免插件配置和免第三方依赖。
  4. 强大的类SQL查询语句的操作接口,学习成本低,上手快。
  5. 丰富的权限管理功能,精细到“表”级别。
  6. 丰富的时效管理功能,自动删除过期数据,自定义删除指标数据。
  7. 低成本存储,采样时序数据,压缩存储。
  8. 丰富的聚合函数,支持AVG、SUM、MAX、MIN等聚合函数。

influxdb安装使用

influxdb默认使用如下的网络端口:

TCP:8086  客户端和服务端的http api通信

TCP:8088 备份和恢复数据的RPC服务使用

另外,Influxdb提供了都中可能需要自定义的端口插件,默认配置文件为/etc/influxdb/influxdb.conf

1 配置yum源

cat >/etc/yum.repos.d/influxdb.repo <<EOF
[influxdb]
name = InfluxDB Repository - RHEL \$releasever
baseurl = https://repos.influxdata.com/rhel/\$releasever/\$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key
EOF

2  安装并启动

 sudo yum install influxdb -y && systemctl start influxdb

3 相关配置文件

Infulxdb部署做Prometheus远端存储_数据库_06

启动指定配置文件

influxde -config /etc/influxdb/influxdb.conf

Infulxdb部署做Prometheus远端存储_数据_07

4 创建prometheus数据库

influx
create database prometheus;
show database;

Infulxdb部署做Prometheus远端存储_数据库_08

5 修改prometheus的配置文件,增加远程配置

#vim prometheus.yaml
remote_write:
- url: "http://192.168.85.6:8086/api/v1/prom/write?db=prometheus"
remote_read:
- url: "http://192.168.85.6:8086/api/v1/prom/read?db=prometheus"


Infulxdb部署做Prometheus远端存储_数据库_09

Infulxdb部署做Prometheus远端存储_数据_10

重启prometheus

6 验证是否有数据写入

> use prometheus;
> select * from prometheus_http_requests_total limit 10;

Infulxdb部署做Prometheus远端存储_配置文件_11

当数据写入成功后,停止Prometheus服务。同时删除Prometheus的data目录,模拟Promthues数据丢失的情况后重启Prometheus。打开Prometheus UI如果配置正常,Prometheus可以正常查询到本地存储以删除的历史数据记录。

举报

相关推荐

0 条评论