1 简介
InfluxDB是Influxdata旗下开源的一种时序数据库(Time Series Database),根据DB-engine排名,目前在time series数据库领域排名第一位
InfluxDB主要功能
- 对时序数据(sereis data)使用TSM存储引擎,提供高性能的数据写入和压缩功能。
- go语言编写,程序只有一个二进制的可执行文件,没有其他依关系。
- 通过http API可提供高性能的便捷的读写操作。
- 插件支持采集Graphite, collectd, and OpenTSDB等数据源。
- 提供类似SQL语法格式的数据操作。
- 保留策略(retention policies)功能可以定期清除老旧数据。
- 不间断(continuous queries)自动化查询功能统计聚合数据来使数据查询更有效率。
缺点:
- 社区版只支持单机部署,集群功能需要使用收费的企业版。
- 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”
#创建一个过期时间为30天的保留策略
CREATE RETENTION POLICY "prom30day" ON "prometheus" DURATION 30d REPLICATION 1
#此时prometheus数据库除了一个默认的保留策略“autogen”外,还有一个我们新建的保留策略,这里需要注意的是,一个数据库的保留策略可以有多个,但是只能有一个是默认的。
#将刚才新建的保留策略设置为prometheus的默认策略
alter retention policy "prom30day" on "prometheus" default
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;
2.3.2 清理prometheus本地存储
systemctl stop prometheus.service
rm -rf data/*
systemctl start prometheus.service
2.3.3 查询数据
即使本地数据清理了,依旧可以查询influxdb中的数据进行展示
2.4 配置grafana
因为prometheus可以直接读取influxdb的数据,所以grafana配置prometheus为数据源即可