一、influxdb的介绍
InfluxDB 是一种时序数据库,时序数据库通常被用在监控场景,比如运维和 IOT(物联网)领域。这类数据库旨在存储时序数据并实时处理它们。
比如。我们可以写一个程序将服务器上 CPU 的使用情况每隔 10 秒钟向 InfluxDB 中写入一条数据。接着,我们写一个查询语句,查询过去 30 秒 CPU 的平均使用情况,然后让这个查询语句也每隔 10 秒钟执行一次。最终,我们配置一条报警规则,如果查询语句的执行结果>xxx,就立刻触发报警。
上述就是一个指标监控的场景,在 IOT 领域中,也有大量的指标需要我们监控。比如, 机械设备的轴承震动频率,农田的湿度温度等等。
二、influxdb行协议
InfluxDB 行协议是 InfluxDB 数据库独创的一种数据格式,它由纯文本构成,只要数据 符合这种格式,就能使用 InfluxDB 的 HTTP API 将数据写入数据库。 与 CSV 相似,在 InfluxDB 行协议中,一条数据和另一条数据之间使用换行符分隔, 所以一行就是一条数据。另外,在时序数据库领域,一行数据一行数据由下面 4 种元素构成。
三、官网下载地址
https://docs.influxdata.com/influxdb/v2/install/?t=Linux
我这里直接复制出连接下载了,会快很多。根据自己的版本自行下载
# 下载
[root@192 bin]# mkdir /root/influxdb/
[root@192 bin]# https://dl.influxdata.com/influxdb/releases/influxdb2-2.7.3-linux-amd64.tar.gz
# 解压
[root@192 bin]# tar xvzf path/to/influxdb2-2.7.3-linux-amd64.tar.gz
# 配置软连接
[root@192 bin]# pwd
/root/influxdb/influxdb2-2.7.3/usr/bin
[root@192 bin]# cp influxd /usr/local/bin/
四、配置influxdb参数
- 相关的参数含义查看官网:https://docs.influxdata.com/influxdb/v2/reference/config-options/
- 如果不指定参数的话,influxdb的相关数据会存放到
/root/.influxdbv2/
目录下。
- *根据官网介绍指定配置属性有三种方式,这里我们采用配置文件的形式,即在influxd的同级目录新建config.的文件
在influxd的同级目录下新建config.yaml文件,具体的参数含义可查看官网或使用./influxd help查看。
[root@VM-24-17-centos bin]# pwd
/root/influxdb2-2.7.3/usr/bin
[root@VM-24-17-centos bin]# ll
总用量 102368
-rw-r--r-- 1 root root 292 1月 19 10:28 config.yaml
drwxr-xr-x 5 root root 4096 1月 19 10:39 engine
-rwxr-xr-x 1 root root 103292584 10月 17 23:47 influxd
-rw-r--r-- 1 root root 1280637 1月 25 13:47 influxdb.log
-rw------- 1 root root 131072 1月 25 09:30 influxd.bolt
-rw-r--r-- 1 root root 122880 1月 19 10:19 influxd.sqlite
[root@VM-24-17-centos bin]# cat config.yaml
http-bind-address : :8087
query-concurrency : 20
query-queue-size : 30
bolt-path : /root/influxdb2-2.7.3/usr/bin/influxd.bolt
sqlite-path : /root/influxdb2-2.7.3/usr/bin/influxd.sqlite
#assets-path : /root/influxdb2-2.7.3/usr/bin/assets-dir
engine-path : /root/influxdb2-2.7.3/usr/bin/engine
五、运行influxdb
# 前台运行
[root@192 bin]# influxd
# 后台启动
[root@192 bin]#cd /root/installed/influxdb/usr/bin
[root@192 bin]#nohup ./influxd > influxdb.log 2>&1 &
六、登录web初始化信息
注意是http协议 不是https协议
http://192.168.112.130:8086/
获取授权的Token 左侧->API Tokens->All Access API Token->输入名称后->就是授权的Token了
后面会提如何使用Api token的方式使用客户端以及java api的方式操作infxludb
七、附录
unable to open boltdb: timeout
unable to open boltdb: timeout
https://github.com/influxdata/influxdb/issues/24320
这个问题通过一种奇怪的方式解决:
# backup bolt db then delete it
cp influxd.bolt influxd.bolt.bak
rm influxd.bolt
然后重新启动influx,现在influx应该运行良好了~
现在让我们做一些神奇的事情吧😂
cp influxd.bolt.bak influxd.bolt
问题分析:
通常螺栓超时是因为其他东西(通常是另一个 influxdb 进程)也打开了该文件。如果再次发生这种情况,我会首先检查您的进程列表以确保没有发生这种情况。
当检查我的系统监视器时,我在端口 72 上看到一个名为 influxd 的进程,用户为 Root…我使用“sudo Kill -9 processId”命令终止了该进程。我只和 SUDO 合作,为了引起大家的注意。(我认为这是因为它是一个根进程)。然后就可以重新启动influxdb了
jar包启动
## 启动jar包前执行这句,避免jvm占用内存过多
[root@VM-24-17-centos dm_prometheus]# export MALLOC_ARENA_MAX=2
## 如果机器内存比较大可调整为 -Xms128m -Xmx1024m
[root@VM-24-17-centos dm_prometheus]# nohup java -jar -Xms256m -Xmx512m sql_realtime_parse_tool-0.0.9.jar > ./sql_realtime_parse_tool.log 2>&1 &
sql_realtime_parse_tool-0.0.7.jar