Influxdb1.8.5
一、Prometheus
1.1、Prometheus的下载
下载链接: https://prometheus.io/download/
1.2、Prometheus的安装
tar -xvf prometheus-2.26.0.linux-amd64
1.3、Prometheus的运行
#进入prometheus安装目录,执行命令
./prometheus --config.file=prometheus.yml
# 查看运行状态
netstat -lnp|grep 9090
crul测试
curl http://IP地址:9090/metrics
浏览器打开 IP地址:9009测试
二、Influxdb安装配置
2.1、Influxdb安装
influxdb的官方下载地址为: https://portal.influxdata.com/downloads/
根据不同系统进行下载,这里使用官方提供的二进制进行安装。
这里使用1.8.5为例
# 下载2.0.6版本
wget https://dl.influxdata.com/influxdb/releases/influxdb2-2.0.6-linux-amd64.tar.gz
# 解压2.0.6版本
tar xvfz influxdb2-2.0.6-linux-amd64.tar.gz
# 配置环境变量
sudo cp influxdb2-2.0.6-linux-amd64/{influx,influxd} /usr/local/bin/
# 下载1.8.5版本
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.8.5_linux_amd64.tar.gz
# 解压1.8.5版本
tar xvfz influxdb-1.8.5_linux_amd64.tar.gz
# 查看端口是否监听
ss -lnput | grep 8086
# 启动influxdb服务端
# 进入InfluxDB目录下的usr/bin文件夹,执行:
./influxd
## 指定配置配置文件启动
./influxd -config /opt/home/influxdb-1.8.5-1/etc/influxdb/influxdb.conf
## 后台启动使用 ./influxd 启动,会占用控制台,关闭连接进程就关闭
## 可以将influxdb作为后台服务运行 可以使用nohup命令实现
## 默认配置文件启动
## 相对路径: ./influxd
## 绝对路径: /opt/home/influxdb-1.8.5-1/usr/bin/influxd
nohup ./influxd >/dev/null 2>&1 &
nohup /opt/home/influxdb-1.8.5-1/usr/bin/influxd >/dev/null 2>&1 &
## 指定配置文件启动
nohup ./influxd -config /opt/home/influxdb-1.8.5-1/etc/influxdb/influxdb.conf >/dev/null 2>&1 &
# 启动influxdb客户端 进入Influxdb目录下的usr/bin文件夹 执行./influx
./influx
2.2、配置prometheus集成infludb
#修改prometheus.yml文件
vim prometheus.yml
# 添加如下几行
remote_write:
- url: "http://IP地址:8086/api/v1/prom/write?db=prometheus"
remote_read:
- url: "http://IP地址:8086/api/v1/prom/read?db=prometheus"
# 重启 注意: 如果influxdb配置有密码, 请参考上面的官方文档地址进行配置。
systemctl restart prometheus
systemctl status prometheus
2.3、测试数据是否存储到influxdb中
# 登陆客户端
./influx
# 显示所有的数据库
show databases;
2.4、配置文件讲解
# reporting-disabled = false # 该选项用于上报influxdb的使用信息给InfluxData公司,默认值为false
# bind-address = "127.0.0.1:8088" # 备份恢复时使用,默认值为8088
### [meta]
[meta]
dir = "/var/lib/influxdb/meta" # meta数据存放目录
# retention-autocreate = true # 用于控制默认存储策略,数据库创建时,会自动生成autogen的存储策略,默认值:true
# logging-enabled = true # 是否开启meta日志,默认值:true
### [data]
[data]
dir = "/var/lib/influxdb/data" # 最终数据(TSM文件)存储目录
wal-dir = "/var/lib/influxdb/wal" # 预写日志存储目录
# wal-fsync-delay = "0s" #在同步写入之前等待的总时间,默认0s
# index-version = "inmem" #用于新碎片的切分索引的类型。
# trace-logging-enabled = false #跟踪日志记录在tsm引擎周围提供了更详细的输出
# query-log-enabled = true # 是否开启tsm引擎查询日志,默认值: true
# Valid size suffixes are k, m, or g (case insensitive, 1024 = 1k).
# cache-max-memory-size = "1g" # 用于限定shard最大值,大于该值时会拒绝写入,默认值:1000MB,单位:byte
# Valid size suffixes are k, m, or g (case insensitive, 1024 = 1k).
# cache-snapshot-memory-size = "25m" # 用于设置快照大小,大于该值时数据会刷新到tsm文件,默认值:25MB,单位:byte
# cache-snapshot-write-cold-duration = "10m" # tsm引擎 snapshot写盘延迟,默认值:10Minute
# compact-full-write-cold-duration = "4h" # tsm文件在压缩前可以存储的最大时间,默认值:4Hour
# max-concurrent-compactions = 0 #压缩并发的最大数量,默认设置为0表示runtime.GOMAXPROCS(0)*50% ,否则以设置的非零值为准
# Valid size suffixes are k, m, or g (case insensitive, 1024 = 1k).
# max-index-log-file-size = "1m" #限制索引日志文件大小
# max-series-per-database = 1000000 # 限制数据库的级数,该值为0时取消限制,默认值:1000000
# max-values-per-tag = 100000 # 一个tag最大的value数,0取消限制,默认值:100000
# tsm-use-madv-willneed = false #如果为true,mmap的建议值MADV_WILLNEED会被提供给内核
### [coordinator]
[coordinator]
# write-timeout = "10s" # 写操作超时时间,默认值: 10s
# max-concurrent-queries = 0 # 最大并发查询数,0无限制,默认值: 0
# query-timeout = "0s" # 查询操作超时时间,0无限制,默认值:0s
# log-queries-after = "0s" # 慢查询超时时间,0无限制,默认值:0s
# max-select-point = 0 # SELECT语句可以处理的最大点数(points),0无限制,默认值:0
# max-select-series = 0 # SELECT语句可以处理的最大级数(series),0无限制,默认值:0
# max-select-buckets = 0 # SELECT语句可以处理的最大"GROUP BY time()"的时间周期,0无限制,默认值:0
### [retention]
[retention]
# enabled = true # 是否启用该模块,默认值 : true
# check-interval = "30m" # 检查时间间隔,默认值 :"30m"
### [shard-precreation]
[shard-precreation]
# enabled = true # 是否启用该模块,默认值 : true
# check-interval = "10m" # 检查时间间隔,默认值 :"10m"
# advance-period = "30m" # 预创建分区的最大提前时间,默认值 :"30m"
[monitor]
# store-enabled = true # 是否启用该模块,默认值 :true
# store-database = "_internal" # 默认数据库:"_internal"
# store-interval = "10s" # 统计间隔,默认值:"10s"
### [http]
[http]
# enabled = true # 是否启用该模块,默认值 :true
# bind-address = ":8086" # 绑定地址,默认值 :":8086"
# auth-enabled = false # 是否开启认证,默认值:false
# realm = "InfluxDB" # 配置JWT realm,默认值: "InfluxDB"
# log-enabled = true # 是否开启日志,默认值:true
# suppress-write-log = false #在启用日志时是否抑制HTTP写请求日志
# access-log-path = "" #当启用HTTP请求日志时,该选项指定了路径。如influxd不能访问指定的路径,它将记录一个错误并将请求日志写入stderr
# write-tracing = false # 是否开启写操作日志,如果置成true,每一次写操作都会打日志,默认值:false
# pprof-enabled = true # 是否开启pprof,默认值:true
# debug-pprof-enabled = false # 是否开启pprof,默认值:true
# https-enabled = false # 是否开启https ,默认值 :false
# https-certificate = "/etc/ssl/influxdb.pem" # 设置https证书路径,默认值:"/etc/ssl/influxdb.pem"
# https-private-key = ""# 设置https私钥,无默认值
# shared-secret = "" # 用于JWT签名的共享**,无默认值
# max-row-limit = 0 # 配置查询返回最大行数,0无限制,默认值:0
# max-connection-limit = 0 # 配置最大连接数,0无限制,默认值:0
# unix-socket-enabled = false # 是否使用unix-socket,默认值:false
# bind-socket = "/var/run/influxdb.sock" # unix-socket路径,默认值:"/var/run/influxdb.sock"
# max-body-size = 25000000 #客户端请求主体的最大值,以字节为单位。0无限制,默认值0
# max-concurrent-write-limit = 0 #并发处理的最大写入次数,0无限制,默认值0
# max-enqueued-write-limit = 0 #排队等待处理的最大数量,0无限制,默认值0
# enqueued-write-timeout = 0 #在队列中等待处理的最长时间,0或者setting max-concurrent-write-limit=0无限制,默认值0
### [ifql]
[ifql]
# enabled = true# 是否启用该模块,默认值 :true
# log-enabled = true# 是否开启日志,默认值:true
# bind-address = ":8082" #ifql RPC服务使用的绑定地址默认是8082
### [logging]
[logging]
# format = "auto" #日志格式,默认是自动
# level = "info" #日志级别默认info
# suppress-logo = false #当程序启动时,会抑制打印出来的logo输出
### [subscriber]
[subscriber]
# enabled = true # 是否启用该模块,默认值 :true
# http-timeout = "30s" # http超时时间,默认值:"30s"
# insecure-skip-verify = false # 是否允许不安全的证书
# ca-certs = "" # 设置CA证书
# write-concurrency = 40 #设置并发数目,默认值:40
# write-buffer-size = 1000 # 设置buffer大小,默认值:1000
### [[graphite]]
[[graphite]]
# enabled = false# 是否启用该模块,默认值 :false
# database = "graphite"# 数据库名称,默认值:"graphite"
# retention-policy = "" # 存储策略,无默认值
# bind-address = ":2003"# 绑定地址,默认值:":2003"
# protocol = "tcp"# 协议,默认值:"tcp"
# consistency-level = "one" # 一致性级别,默认值:"one
# batch-size = 5000 # 批量size,默认值:5000
# batch-pending = 10# 配置在内存中等待的batch数,默认值:10
# batch-timeout = "1s" # 超时时间,默认值:"1s"
# udp-read-buffer = 0# udp读取buffer的大小,0表示使用操作系统提供的值,如果超过操作系统的默认配置则会出错。 该配置的默认值:0
# separator = "." # 多个measurement间的连接符,默认值: "."
# tags = ["region=us-east", "zone=1c"] #将被添加到所有指标的默认标签。这些可以在模板级别上覆盖或者从指标中提取的标签
# templates = [
# "*.app env.service.resource.measurement",
# # Default template
# "server.*",
# ]
### [collectd]
[[collectd]]
# enabled = false# 是否启用该模块,默认值 :false
# bind-address = ":25826" # 绑定地址,默认值: ":25826"
# database = "collectd"# 数据库名称,默认值:"collectd"
# retention-policy = "" # 存储策略,无默认值
# typesdb = "/usr/local/share/collectd" # 路径,默认值:"/usr/share/collectd/types.db"
# security-level = "none" #安全级别
# auth-file = "/etc/collectd/auth_file"
# batch-size = 5000 #从缓存中批量获取数据的量,默认值:5000
# batch-pending = 10 #可能在内存中等待的批次的数量,默认值:10
# batch-timeout = "10s" #即使没有达到缓冲区的限制,至少要刷新一下,默认值:"10s"
# read-buffer = 0 #udp读取buffer的大小,0表示使用操作系统提供的值,如果超过操作系统的默认配置则会出错。默认值:0
# parse-multivalue-plugin = "split" #两种处理方式split和join,split会分到不同的表中,join会将记录作为一个单独的记录处理。默认是split
### [opentsdb]
[[opentsdb]]
# enabled = false# 是否启用该模块,默认值 :false
# bind-address = ":4242"# 绑定地址,默认值:":4242"
# database = "opentsdb" # 默认数据库:"opentsdb"
# retention-policy = ""# 存储策略,无默认值
# consistency-level = "one" # 一致性级别,默认值:"one"
# tls-enabled = false # 是否开启tls,默认值:false
# certificate= "/etc/ssl/influxdb.pem" # 证书路径,默认值:"/etc/ssl/influxdb.pem"
# log-point-errors = true# 出错时是否记录日志,默认值:true
# batch-size = 1000 #从缓存中批量获取数据的量,默认值:1000
# batch-pending = 5 #可能在内存中等待的批次的数量,默认值:5
# batch-timeout = "1s" #即使没有达到缓冲区的限制,至少要刷新一下,默认值:"1s"
### [[udp]]
[[udp]]
# enabled = false# 是否启用该模块,默认值 :false
# bind-address = ":8089" # 绑定地址,默认值:":8089"
# database = "udp"# 数据库名称,默认值:"udp"
# retention-policy = "" # 存储策略,无默认值
# precision = "" #接收点的时间点的精度("" or "n", "u", "ms", "s", "m", "h")
# batch-size = 5000#从缓存中批量获取数据的量,默认值:5000
# batch-pending = 10 #可能在内存中等待的批次的数量,默认值:10
# batch-timeout = "1s" #即使没有达到缓冲区的限制,至少要刷新一下,默认值:"1s"
# read-buffer = 0# udp读取buffer的大小,0表示使用操作系统提供的值,如果超过操作系统的默认配置则会出错。 该配置的默认值:0
### [continuous_queries]
[continuous_queries]
# enabled = true# 是否启用该模块,默认值 :true
# log-enabled = true# 是否开启日志,默认值:true
# query-stats-enabled = false #控制查询是否被记录到自我监控数据存储中
# run-interval = "1s" # 时间间隔,默认值:"1s"
### [tls]
[tls]
# ciphers = [
# "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305",
# "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
# ]
# min-version = "tls1.2"
# max-version = "tls1.2"
2.5、Influxdb命令
2.5.1、基本命令
## 查看所有的数据库
show databases
# 退出
exit
## 创建数据库
create database promethus
## 删除数据库
drop database promethus
## 选择数据库
use prometheus
## 查看所有的表
show measurements
## 查询
select * from http_requests_total
select * from go_info
## 根据日期范围查询
select * from go_info where time >= '2021-05-10T02:00:00.000Z' and time <= '2021-05-10T03:00:00.000Z'
## 设置显示的时间格式
precision rfc3339
## 启动时设置格式
## 该-precision参数指定任何返回的时间戳的格式/精度。(YYYY-MM-DDTHH:MM:SS.nnnnnnnnnZ)返回时间戳。
./influx -precision rfc3339
## 创建表,直接在插入数据的时候指定表名(weather就是表名)
insert weather,altitude=1000,area=北 temperature=11,humidity=-4
## 删除表
drop measurement "measurement_name"
## 建立保留策略(retention policy) duration: 1h, 90m, 12h, 7d, 4w, INF 最小1h, 最大INF
create retention policy rp_collectd on collectd duration 1w replication 1 default
## 通过http添加数据
curl -i -XPOST ‘http://localhost:8086/write?db=testDB’ –data-binary 'weather,altitude=1000,area=北 temperature=11,humidity=-4'
## 查询10条数据
select * from measurement_name limit 10;
## 查看一个measurement中所有的tag key
show tag keys
## 查看一个measurement中所有的field key
show field keys
## 查看一个measurement中所有的保存策略(可以有多个,一个标识为default)
show retention policies
2.5.2、数据备份与还原
## Backup 命令
## InfluxDB 的 backup 命令可以生成一定的数据,并且创建保存至指定的目录中。在目录中将会根据 UTC 时间戳进行命令保存。
## 备份所有数据 <path-to-backup> 备份文件存放的路径
# influxd backup -portable <path-to-backup>
influxd backup -portable backup/
## 备份 指定仅备份prometheus数据库(使用 -database 参数指定备份的数据库)
## <db> 要备份的数据库。如果未指定,则备份所有数据库。 <path-to-backup> 备份文件存放的路径
# ./influxd backup -portable -database <db> <path-to-backup>
./influxd backup -portable -database prometheus backup/
## 要在指定的时间间隔内备份数据库(使用 -start 和 -end 参数指定备份的时间段) <timestamp>需要备份的时间 <path-to-backup>备份文件存放的路径
# ./influxd backup -portable -database <db> -start <timestamp> -end <timestamp> <path-to-backup>
## 日期格式 2021-05-10T02:00:00.000Z 2021-05-10T02:00:00Z
./influxd backup -portable -database prometheus -start '2021-05-10T02:00:00.000Z' -end '2021-05-10T03:00:00.000Z' backup/
## Restore 命令
## 上面介绍了使用 backup 命令来备份数据,那么肯定也要介绍如何使用 restore 命令来恢复数据。
## 还原指定prometheus 数据库(prometheus 数据库必须不存在):
./influxd restore -portable -db prometheus backup/
## 恢复到新的数据库
./influxd restore -portable -db prometheus -newdb prometheus2 /opt/home/influxdb-1.8.5-1/usr/bin/backup
## 如果的确需要将数据还原至现有的数据库中,在 influxdb 官网推荐的做法如下:
## 1.将现有数据库备份还原到临时数据库
./influxd restore -portable -db prometheus -newdb prometheus_bak path-to-backup
## 2.(使用SELECT ... INTO语句)将数据侧载到现有目标数据库中,然后删除临时数据库。
> USE prometheus_bak
> SELECT * INTO prometheus..:MEASUREMENT FROM /.*/ GROUP BY *
> DROP DATABASE prometheus_bak
## 3.还有另外一个数据,就是将查询一个时间段的数据,再插入到另一个数据库中,如下:
> show databases
name: databases
name
----
_internal
prometheus
prometheus2
> use prometheus2
Using database prometheus2
> precision rfc3339
> select * into prometheus..:MEASUREMENT from /.*/ where time >= '2021-05-27T00:00:00.000Z' and time <= '2021-05-28T00:00:00.000Z'
name: result
time written
---- -------
1970-01-01T00:00:00Z 1442857
>
InfluxDB 的 backup 命令可以生成一定的数据,并且创建保存至指定的目录中。在目录中将会根据 UTC 时间戳进行命令保存。
[root@iZ2ze3gakdimayf5kglcuvZ backup]# ll
总用量 2928
-rw------- 1 root root 681 5月 27 14:21 20210527T062148Z.manifest
-rw-r--r-- 1 root root 557 5月 27 14:21 20210527T062148Z.meta
-rw------- 1 root root 658043 5月 27 14:21 20210527T062148Z.s58.tar.gz
-rw------- 1 root root 271226 5月 27 14:21 20210527T062148Z.s59.tar.gz
-rw------- 1 root root 2053128 5月 27 14:21 20210527T062148Z.s60.tar.gz
从上面的执行示例可以看到生成了存储文件如下:
- 20210527T062148Z.meta 则是 metastore 副本数据,包含 用户名以及密码。
- 20210527T062148Z.s58.tar.gz 为分片副本数据。
- 20210527T062148Z.manifest 为 JSON 格式文件,用于描述搜集的备份数据内容说明。
另外,要注意的一个地方就是 backup 备份的数据是忽略 WAL 文件以及在内存中的缓存数据的
2.5.3、backup 命令的参数说明
[root@iZ2ze3gakdimayf5kglcuvZ bin]# ./influxd backup -h
Creates a backup copy of specified InfluxDB OSS database(s) and saves the files in an Enterprise-compatible
format to PATH (directory where backups are saved).
Usage: influxd backup [options] PATH
-portable # 以较新的InfluxDB Enterprise兼容格式生成备份文件。强烈建议所有InfluxDB OSS用户使用。
Required to generate backup files in a portable format that can be restored to InfluxDB OSS or InfluxDB
Enterprise. Use unless the legacy backup is required.
-host <host:port> # InfluxDB OSS实例的主机和端口。默认值为'127.0.0.1:8088'。远程连接所必需。例:-host 127.0.0.1:8088
InfluxDB OSS host to back up from. Optional. Defaults to 127.0.0.1:8088.
-db <name> # 要备份的数据库。如果未指定,则备份所有数据库。
InfluxDB OSS database name to back up. Optional. If not specified, all databases are backed up when
using '-portable'.
-rp <name> # 备份的保留策略。如果未指定,则默认为使用所有保留策略。如果指定,则需要使用 -database 指定数据库实例。
Retention policy to use for the backup. Optional. If not specified, all retention policies are used by
default.
-shard <id> # 要备份的分片的分片ID。如果指定,-retention <name> 则为必需。
The identifier of the shard to back up. Optional. If specified, '-rp <rp_name>' is required.
-start <2015-12-24T08:12:23Z>
# 设置备份数据的时间起点(RFC3339格式),不兼容-since。例:-start 2015-12-24T08:12:23Z
Include all points starting with specified timestamp (RFC3339 format).
Not compatible with '-since <timestamp>'.
-end <2015-12-24T08:12:23Z>
# 排除指定时间戳记(RFC3339格式)之后的所有结果,不兼容-since。如果不使用-start,则将从1970-01-01开始备份所有数据。例:-end 2015-12-31T08:12:23Z
Exclude all points after timestamp (RFC3339 format).
Not compatible with '-since <timestamp>'.
-since <2015-12-24T08:12:23Z>
# 在指定的时间戳记RFC3339格式之后执行增量备份。-start除非有旧版备份支持,否则请改用。建议使用 -start 参数。
Create an incremental backup of all points after the timestamp (RFC3339 format). Optional.
Recommend using '-start <timestamp>' instead.
-skip-errors # 跳过备份过程中发生的错误。
Optional flag to continue backing up the remaining shards when the current shard fails to backup.
backup: flag: help requested
root@9aaa0db75c4d:~#
2.5.4、restore 命令的参数说明
root@9aaa0db75c4d:~# ./influxd restore -h
Uses backup copies from the specified PATH to restore databases or specific shards from InfluxDB OSS
or InfluxDB Enterprise to an InfluxDB OSS instance.
Usage: influxd restore -portable [options] PATH
Note: Restore using the '-portable' option consumes files in an improved Enterprise-compatible
format that includes a file manifest.
Options:
-portable
Required to activate the portable restore mode. If not specified, the legacy restore mode is used.
# 对InfluxDB OSS使用新的企业兼容备份格式。推荐使用该参数。可以将在InfluxDB Enterprise上创建的备份还原到InfluxDB OSS实例。
-host <host:port>
InfluxDB OSS host to connect to where the data will be restored. Defaults to '127.0.0.1:8088'.
# InfluxDB OSS实例的主机和端口。默认值为'127.0.0.1:8088'。远程连接所必需。例:-host 127.0.0.1:8088
-db <name>
Name of database to be restored from the backup (InfluxDB OSS or InfluxDB Enterprise)
# 要从备份还原的数据库的名称。如果未指定,将还原所有数据库。
-newdb <name>
Name of the InfluxDB OSS database into which the archived data will be imported on the target system.
Optional. If not given, then the value of '-db <db_name>' is used. The new database name must be unique
to the target system.
# 将在目标系统上导入存档数据的数据库的名称。如果未指定,则使用的-db 指定的数据库实例名称。新的数据库名称对于目标系统必须是唯一的。
-rp <name>
Name of retention policy from the backup that will be restored. Optional.
Requires that '-db <db_name>' is specified.
# 将从备份中恢复的保留策略的名称。需要-db设置。如果未指定,将使用所有保留策略。
-newrp <name>
Name of the retention policy to be created on the target system. Optional. Requires that '-rp <rp_name>'
is set. If not given, the '-rp <rp_name>' value is used.
-shard <id>
Identifier of the shard to be restored. Optional. If specified, then '-db <db_name>' and '-rp <rp_name>' are
required.
# 要在目标系统上创建的保留策略的名称。需要-rp设置。如果未指定,则使用该-rp值。
PATH
Path to directory containing the backup files.
# 用来恢复数据的备份文件路径
restore: flag: help requested
root@9aaa0db75c4d:~#
2.5.5、 还原数据时,您可能会看到指定时间段之外的数据
官方文档解释: https://docs.influxdata.com/influxdb/v1.8/administration/backup_and_restore/
2.5.6、Admin密码
## 显示用户
show users
## 创建用户
CREATE USER "username" WITH PASSWORD 'password'
## 创建管理员权限的用户
CREATE USER "username" WITH PASSWORD 'password' WITH ALL PRICILEGES
## 删除用户
drop user 'username'
SET PASSWORD FOR admin ='123456789'
注意:新建用户时候,用户名要用双引号,密码用单引号
开启密码登录
修改配置文件 influxdb.conf
然后重启influxdb服务
控制台命令
./influx -username root -password root
## -username后边的root,是添加的用户名
## -password后边的root,是添加的用户名的密码
2.6、InfluxDB保留策略
2.6.1、InfluxDB 数据保留策略 说明
InfluxDB的数据保留策略(RP) 用来定义数据在InfluxDB中存放的时间,或者定义保存某个期间的数据。
一个数据库可以有多个保留策略,但每个策略必须是独一无二的。
2.6.2、InfluxDB 数据保留策略 目的
InfluxDB本身不提供数据的删除操作,因此用来控制数据量的方式就是定义数据保留策略。
因此定义数据保留策略的目的是让InfluxDB能够知道可以丢弃哪些数据,从而更高效的处理数据。
2.6.3、InfluxDB 数据保留策略 操作
查询策略
## 查看数据库的现有策略:
> SHOW RETENTION POLICIES ON prometheus
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 0s 168h0m0s 1 true
可以看到,telegraf只有一个策略,各字段的含义如下:
- name–名称,此示例名称为 autogen
- duration–持续时间,0代表无限制
- shardGroupDuration–shardGroup的存储时间,shardGroup是InfluxDB的一个基本储存结构,应该大于这个时间的数据在查询效率上应该有所降低。
- replicaN–全称是REPLICATION,副本个数
- default–是否是默认策略
新建策略
> CREATE RETENTION POLICY "2_hours" ON "prometheus" DURATION 2h REPLICATION 1 DEFAULT
> SHOW RETENTION POLICIES ON prometheus
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 0s 168h0m0s 1 false
2_hours 2h0m0s 1h0m0s 1 true
## 通过上面的语句可以添加策略,本例在 prometheus库添加了一个2小时的策略,名字叫做 2_hours, duration为2小时,副本为1,设置为默认策略。
## 因为名为autogen 的策略不再是默认策略,因此,在查询使用default策略的表时要显式的加上策略名 “default”。
修改策略
> ALTER RETENTION POLICY "2_hours" ON "prometheus" DURATION 4h DEFAULT
> show retention POLICIES on prometheus
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 0s 168h0m0s 1 false
2_hours 4h0m0s 1h0m0s 1 true
# 可以看到,修改后的策略发生了变化。
删除策略
> show retention POLICIES on prometheus
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 0s 168h0m0s 1 false
2_hours 4h0m0s 1h0m0s 1 true
> drop retention POLICY "2_hours" ON "prometheus"
> show retention POLICIES on prometheus
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 0s 168h0m0s 1 false
##可以看到,名为2_hours的策略已经被删除了
2.7、和传统数据库对比
和传统数据库对比 influxdb在相关概念上有一定不同,具体如下:
influxdb 中的概念 | 传统数据库中的概念 |
---|---|
database | 数据库 |
measurement | 数据库中的表 |
point | 表中的一行数据 |
point的数据结构由时间戳(time)、标签(tags)、数据(fields)三部分组成,具体含义如下:
point 属性 | 含义 |
---|---|
time | 数据记录的时间,是主索引(自动生成) |
tags | 各种有索引的属性 |
fields | 各种value值(没有索引的属性) |
PS: 记得放行端口,prometheus :9090,influxdb:8086
三、可视化工具InfluxDBStudio
3.1、下载
链接:https://github.com/CymaticLabs/InfluxDBStudio/releases/tag/v0.2.0-beta.1
3.2、创建or编辑InfluxDB
软件虽然界面简陋,但是目前暂未发现另一款可以可视化操作InfluxDB的软件,
虽然简陋,但是还是很容易上手,简单介绍下如何使用
- Name 名称 - 连接的名称。这是使用此连接时将看到的标签
- Address 地址 - InfluxDB服务器的主机URI。排除协议信息。端口填写在右侧
- Database 数据库 - 用于连接的数据库。将其留空以列出所有数据库(需要管理员权限)
- UserName 用户名 - 用于连接的InfluxDB用户名
- Password 密码 - 与连接一起使用的InfluxDB密码
- Security - Use SSL 使用SSL - 连接到InfluxDB时是否使用SSL安全性(HTTPS)
单击“Test”,提示如下,证明连接成功