InfluxDB部署和使用

  InfluxDB的安装方式非常简单,直接从官网下载rpm包后,安装就行

# influxdb时序数据库安装包
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.8.0.x86_64.rpm

# 采集和上报工具
wget https://dl.influxdata.com/telegraf/releases/telegraf-1.14.5-1.x86_64.rpm

# 图形化管理系统
wget https://dl.influxdata.com/chronograf/releases/chronograf-1.8.4.x86_64.rpm

# 实时数据分析和处理
wget https://dl.influxdata.com/kapacitor/releases/kapacitor-1.5.5-1.x86_64.rpm

  InfluxDB软件包提供的几个程序

influx:命令行工具
infulxd:服务器程序
influx_inspect:数据检查工具
influx_stress:压力测试工具
influx_tsm:数据库格式转换工具

  Influx命令参数

# 显示程序版本
-version
# 指定要连接主机的地址/主机名
-host 'host name'
# 指定连接主机的端口号  
-port 'port #'
# 以socket方式连接influxdb
-socket 'unix domain socket'
# 指定要连接的数据库名
-database 'database name'
# 认证密码
-password 'password'
# 认证用户
-username 'username'
# 启用https连接
-ssl
# 当使用https连接到集群时,不使用ssl验证
-unsafeSsl
# 直接执行命令
-execute 'command'
# 指定调用REPL时使用的查询语言
-type 'influxql|flux'
# 指定服务器响应数据的格式
-format 'json|csv|column'
# 指定时间戳格式,支持rfc3339、h、m、s、ms、u、ns       
-precision 'rfc3339|h|m|s|ms|u|ns'
# 指定写入一致性级别
-consistency 'any|one|quorum|all'
# 以友好的方式显示JSON
-pretty
# 从之前的备份文件中还原备份数据
-import
# 设置数据导入时每秒允许导入多少条时序数据,默认0,不做限制
-pps
# 需要还原的备份文件存储路径
-path
# 设置为true时,表示支持导入压缩格式的备份文件
-compressed

  Influxd命令参数

# 数据备份
backup
#显示influxd的默认配置信息
config
#显示帮助信息
help
#还原之前通过backup命令备份的数据
restore
#运行程序,默认参数
run
#显示influxd的版本信息
version

  InfluxDB配置文件

# 配置是否上报influxdb使用信息到usage.influxdata.com,默认false
reporting-disabled = false
# RPC服务监听地址,用于数据备份通信等,默认监听8088端口
bind-address = "127.0.0.1:8088"

# META节点配置信息如下
[meta]
# META数据和raft数据库的存储目录
  dir = "/data/influxdb/meta"
# 是否在创建数据库时创建默认保留策略autogen,默认true
  retention-autocreate = true
# 是否开启META日志,默认true
  logging-enabled = true

# DATA节点配置信息如下
[data]
# TSM文件存储目录
  dir = "/data/influxdb/data"
# 分片索引类型
  index-version = "inmem"
# WAL文件存储目录
  wal-dir = "/data/influxdb/wal"
# 在同步写入之前等待的总时间,默认0秒
  wal-fsync-delay = "0s"
# 检查写请求中的表名、标签键、标签值是否具有有效的UNICODE字符,会影响性能,默认false
  validate-keys = false
# 是否开启日志查询,默认true
  query-log-enabled = true
# 分片缓存最大值,超过该值时拒绝写入,默认1G,单位byte
  cache-max-memory-size = 1073741824
# 设置快照大小,超过该值会写入到TSM格式的文件中,默认25MB
  cache-snapshot-memory-size = 26214400
# TSM引擎快照写入磁盘延时,默认10分钟
  cache-snapshot-write-cold-duration = "10m0s"
# TSM文件在压缩前可以存储的最大时间,默认4小时
  compact-full-write-cold-duration = "4h0m0s"
# TSM压缩写入磁盘的速率限制(字节/秒)
  compact-throughput = 50331648
# TSM压缩写入磁盘的峰值速率限制(字节/秒)
  compact-throughput-burst = 50331648
# 设置数据库的时间序列最大值,0不限制,默认100000
  max-series-per-database = 1000000
# 设置一个标签键对应标签值的最大数量,0不限制,默认100000
  max-values-per-tag = 100000
# TSM压缩的最大并发数,默认0
  max-concurrent-compactions = 0
