1 简介

InfluxDB是Influxdata旗下开源的一种时序数据库(Time Series Database),根据DB-engine排名,目前在time series数据库领域排名第一位

InfluxDB主要功能

  1. 对时序数据(sereis data)使用TSM存储引擎,提供高性能的数据写入和压缩功能。
  2. go语言编写,程序只有一个二进制的可执行文件,没有其他依关系。
  3. 通过http API可提供高性能的便捷的读写操作。
  4. 插件支持采集Graphite, collectd, and OpenTSDB等数据源。
  5. 提供类似SQL语法格式的数据操作。
  6. 保留策略(retention policies)功能可以定期清除老旧数据。
  7. 不间断(continuous queries)自动化查询功能统计聚合数据来使数据查询更有效率。

缺点:

  1. 社区版只支持单机部署,集群功能需要使用收费的企业版。
  2. InfluxDB中文学习文档较少,对于想要了解该数据库的用户有一定的不便。

在InfluxDB 2之前,InfluxDB提供远端写的API供Prometheus直接写数据,InfluxDB 2之后,需要通过 telegraf 才能将 Prometheus的监控数据存储到 InfluxDB 中。

2 单机版influxdb1.8.1

2.1 安装influxdb

2.1.1 下载influxdb

wget https://dl.influxdata.com/influxdb/releases/influxdb-1.8.1.x86_64.rpm

也可以去官方提供的地址选择合适版本
https://repos.influxdata.com/rhel/7/x86_64/stable/

2.1.2 安装

yum localinstall -y influxdb-1.8.1.x86_64.rpm

2.1.3 修改数据存放路径

vim /etc/influxdb/influxdb.conf
[meta]
  dir = "/data/influxdb/meta"
[data]
  dir = "/data/influxdb/data"
  wal-dir = "/data/influxdb/wal"

data  #存放最终存储的数据,文件以.tsm结尾
meta  #存放数据库元数据
wal   #存放预写日志文件

2.1.4 创建数据目录

mkdir -p /data/influxdb/{meta,data,wal}
chown -R influxdb.influxdb /data/influxdb/

2.1.5 启动服务

systemctl start influxdb.service

2.1.6 创建管理员账户

influx
#创建管理员账户
> CREATE USER root WITH PASSWORD '123456' WITH ALL PRIVILEGES
#进行认证
> auth
username: root
password:

2.1.7 创建存储监控数据的库

create database prometheus;
use prometheus
#查看默认数据保留策略
#Influx中每个新建的数据库都会有一个对应的数据保留策略(retention policy),该策略用来管理该数据库中的数据过期时间,如果没有指定策略,那么该数据库会有一个默认的策略
show retention policies;
show retention policies on prometheus;
新建一个数据库时,也会自动创建一个默认的策略“autogen”,duration表示该数据的过期时间,0s表示永不过期。
创建retention policy的语句如下:
CREATE RETENTION POLICY <retention_policy_name> ON <database_name> DURATION <duration> REPLICATION <n> [SHARD DURATION <duration>] [DEFAULT]
该参数依次为: 
    <retention_policy_name>:保留策略名称
    <database_name>:为哪个数据库创建保留策略
    <duration>:该保留策略对应的数据过期时间
    <REPLICATION>:复制因子,开源的InfluxDB单机环境永远为1
    <SHARD DURATION>:分片组的默认时长
    DEFAULT:是否为默认策略,如果是,就代替数据库的默认策略“autogen”

​​Prometheus监控之远端存储influxdb1.x版本_ci

#创建一个过期时间为30天的保留策略
CREATE RETENTION POLICY "prom30day" ON "prometheus" DURATION 30d REPLICATION 1
#此时prometheus数据库除了一个默认的保留策略“autogen”外,还有一个我们新建的保留策略,这里需要注意的是,一个数据库的保留策略可以有多个,但是只能有一个是默认的。

​​Prometheus监控之远端存储influxdb1.x版本_ci_02

#将刚才新建的保留策略设置为prometheus的默认策略
alter retention policy "prom30day" on "prometheus" default

​​Prometheus监控之远端存储influxdb1.x版本_数据_03

2.1.8 创建prometheus账户并设置权限

CREATE USER prometheus WITH PASSWORD 'prometheus' 
GRANT ALL ON "prometheus" TO "prometheus"

2.2 配置prometheus使用influxdb

1、配置prometheus
remote_write:
  - url: "http://192.168.137.132:8086/api/v1/prom/write?db=prometheus&u=prometheus&p=prometheus"
remote_read:
  - url: "http://192.168.137.132:8086/api/v1/prom/read?db=prometheus&u=prometheus&p=prometheus"

2、重新加载prometheus
curl -X POST http://192.168.137.131:9090/-/reload

2.3 数据测试

2.3.1 登录influxdb查询数据

influx -username root -password 123456
use prometheus
show MEASUREMENTS;

​​Prometheus监控之远端存储influxdb1.x版本_ci_04

2.3.2 清理prometheus本地存储

systemctl stop prometheus.service
rm -rf data/*
systemctl start prometheus.service

2.3.3 查询数据

即使本地数据清理了,依旧可以查询influxdb中的数据进行展示

​​Prometheus监控之远端存储influxdb1.x版本_数据库_05

2.4 配置grafana

因为prometheus可以直接读取influxdb的数据,所以grafana配置prometheus为数据源即可