InfluxDB部署和使用
InfluxDB的安装方式非常简单,直接从官网下载rpm包后,安装就行
1 2 3 4 5 6 7 8 9 10 11 | # 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软件包提供的几个程序
1 2 3 4 5 | influx:命令行工具 infulxd:服务器程序 influx_inspect:数据检查工具 influx_stress:压力测试工具 influx_tsm:数据库格式转换工具 |
Influx命令参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | # 显示程序版本 -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命令参数
1 2 3 4 5 6 7 8 9 10 11 12 | # 数据备份 backup #显示influxd的默认配置信息 config #显示帮助信息 help #还原之前通过backup命令备份的数据 restore #运行程序,默认参数 run #显示influxd的版本信息 version |
InfluxDB配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 | # 配置是否上报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 = "" |
线上配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | [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] |
认证授权
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | # 开启认证需要在配置文件中开启 [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查看
命令行执行SQL
1 2 3 4 5 6 7 8 | #查询 $ 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' |
备份恢复
1 2 3 4 5 6 7 8 9 10 11 | # 备份 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修改策略)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | # 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,每学到一点东西就写一点,如有不对的地方,恳请包涵!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)