软件简介
InfluxDB 是一个开源分布式时序和指标数据库,应用 Go 语言编写。
行业位置
InfluxDB 长年霸占榜一地位,最新的时序数据库排行,InfluxDB 甩了第二名 Kdb+ 三个 Prometheus 的间隔。
基本概念
● Database:数据库
● Measurement:数据表,能够了解为 mysql 里的 table
● Field:InfluxDB 中记录实在数据的键值对 (在 Influxdb 中是必须的,不会被索引)
● Field Set:Field 键值对的汇合
○ Field Key:组成 Field 键值对里的键
○ Field Value:组成 Field 键值对里的值 (真正的数据)
● Tag:用来形容 Field 的键值对 (在 Influxdb 中是可选的,会被索引)
● Tag Set:Tag 键值对的汇合
○ Tag Key:组成 Tag 键值对里的键
○ Tag Value:组成 Tag 键值对里的值
● TimeStamp:数据点关联的日期和工夫
高级概念
● Retention Policy:数据存储工夫 (默认是 autogen,永恒保留)
● Series:工夫线由 Retention Policy、Measurement、Tag Set 三局部组成
● Point:在一个 Series 中有雷同 TimeStamp 的 Field Set,也能够了解为表里的一行数据
● Line Protocol:一种写入数据点到 InfluxDB 的文本格式
将上述表格里的 Point 转换为行协定
disk,host=a,path=/ free=40836976,used=20836976 1639238400000000000
实际操作
1. 软件装置
增加 Influxdata 的 yum 源
cat <<EOF | tee /etc/yum.repos.d/influxdb.repo
[influxdb]
name = InfluxDB Repository – RHEL $releasever
baseurl = https://repos.influxdata.com/…$releasever/$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/…
EOF
装置 Telegraf / Influxdb
yum -y install telegraf influxdb
启动软件
systemctl start influxdb
systemctl start telegraf
2. 数据查问
因为本地装置,应用 influx 命令间接进入数据库 (更多参数详见 influx -h)
influx
抉择数据表 telegraf,应用 select 命令查问数据 (查询语言为 InfluxQL)
use telegraf
select * from system limit 3
图中能够看到 3 个 Point,由 4 局部组成 (measurement,timeStamp,tag set,field set)
Measurement
● name = system
TimeStamp
● time = 1637744500000000000 (纳秒)
Tag Set
● host = df-solution-ecs-018
Field Set
● load = 0,load15 = 0,load5 = 0.01,n_cpus = 4,n_users = 5,uptime = 1106990,uptime_format = 12days,19:29
3. 查看工夫线
应用 show series 命令查看工夫线
show series from cpu
能够看到 measurement 为 cpu 的工夫线为 5 条 (cpu-total,cpu0,cpu1,cpu2,cpu3,host 都一样)
4. 工夫线测试
4.1 增加 inputs.tags (插件标签)
主配置文件 /etc/telegraf/telegraf.conf,增加 inputs.cpu.tags
[[inputs.cpu]]
percpu = true
totalcpu = true
collect_cpu_time = false
report_active = false
[inputs.cpu.tags]
cloud = ‘aliyun’
重启 telegraf
systemctl restart telegraf
应用 show series 命令查看工夫线
show series from cpu
能够看到 measurement 为 cpu 的工夫线由 5 => 10 条
4.2 删除 measurement
应用 drop 命令删除 measurement
drop measurement cpu
再次应用 show series 命令查看工夫线
show series from cpu
能够看到 measurement 为 cpu 的工夫线变为 5 条 (cpu-total,cpu0,cpu1,cpu2,cpu3,host/cloud 都一样)
4.3 增加 global_tags (全局标签)
主配置文件 /etc/telegraf/telegraf.conf,增加 global_tags
[global_tags]
user = ‘admin’
重启 telegraf
systemctl restart telegraf
应用 show series 命令查看工夫线
show series from cpu
能够看到 measurement 为 cpu 的工夫线又由 5 => 10 条
应用 show series 命令查看其余 measurement 的工夫线
show series from mem
能够看到 measurement 为 mem 的工夫线由 1 => 2 条
简略解析
● retention policy 不变
○ 应用插件标签,该 measurement 的工夫线会翻倍
○ 应用全局标签,该 database 的工夫线会翻倍
○ 如果 measurement 也不变,tag 排列组合越多,工夫线越多
● measurement
○ 一旦被删除,会清理该 measurement 下的所有工夫线
● tag
○ 通常是能够被枚举的,例如 hostname,status
○ 不能为随机数,否则会造成大量工夫线,例如 container id,source ip