influxdb基礎---介紹和配置
阿新 • • 發佈:2018-12-09
#概述
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"
用法下一節說~