# WAL文件压缩到TSI索引文件的阀值,默认1M,字节
  max-index-log-file-size = 1048576
# TSI索引引擎用于存放处理后的时序结果的内部缓存大小
  series-id-set-cache-size = 100
# TSM引擎和WAL模块的调试日志记录,提供了更详细的输出,默认false
  trace-logging-enabled = false
# 如果为true,MMAP的建议值MADV_WILLNEED会提供给内核
  tsm-use-madv-willneed = false

# Coordinator配置信息如下
[coordinator]
# 写超时阈值,默认值为10秒
  write-timeout = "10s"
# 最大并发查询数,默认0,不限制
  max-concurrent-queries = 0
# 查询操作超时阈值,默认0,不限制
  query-timeout = "0s"
# 慢查询超时阈值,超时后生成一条慢查询日志,默认0秒,禁用该功能
  log-queries-after = "0s"
# 一次select操作可以处理的最大时序数据记录条数,默认0,不限制
  max-select-point = 0
# 一次select操作可以处理的最大时间序列线数量,默认0,不限制
  max-select-series = 0
# 一次select操作可以创建的group by时间段的最大数量,默认0,不限制
  max-select-buckets = 0

# 保留策略配置信息如下
[retention]
# 是否开启保留策略功能,默认为true
  enabled = true
# 检查时间间隔,默认30分钟
  check-interval = "30m0s"

# 分片预创建配置信息如下
[shard-precreation]
# 是否开启分片预创建服务,默认true
  enabled = true
# 检查时间间隔,默认10分钟
  check-interval = "10m0s"
# 创建分片组的最大提前时间间隔,默认30分钟
  advance-period = "30m0s"

# Monitor配置信息如下
[monitor]
# 是否开启monitor功能,默认true
  store-enabled = true
# 默认数据库名
  store-database = "_internal"
# 统计时间间隔,默认10秒
  store-interval = "10s"

# subscriber配置信息如下
[subscriber]
# 是否开启subcriber服务,默认true
  enabled = true
# HTTP通信超时阈值,默认时间30秒
  http-timeout = "30s"
# 是否准许接入自签名证书的HTTPS连接,默认false
  insecure-skip-verify = false
# 设置CA证书的存储目录
  ca-certs = ""
# 设置并发数,默认40
  write-concurrency = 40
# 设置写缓存大小,默认1000
  write-buffer-size = 1000

# HTTP服务配置信息如下
[http]
# 是否开启HTTP服务
  enabled = true
# HTTP服务绑定地址端口
  bind-address = ":8086"
# 是否开启认证,默认false
  auth-enabled = true
# 是否开启http请求日志,默认true
  log-enabled = true
# 当启用HTTP请求日志时,是否关闭HTTP写请求日志
  suppress-write-log = false
# 是否开启写操作日志,如果打开,每一次写操作都会打开日志,默认false
  write-tracing = false
# 是否开启flux查询协议,默认false
  flux-enabled = false
# 是否开启flux查询日志,默认false
  flux-log-enabled = false
# 是否开启pprof,默认true
  pprof-enabled = true
# 是否开启pprof并绑定localhost:6060,默认false
  debug-pprof-enabled = false
# 是否启用HTTPS功能,默认false
  https-enabled = false
# 设置HTTPS证书的路径
  https-certificate = "/etc/ssl/influxdb.pem"
# 设置HTTPS私钥的存储路径
  https-private-key = ""
# 配置查询返回最大行数,默认0,不限制
  max-row-limit = 0
# 配置最大连接数,默认0,不限制
  max-connection-limit = 0
# 用于JWT签名的共享秘钥,无默认值
  shared-secret = ""
# 配置realm,默认值为InfluxDB
  realm = "InfluxDB"
# 是否启用socket通信,默认false
  unix-socket-enabled = false
# socket权限
  unix-socket-permissions = "0777"
# socket路径
  bind-socket = "/var/run/influxdb.sock"
# 客户端请求主体的最大值,以字节为单位
  max-body-size = 25000000
# HTTP请求日志的存储目录
  access-log-path = ""
# 并发处理的写请求的最大数量,默认0,不限制
  max-concurrent-write-limit = 0
# 排队等待处理的写请求的最大数量,默认0,不限制
  max-enqueued-write-limit = 0
# 在队列中等待处理的写请求超时阈值,单位秒
  enqueued-write-timeout = 30000000000

