InfluxDB
influxDB是一款专门处理高写入和查询负载的时序数据库,十分适合储存运维海量监控数据,工业实时监控数据
监控数据思路:设计多个表,针对最近的数据实时保存到生命周期较短(比如1天)的表,针对需要保存时间较长(比如两年)的数据进行采样保留/拉大时间窗口保留
InfluxDB 表相关
field和tag区别
- tag 标签的value是string,类似索引的概念
- field key-value模式来存放数据的部分,filed可以进行运算,例如求和、取平均
#例子:创建一个monitor数据库
create database monitor
#我想创建一个有cpu(float)、mem(float)、host(string),idc(float)指标的数据foo表(measurement)
#其中为field 为cpu,mem, tag为host,idc
insert foo,host="192.168.1.1",idc=2 cpu=20.000,mem=80.00
#查看tag
>show tag keys from foo
#结果
name: foo
tagKey
------
host
idc
#查看field
>show field keys from foo
#结果
name: foo
fieldKey fieldType
-------- ---------
cpu float
mem float
tag一般用法
#列子:统计foo表中idc为2的host有多少个
SHOW TAG VALUES from foo WITH key="host" where idc=2
#结果
name: foo
key value
--- -----
host "192.168.1.1"
host "192.168.1.2"
host "192.168.1.5"
InfluxDB中 RP和CQ
RP和CQ是Influx中极为重要的概念,运用得当可节省极大的存储空间
- RP 数据保存策略(Retention Policies),针对不同的measurement制定数据保存策略
- CQ 连续查询 (Continuous queries ),通过自动执行语句将查询结果写入指定measurement
基本用法
#创建RP
#列子:上述foo表中存入的是实时数据,因为数据量缘故,我们创建两个保留规则,一个数据默认保留一周,一个是数据可以保留两年(因为实时数据保留2年存储过大,需对数据进行采样,借助CQ实现)
CREATE RETENTION POLICY "one_hours" ON "monitor" DURATION 1w REPLICATION 1 DEFAULT
CREATE RETENTION POLICY "two_year" ON "monitor" DURATION 100w REPLICATION 1
#查看RP
> show retention policies on "monitor"
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 0s 168h0m0s 1 false
one_hours 168h0m0s 24h0m0s 1 true
two_year 16800h0m0s 168h0m0s 1 false
#创建CQ
CREATE CONTINUOUS QUERY <cq_name> ON <database_name>
BEGIN
<cq_query>
END
#列子:比如我们想让每个host半小时采集一个点落到数据库,就可以利用CQ取半小时的平均再写入measurement
CREATE CONTINUOUS QUERY "cq_30m" ON "monitor" BEGIN SELECT mean("cpu") AS "cpu",mean("mem") AS "mem" INTO two_year."foo_30m" FROM "foo" GROUP BY time(30m),host,idc END
#查看cq
SHOW CONTINUOUS QUERIES
#若想验证CQ是否生效可以手动执行下如下语句(过滤掉写入动作)
SELECT mean("cpu") AS "cpu",mean("mem") AS "mem" FROM "foo" GROUP BY time(30m),host,idc
以上就是我们对influxDB中measurement及CQ、RP介绍