性能测试工具 InfluxDB 服务搭建

机械师 · 2024年04月08日 · 2419 次阅读

InfluxDB 服务搭建

1,InfluxDB 简介

InfluxDB 是用 Go 语言写的高性能、高可用的分布式时序数据存储数据库,无其他依赖,安装简单快捷。
该数据库现在主要用于存储涉及大量的时间戳数据,如 DevOps 监控数据,APP metrics,loT 传感器数据和实时分析数据。
主要分为两个系列:云模式 InfluxDB Cloud 和独立部署的 InfluxDB OSS。查询语言,1.x 版本用的是类 SQL 语言 InfluxQL,2.x 版本后用的是 Flux 脚本语言。
TICK 是 InfluxDB 平台组件集的缩写,分别代表 Telegraf(数据收集器)、InfluxDB(时序数据库)、Chronograf(可视化 UI)、Kapacitor(监控服务)。
关键概念:
database/bucket:database:数据库,这个是 1.x 中的概念;bucket:桶,相当于数据库,这个是 2.x 中的概念;
measurement:类似传统数据库中的表 table,但是是有区别的;
field set:是一系列的 key-value 值,包含 field key 和 field value,field key 是字符串,field value 可以是字符串、浮点型、整型、布尔型数据;field 是必须要有的字段,如果插入数据时,没有 field 是插入不成功的。field 是非索引的,所以在查询时使用 field 作为条件匹配是比较慢的。
tag set:包含 tag key 和 tag value,两者都是字符串;tag 是非必须的字段,但 tag 是索引的,所以使用 tag 做为查询条件,查询速度会更快。
timestamp:unix 时间戳,主索引;
单行数据示例如下:

2,下载及安装

官网地址:https://www.influxdata.com/
下载地址:https://www.influxdata.com/downloads/
安装文档:https://docs.influxdata.com/influxdb/v2/install/
Linux:

curl -O https://dl.influxdata.com/influxdb/releases/influxdb2-2.7.5-1.x86_64.rpm
sudo yum localinstall influxdb2-2.7.5-1.x86_64.rpm

Linux 下操作命令:
启动:sudo service influxdb start
查看状态:sudo service influxdb status
Docker:

docker run \
 -d \
 --name influxdb2 \
 --publish 8086:8086 \
 --mount type=volume,source=influxdb2-data,target=/var/lib/influxdb2 \
 --mount type=volume,source=influxdb2-config,target=/etc/influxdb2 \
 --env DOCKER_INFLUXDB_INIT_MODE=setup \
 --env DOCKER_INFLUXDB_INIT_USERNAME=<USERNAME> \
 --env DOCKER_INFLUXDB_INIT_PASSWORD=<PASSWORD> \
 --env DOCKER_INFLUXDB_INIT_ORG=<ORG_NAME> \
 --env DOCKER_INFLUXDB_INIT_BUCKET=<BUCKET_NAME> \
 influxdb:2

释义:
-d,后台运行。
--publish,8086 是数据库 UI 和 HTTP API 的端口号。
--mount,绑定数据卷,第一行是将数据库中的数据绑定到本地物理机,这样容器关闭后,数据不会丢;第二行是将数据库的配置绑定到本地物理机,这样在物理机上更改配置,可以同步到容器中;target 值即是本地物理机文件地址。
--env,setup 配置内容,依次是用户名、密码、组织、桶。这些参数也可以不在这里设置,在 UI 中设置也可以。
最后一行,指定了 influxdb 的版本号。

3,配置及启动

3.1,配置

在 1.x 版本中,Linux 的配置文件,在/etc/influxdb/influxdb.conf,在配置文件中我们主要修改以下内容:
(1)数据设置
【meta】dir="存放最终存储的数据的目录"。
【data】dir="存放数据库元数据的目录"。
【wal】wal-dir=“存放预写日志文件的目录”。
建议建立一个单独的 influxdb 目录,存储这些数据。
(2)http 设置
bind-address = ":8086",设置端口号,默认是 8086。
#Determines whether the HTTP endpoints are enabled.
是否启用 http 请求端点,开启后,可以使用 InfluxDB API。enabled 设置为 true 为打开。
enabled = true。
#Determines whether user authentication is enabled over HTTP and HTTPS.
在通过 http 和 https 请求时,是否启用用户身份验证;auth-enabled 设置为 false 为关闭。
auth-enabled = false。
参见:https://docs.influxdata.com/influxdb/v1/administration/config/#auth-enabled--false

在 2.x 版本中,配置文件为 config.yaml(yml、toml、json) 格式。更改配置有 3 种方式:
1,也可以通过 influxd 命令进行配置。
2,可以通过配置环境变量的方式配置。
3,可以通过编辑配置文件的内容直接配置
我们以更改端口号为例:
1,influxd 方式:

influxd --http-bind-address=:8086

2,配置环境变量的方式:

export INFLUXD_HTTP_BIND_ADDRESS=:8086

3,更改配置文件的方式:(YAML)

http-bind-address: ":8086"

具体的还有其他各个参数的配置方式
参见:https://docs.influxdata.com/influxdb/v2/reference/config-options/#assets-path

3.2,启动

在 1.x 版本中,Linux 启动 InfluxDB
方法一:指定配置文件启动
influxd -config /etc/influxdb/influxdb.cof
nohup influxd -config /etc/influxdb/influxdb.cof &
方法二:设置环境变量后启动
设置环境变量
export INFLUXDB_CONFIG_PATH=/etc/influxdb/influxdb.conf
重启配置
source /etc/profile
查看环境变量
echo $INFLUXDB_CONFIG_PATH
在指定目录,后台启动 InfluxDB
nohup influxd &

在 2.x 版本中,首先参照 2.x 的配置方式,完成配置设定,之后参照 1.x 中的方法二使用 influxd 命令启动服务。

4,数据库使用

启动 InfluxDB 服务后,我们使用http://localhost:8086,进入欢迎页和用户配置页面,在这里可以配置用户信息,以及组织和组织下的一个桶(数据库)。

设置完成后,进入如下页面。

influx 的使用
在 1.x 版本中,使用 influxQL,操作数据库,类似 MySQL。

$ influx -precision rfc3339
Connected to http://localhost:8086 version 1.8.10
InfluxDB shell 1.8.10
>

常用命令
show databases:查看数据库;
use database xxx:使用某个数据库;
create database "db_name":创建数据库;
drop database “db_name”:删除数据库;
show measurement:查看有哪些 measurement;
drop measurement “measurement_name”:删除某个 measurement。

在 2.x 版本中,使用 influx CLI,influx + command 来操作数据库。也可以使用 HTTP API 操作数据库。
influx CLI 常用操作举例:
查看数据库:influx bucket list
创建数据库:influx bucket create --name example-bucket
写入数据:

influx write \
  -b bucketName \
  -o orgName \
  -p s \
  'myMeasurement,host=myHost testField="testData" 1556896326'

查询数据:

influx query 'from(bucket: "bucketName")
  |> range(start: 1712133031, stop: 1712140231)
  |> filter(fn: (r) => r["_measurement"] == "measurementName")
'

具体的 command 参见:https://docs.influxdata.com/influxdb/v2/reference/cli/influx/

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册