#概述
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
以centos爲例,其他的 參考官網https連接 或者 參考官網http連接
- 安裝
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"
用法下一節說~