时序数据库,InfluxDB

2022-06-01  本文已影响0人  芼芼567

老板新需求又来了,这次是要用一个时序数据库,用来保存工厂生产时的各种监控指标。

一番调查之后,决定使用InfluxDB,为啥?排名高呗排名前十的时序数据库

1.InfluxDB简介(都是抄来的)

InfluxDB是一款用Go语言编写的开源分布式时序、事件和指标数据库,无需外部依赖。该数据库现在主要用于存储涉及大量的时间戳数据,如DevOps监控数据,APP metrics,loT传感器数据和实时分析数据。

作为目前开源排名最高的时序数据库,InfluxDB支持数据存储策略(RP)和数据归档(CQ),能够实时查询,数据在写入时被索引后就能够被立即查出,内置HTTP接口,安装管理很简单,并且读写数据非常高效。

InfluxDB有三大特性:

1、Time Series (时间序列):你可以使用与时间有关的相关函数(如最大,最小,求和等)

2、Metrics(度量):你可以实时对大量数据进行计算

3、Eevents(事件):它支持任意的事件数据

特点

・为时间序列数据专门编写的自定义高性能数据存储。 TSM引擎具有高性能的写入和数据压缩

・Golang编写,没有其它的依赖

・提供简单、高性能的写入、查询 http api,Native HTTP API, 内置http支持,使用http读写

・插件支持其它数据写入协议,例如 graphite、collectd、OpenTSDB

・支持类sql查询语句

・tags可以索引序列化,提供快速有效的查询

・Retention policies自动处理过期数据

・Continuous queries自动聚合,提高查询效率

・schemaless(无结构),可以是任意数量的列

・Scalable可拓展

・min, max, sum, count, mean,median 一系列函数,方便统计

・Built-in Explorer 自带管理工具

2、安装

这边只记录下docker的安装(docker是个好东西啊)

$ docker run -dit --restart=always --privileged --name influxdb2 -p 8086:8086 \

      -v $PWD/influxdb2/data:/var/lib/influxdb2 \

      -v $PWD/influxdb2/config:/etc/influxdb2 \

      -e DOCKER_INFLUXDB_INIT_MODE=setup \

      -e DOCKER_INFLUXDB_INIT_USERNAME=admin \

      -e DOCKER_INFLUXDB_INIT_PASSWORD=admin1234 \

      -e DOCKER_INFLUXDB_INIT_ORG=my-org \

      -e DOCKER_INFLUXDB_INIT_BUCKET=my-bucket \

      influxdb:2.0

注意点1:这里的PASSWORD不能太短,否则启动会报错(晕)

注意点2:这边安装的是2.0版本,和1.*版本在使用上有很大不同,请注意区分

3、WEB管理后台

直接访问服务器8086端口

还能看到Java的使用示例

还有超多可用数据源

4、基本概念

4.1、与传统数据库中的名词做比较

注意点:2.*版本中已经没有database了,取而代之的是bucket

4.2、Point

Point由时间戳(time)、数据(field)、标签(tags)组成。

Point相当于传统数据库里的一行数据,如下表所示:

5、增删改查操作

6、Java Spring Demo

写了个springboot整合InfluxDB2.*的demo

https://github.com/xuhai19901018/InfluxDBDemo

7、数据收集实践

下边以计算机系统监控作为示例,来尝试下数据收集吧。

首先在需要监控的主机上安装Telegraf插件,我的测试服务器系统是debian11。

apt update 

apt install apt-transport-https

wget  https://repos.influxdata.com/influxdb.key

apt-key add influxdb.key

apt update 

apt install telegraf

systemctl start telegraf

在InfluxDB的web管理后台添加配置

直接告诉你下步要做啥了,在刚刚安装Telegraf插件的主机上执行上图中的两条命令

成功。

查询下是否有数据了

influx query 'from(bucket:"my-bucket")|> range(start:-3m)  '

出来好多数据,默认监控的东西太多了,修改下Telegraf配置,只监控cpu,并增加查询条件

influx query 'from(bucket:"my-bucket")|> range(start:-3m) |> filter(fn: (r) => r._measurement == "cpu" and r._field == "usage_idle" and r.cpu == "cpu-total" ) '

图形化数据展示

参考文章

Influxdb基本操作(详细) (这边的应该是1.*版本的使用方法)

spring boot使用InfluxDB超简单三步搞定(这边的应该是1.*版本的使用方法)

InfluxDB详解

盘点市面上主流的时序数据库

springboot整合influxdb2.x

influxDB 2.0安装及使用说明

influxdb2.0官方文档

上一篇下一篇

猜你喜欢

热点阅读