InfluxDB(语法介绍)-监控存储利器

InfluxDB是一款专用于处理高写入和查询负载的时序数据库,适合存储监控数据。文章介绍了field和tag的区别,tag常用于统计,而field可用于运算。此外,讨论了RetentionPolicies(RP)和ContinuousQueries(CQ)的使用,通过RP定义数据保留策略,CQ实现数据采样和自动写入,有效管理存储空间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


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介绍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海盗巨人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值