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查看
命令行執行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 "數據庫名"