# logging配置信息如下
[logging]
# 日志格式,默认auto,其他可选格式logfmt和json
  format = "auto"
# 日志级别,默认info,其他可选级别error、warn、debug
  level = "info"
# 当程序启动时,是否禁用打印LOGO信息,默认false
  suppress-logo = false

#Graphite接入配置信息如下
[[graphite]]
# 是否启用该模块,默认false
  enabled = false
# 绑定地址
  bind-address = ":2003"
# 数据库名称
  database = "graphite"
# 配置保留策略
  retention-policy = ""
# 通信协议
  protocol = "tcp"
# 批处理阈值,默认值5000
  batch-size = 5000
# 在内存中等待批处理的最大数
  batch-pending = 10
# 批处理等待阈值,默认1秒
  batch-timeout = "1s"
# 一致性级别
  consistency-level = "one"
# 多个表名间的连接符
  separator = "."
# UDP读缓存的大小,0表示使用操作系统提供的值
  udp-read-buffer = 0

# CollectD接入配置信息如下
[[collectd]]
# 是否启用该模块,默认false
  enabled = false
# 绑定地址
  bind-address = ":25826"
# 数据库名
  database = "collectd"
# 配置保留策略
  retention-policy = ""
# 批处理阈值,默认5000
  batch-size = 5000
# 在内存中等待处理的阈值,默认10
  batch-pending = 10
# 批处理等待阈值,默认10秒
  batch-timeout = "10s"
# UDP读缓存的大小,默认0,使用操作系统提供的值
  read-buffer = 0
# DB文件存放的位置
  typesdb = "/usr/share/collectd/types.db"
# 安全级别,默认none
  security-level = "none"
# 认证文件存放位置
  auth-file = "/etc/collectd/auth_file"
# 处理方式split和join
  parse-multivalue-plugin = "split"

# OPENTSDB配置信息如下
[[opentsdb]]
# 是否启用该模块
  enabled = false
# 绑定地址
  bind-address = ":4242"
# 存储数据库名
  database = "opentsdb"
# 保留策略
  retention-policy = ""
# 一致性级别,默认one
  consistency-level = "one"
# 是否开启TLS,默认false
  tls-enabled = false
# 证书存放路径
  certificate = "/etc/ssl/influxdb.pem"
# 批处理阈值,默认1000
  batch-size = 1000
# 在内存中等待批处理的最大数
  batch-pending = 5
# 批处理等待阈值,默认1秒
  batch-timeout = "1s"
# 当检测到数据格式异常时,输出错误日志,默认true
  log-point-errors = true

# UDP配置信息如下
[[udp]]
# 是否启用该模块,默认false
  enabled = true
# 绑定地址
  bind-address = ":8089"
# 数据库名称
  database = "udp"
# 保留策略
  retention-policy = ""
# 批处理阈值,默认5000
  batch-size = 5000
# 在内存中等待批处理的最大数,默认10
  batch-pending = 10
# UDP读缓存的大小,默认0,使用操作系统提供的值
  read-buffer = 0
# 批处理等待阈值,默认1秒
  batch-timeout = "1s"
# 解析时间戳的精确值,默认纳秒
  precision = ""

# 连续查询配置信息如下
[continuous_queries]
# 是否开启日志,默认true
  log-enabled = true
# 是否启用该模块,默认true
  enabled = true
# 是否记录连续查询执行的统计信息,默认false
  query-stats-enabled = false
# 连续查询定是运行的时间间隔,默认1秒
  run-interval = "1s"

# TLS配置信息如下
[tls]
# 支持TLS协议的最低版本
  min-version = ""
# 支持TLS协议的最高版本
  max-version = ""

  线上配置

[meta]
  dir = "/data/influxdb/meta"
  logging-enabled = true
[data]
  dir = "/data/influxdb/data"
  wal-dir = "/data/influxdb/wal"
  series-id-set-cache-size = 100
[coordinator]
  query-timeout = "10s"
  log-queries-after = "10s"
[retention]
[shard-precreation]
[monitor]
[http]
  enabled = true
  flux-enabled = true
  flux-log-enabled = true
  bind-address = ":18086"
  auth-enabled = true
  log-enabled = false
  access-log-path = ""
[logging]
  format = "auto"
  level = "warn"
  suppress-logo = true
