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 "數據庫名"

  

  

  

  

  

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM