当前位置:Gxlcms > 数据库问题 > 互联网级监控系统必备-时序数据库之Influxdb技术

互联网级监控系统必备-时序数据库之Influxdb技术

时间:2021-07-01 10:21:17 帮助过:11人阅读

1. 支持类似SQL的查询语法

2.提供了Http Api直接访问

3.存储超过10亿级别的时间序列数据

4.灵活的数据保留策略,可以定义到Database级别(只保留最热的数据)

5.内置管理接口和CMD

6.飞一般速度的聚合查询

7.按不同时间段进行聚合查询

8.内置持续查询功能,定时计算指定时间段的数据,插入到指定表中,可以理解为定时归集数据

9. 水平扩展,支持集群模式

二、Influxdb 版本和.Net支持

1. 根据我们的使用经验,V0.10版本是非常稳定的,V0.9.6我们用过,有内存泄漏问题

2. GitHub上有非常多的.Net Libraby,方便我们写入和读取数据

技术分享

三、数据写入Write Data(Points)

Http API:
curl -i -XPOST ‘http://localhost:8086/write?db=mydb‘ --data-binary ‘cpu_load,host=server01,region=us-west value=0.64 1434055562000000000‘
db:mydb, 要写入的数据库
measurement:cpu_load,表
tag keys:host  region  tag value:server01 us-west
tag标签可以理解为维度,可选参数,用于标识不同的数据源,基于tag使查询更加简单和高效
 Tags are indexed so queries on tag keys or tag values are more performant than queries on fields.
key field:value  value field:0.64
Timestamp:1434055562000000000 可选参数、UTC

支持批量写入
支持同一个Timestamp写入不同的数据
Influxdb 支持存储结构灵活变化,可以在任意增加measure、tags、fields,但是每个tag、field的数据类型必须固定。

四、查询Query

Http API:
curl -G ‘http://localhost:8086/query?pretty=true‘ --data-urlencode "db=mydb" --data-urlencode "q=SELECT value FROM cpu_load_short WHERE region=‘us-west‘
返回JSON格式数据
支持同时多个Query SQL
查询最大返回10000个点的数据,如果超过阈值,可以设置chunk_size
Measurement、Tag、Field、数据等大小写敏感,SQL关键字不区分大小写

支持算术计算:
SELECT (water_level * 2) + 4 from h2o_feet
支持对Tags进行过滤查询,条件必须使用单引号
SELECT water_level FROM h2o_feet WHERE location = ‘santa_monica‘
Tag value 为空、不为空过滤
SELECT * FROM h2o_feet WHERE location !~ /.*/
SELECT * FROM h2o_feet WHERE location =~ /.*/
时间范围过滤
SELECT * FROM h2o_feet WHERE time > now() - 7d
Field value过滤
SELECT * FROM h2o_feet WHERE location = ‘coyote_creek‘ AND  water_level > 8

技术分享

聚合函数、选择函数、转换函数

技术分享

五、持续查询(Continuous Queries)

持续查询是Influxdb自动、周期的运行的查询,结果自动存储

设计持续查询的目的是为了规则采样数据,比如按天、按月采样数据

CREATE CONTINUOUS QUERY <cq_name> ON <database_name> [RESAMPLE [EVERY <interval>] [FOR <interval>]] BEGIN SELECT <function>(<stuff>)[,<function>(<stuff>)] INTO <different_measurement> FROM <current_measurement> [WHERE <stuff>] GROUP BY time(<interval>)[,<stuff>] END

技术分享

六、 监控应用场景

通过上面几个部分的介绍,Influxdb的基本语法就可以掌握了。有什么作用:

1. 实时采集监控数据,按时间写入Influxdb

2. 按不同纬度聚合查询监控数据,用于监控展现

3. 持续查询,定时归集指定时间的数据,用于更大时间范围监控数据的展现

总结一下,场景结合实践,通过实际监控系统的应用,和大家分享了Influxdb的使用和技能。我们自己的监控系统就是通过这个套路一点点搭建起来的。

目前,我们的监控平台,2500个监控项,500台服务器实时监控,每日处理上T数据,几百个监控图表,Influxdb满足了我们日常超大规模监控的需要。

同时,Influxdb在大数据展现领域,也有不俗的表现,Druid的集成也很棒的。

 

周国庆

2017/7/11

互联网级监控系统必备-时序数据库之Influxdb技术

标签:dex   架构   pretty   url   结构   github   strong   local   different   

人气教程排行