[subscriber]
[[graphite]]
[[collectd]]
[[opentsdb]]
[[udp]]
  enabled = true
  bind-address = ":8089"
  database = "udp"
  retention-policy = ""
[continuous_queries]
[tls]  

  认证授权

# 开启认证需要在配置文件中开启
[http]
auth-enabled = true

# 创建管理员账户
> create user admin with password '123456' with all privileges
> show users

# 创建普通用户
> create user tony with password '1234556'

# 授权
# GRANT [READ,WRITE,ALL] [ON <DATABASE>] TO <USERNAME>
# 赋予读、写权限时必须指定数据库
# ALL表示所有权限,如果不指定数据库表示赋予超级管理员权限,如果指定数据库,表示赋予数据库的所有权限
# 赋予tony超级管理员权限
> GRANT ALL TO 'tony'
# 赋予tony对influx数据库的读权限
> GRANT READ ON 'influx' TO 'tony'

# 查看授权
> SHOW GRANTS FOR tony

# 取消授权
# REVOKE [READ,WRITE,ALL] [ON <DATABASE>] FROM <USERNAME>
# 取消tony的超级管理员权限
> REVOKE ALL FROM 'tony'

# 修改密码
> SET PASSWORD FRO 'tony' = '123456'

# 删除用户
> DROP USER 'tony'

  influxdb运行日志

systemctl方式启动的influxdb,运行日志是由journalctl接管,想要查看日志可以使用journalctl -u influxdb查看

https://docs.influxdata.com/influxdb/v1.8/troubleshooting/frequently-asked-questions/#where-can-i-find-influxdb-logs

   命令行执行SQL

#查询
$ influx -port 18086 -host 127.0.0.1 -username admin -password 123456 -database 'jiande' -execute 'SELECT * FROM machine_alert_log' 

#插入
#what:表名
#machine_id,msg_code:带索引的键
#create_time,id,msg_value,serial_num:不带索引的键
$ influx -port 18086 -host 127.0.0.1 -username admin -password 123456 -database 'jiande' -execute 'insert what,machine_id=110,msg_code=yes create_time=1587214268123,id=666,msg_value=0,serial_num=0'

  备份恢复

# 备份 influxd backup
# -portable:在线备份
# -database:指定数据备份
# PATH:备份文件的目录
$ influxd backup -portable -database jiande /data/backup/

#恢复 influxd restore 
# -portable:在线恢复
# -database:指定数据库
# PATH:恢复文件的目录
$ influxd restore -portable -database jiande /data/back/

  数据保留策略(注意:删除之前的保留策略会一并删除之前保留策略下的数据,如果不想删除之前的数据要使用alter修改策略)

# https://cloud.tencent.com/developer/article/1546922
# 查看数据库的保留策略
> show retention policies on telegraf
name    duration shardGroupDuration replicaN default
----    -------- ------------------ -------- -------
autogen 0s       168h0m0s           1        true

name 策略名称:默认autogen
duration 持续时间: 0s 代表无限制
shardGroupDuration shardGroup数据存储时间:shardGroup是InfluxDB的一个基本存储结构, 应该大于这个时间的数据在查询效率上应该有所降低。
replicaN 副本个数:1 代表只有一个副本
default 是否默认策略:true 代表设置为该数据库的默认策略

# 查看保留策略下的数据
> select * from "autogen".cpu limit 2;

# 新建一个策略
CREATE RETENTION POLICY "策略名称" ON 数据库名 DURATION 时长 REPLICATION 副本个数;

# 新建一个策略并且直接设置为默认策略
CREATE RETENTION POLICY "策略名称" ON 数据库名 DURATION 时长 REPLICATION 副本个数 DEFAULT;
> CREATE RETENTION POLICY "role_01" ON telegraf DURATION 1h REPLICATION 1 DEFAULT;

# 修改策略
ALTER RETENTION POLICY "策略名称" ON "数据库名" DURATION 时长 SHARD DURATION 时长
ALTER RETENTION POLICY "策略名称" ON "数据库名" DURATION 时长 SHARD DURATION 时长 DEFAULT

# 删除策略
drop retention POLICY "策略名" ON "数据库名"

  

  

  

  

  

  

初学linux,每学到一点东西就写一点,如有不对的地方,恳请包涵!
原文地址:https://www.cnblogs.com/forlive/p/13224946.html