Fork me on Gitee

Prometheus远端存储InfluxDB

1. Influx介绍

InfluxDb是一个开源分布式时序、时间和指标数据库。采用Go语言编写。其设计目的是实现分布式和水平伸缩扩展,是InfluxData的核心产品之一。主要用于性能监控、应用程序指标、物联网传感器数据和实时分析的后端存储。完整的InfluxData上下游产业还包括了Chronograf、Telegraf和Kapacitor,如下图所示。

2.与传统数据库对比

Influxdb中的概念 传统数据库中的概念
database 数据库
measurement 数据库中的表
point 表中的一行数据
  • Point的数据结构由时间戳(time)、标签(tag)和数据(Fields)三部分组成,具体含义如下:
Point属性 含义
time 数据记录的时间,是主索引(自动生成)
tags 各种索引的属性
fields value值

3. 安装

# 下载influxdb-1.8
wget  https://dl.influxdata.com/influxdb/releases/influxdb-1.8.0.x86_64.rpm
# 安装
yum -y localinstall influxdb-1.8.0.x86_64.rpm
# 启动
systemctl start influxdb

配置文件路径在/etc/influxdb/influxdb.conf

4. 客户端登录

客户端输入influx, 进入influx交互式界面。

image-20220614164151570

展示所有的数据库show databases

image-20220614164218343

创建新的名为prometheus的数据库

 create database prometheus

5. 配置Prometheus

在prometheus.yml配置文件中,添加remote_write

remote_write:
  - url: "http://localhost:8086/api/v1/prom/write?db=prometheus"

image-20220614164615941

检查prometheus.yml配置文件是否正确

./promtool check config prometheus.yml

重启

# 重启
systemctl restart prometheus
# 查看状态
systemctl status prometheus

6. 验证

切换到Prometheus数据库,执行show measurements,查看度量信息。

image-20220614165538131

可以看到prometheus指标已经存储到InfluxDB中。

7. 清除策略

对于传统关系型数据库,增删改查应该是必备且常用的功能,而influxdb常用的只有insert和select,没有提供update语法。

因为存储的数据都是跟时间有关的测量数值,多用于图表展示,不太需要人为的去删除,而有时统计的数据是秒级,甚至毫秒级、纳秒级的,势必造成数据量巨大。如果一直长久存储会占用机器大量资源,而且有些数据越旧越失去它的时效性,越没有参考价值,所以保留策略retention policy就是可以让数据存储一段时间后自动清除。

查看某数据库保留策略

show retention policies on prometheus

image-20220614170851897

  • Name: 保留策略名称

  • Duration: 数据保存时长。最小为1h。如果设置为0,数据永久保存。

  • shardGroupDuration: 数据存储在shardGroup的时间跨度。

  • replicaN: 复制因子。它决定在集群中存储多少个数据副本。inflxudb集群中跨N个数据节点复制数据,其中N就是复制因子。复制因子对单个节点实例不起作用,所以单机版直接设置为1即可。

  • default: true为默认的保留策略。

参考博客

  1. influxdb基础(四)——influxdb保留策略(retention policy)自动清理过期数据

  2. Prometheus远端存储InfluxDB1.x和InfluxDB2.x

posted @ 2022-06-14 17:17  shine-rainbow  阅读(1074)  评论(1编辑  收藏  举报