1. 程式人生 > >influxdb基礎---介紹和配置

influxdb基礎---介紹和配置

#概述
InfluxDB是一個用Go語言編寫的時間序列資料庫,旨在處理高寫入和查詢負載。它是TICK堆疊的組成部分 。InfluxDB旨在用作涉及大量帶時間戳資料的任何用例的後備儲存,包括DevOps監控,應用程式指標,物聯網感測器資料和實時分析。同時influxdb也是一個開源分散式時序、事件和指標資料庫,無需外部依賴。類似的資料庫有kdb、Graphite、es等

這裡寫圖片描述

note:說明了新版本叢集只有在雲版或者企業版中才能使用(從0.12開始)就是要繳費,價格參考官網
這裡寫圖片描述

其主要特色功能

  • 基於時間序列,支援與時間有關的相關函式(如最大,最小,求和等)
  • 可度量性:你可以實時對大量資料進行計算
  • 基於事件:它支援任意的事件資料

InfluxDB的主要特點

  • 專為時間序列資料編寫的自定義高效能資料儲存。TSM引擎允許高攝取速度和資料壓縮
  • 完全寫在Go。它編譯成單個二進位制檔案,沒有外部依賴項。
  • 簡單,高效能的寫入和查詢HTTP API。
  • 外掛支援其他資料提取協議,如Graphite,collectd和OpenTSDB。
  • 專為類似SQL的查詢語言量身定製,可輕鬆查詢聚合資料。支援min, max, sum, count, mean, median 等一系列函式,方便統計
  • 標籤允許對系列進行索引以實現快速有效的查詢。
  • 保留策略有效地自動使過時資料過期。
  • 連續查詢自動計算聚合資料,以提高頻繁查詢的效率。
  • 無結構(無模式):可以是任意數量的列
  • 可拓展的

叢集版本要收費,單機版本免費(0.11是最後一個包含叢集服務的開源版本:在influxdb 0.12釋出的同時,也宣告了influxdb開源叢集服務的結束,在官方文件0.12與0.11的差別中的clustering updates部分 011_vs_012
內部整合的web控制檯模組從1.3開始就被去掉了 web_admin_interface

這裡寫圖片描述
這裡寫圖片描述

#安裝
安裝最新版本 v1.6.2

  • 安裝
    RedHat & CentOS SHA256: fbe635db1402b0427b32b7268d291093fc97ae888b1a68087dbc1dd39e0ddf67
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.6.2.x86_64.rpm
sudo yum localinstall influxdb-1.6.2.x86_64.rpm

配置檔案默然在/etc/influxdb/influxdb.conf,預設佔用埠是8088、8086
 # Bind address to use for the RPC service for backup and restore.
 # bind-address = “127.0.0.1:8088”
 # The bind address used by the HTTP service.
 # bind-address = “:8086”

  • 啟動命令
service influxdb start

非服務方式啟動 influxd

  • 關閉命令
service influxdb stop

#相關目錄

目錄 檔案 備註
/usr/bin
influxd influxdb伺服器
influx influxdb命令列客戶端
influx_inspect 檢視工具
influx_stress 壓力測試工具
influx_tsm 資料庫轉換工具(將資料庫從b1或bz1格式轉換為tsm1格式)
/var/lib/influxdb/
data 存放最終儲存的資料,檔案以.tsm結尾
meta 存放資料庫元資料
wal 存放預寫日誌檔案
/var/log/influxdb
influxd.log 日誌檔案
/etc/influxdb
influxdb.conf 配置檔案

#相關配置
配置檔案預設位置/etc/influxdb/influxdb.conf,從上到下

# 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"

用法下一節說~