一、InfluxDB2.0簡介
influxDB是一個開源的時序數據庫,專門用於處理大量的時間序列數據。它的設計初衷是在IoT領域中處理設備數據,但是它也可以用於其他各種類型的監控、分析等場景。InfluxDB2.0是其最新版本,它支持更多複雜的數據類型,更好的查詢性能和更豐富的功能。
二、InfluxDB2.0安裝與配置
1. 安裝InfluxDB2.0
首先需要在InfluxDB官網下載安裝包,選擇對應操作系統的版本進行下載。然後按照官方文檔進行安裝,可以選擇docker或者直接下載二進制包的方式進行。
curl -sL https://repos.influxdata.com/influxdb2.key | sudo apt-key add - echo "deb https://repos.influxdata.com/ubuntu bionic stable" | sudo tee /etc/apt/sources.list.d/influxdb.list sudo apt-get update && sudo apt-get install influxdb2
2. 配置InfluxDB2.0
在安裝完成後,我們需要進行配置。首先需要創建一個配置文件influxdb2.conf,並將其放在/etc/influxdb目錄下。然後我們需要打開該配置文件進行配置,例如修改http端口、數據存儲路徑等。
http_bind_address = "127.0.0.1:8086" data_dir = "/var/lib/influxdb2"
三、InfluxDB2.0的數據模型
1. 時序數據模型
InfluxDB2.0主要用於存儲時序數據。時序數據是指按時間順序而組織的數據。時序數據至少有一個時間戳和一個與之對應的值。在InfluxDB中,時間戳是一個UTC格式的時間,在數據存儲的過程中,InfluxDB會自動將時間戳轉換成Unix時間戳。
2. Bucket概念
Bucket是InfluxDB中數據的主要組織單元,類似於關係型數據庫中的schema和table的概念。在Bucket中存儲的數據都具有相同的Retention Policy,這意味着所有數據在Bucket中的存儲時間都是相同的。
3. Measurement概念
Measurement是指某個時間周期內的一組數據。可以將Measurement視為一張表,它通常包含多個字段,用於描述該時間周期內的各種信息。在InfluxDB中,Measurement是由一個名稱和一組tags組成的。
from(bucket:"my-bucket") |> range(start: -1h) |> filter(fn: (r) => r._measurement == "cpu") |> filter(fn: (r) => r.cpu == "cpu-total")
4. Field概念
Field用於表示Measurement中的實際值。通常情況下,我們將Measurement視為表,每個字段表示表中的一列。在InfluxDB中,Field通常是由一個名稱和一個值組成的。
5. Tag概念
Tag用於表示Measurement中的元數據,如主機名、數據中心、處理器等信息。與Field不同,Tag通常用於查詢和分組。
from(bucket:"my-bucket") |> range(start: -1h) |> filter(fn: (r) => r._measurement == "cpu") |> filter(fn: (r) => r.cpu == "cpu-total") |> group(columns: ["host"])
四、InfluxDB2.0的查詢語言
1. Flux查詢語言
InfluxDB2.0採用了全新的查詢語言Flux,它具有更高的查詢性能、更豐富的查詢能力和更好的擴展性。
from(bucket: "my-bucket") |> range(start: -1h) |> filter(fn: (r) => r._measurement == "cpu") |> filter(fn: (r) => r.cpu == "cpu-total") |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) |> yield(name: "mean")
2. InfluxQL查詢語言
與InfluxDB1.x的查詢語言相似,InfluxQL是一種SQL風格的查詢語言,在InfluxDB2.0中仍然支持。不過InfluxQL的查詢性能較低,建議在新的應用中使用Flux語言。
SELECT mean("usage_user") FROM "telegraf"."autogen"."cpu" WHERE time > now() - 1h GROUP BY time(10s), "cpu"
五、InfluxDB2.0的數據寫入
1. HTTP API寫入
InfluxDB2.0提供了HTTP API寫入數據的方式,使用HTTP POST請求可以將數據寫入到InfluxDB服務器中。這種方式適用於各種編程語言,只要支持HTTP請求即可。
curl -i -XPOST "http://:8086/write?db=mydb" --data-binary 'cpu,host=server01 value=0.64'
2. InfluxDB Client寫入
InfluxDB2.0提供了多種客戶端庫,可用於在多種編程語言中寫入數據。這種方式相對於HTTP API寫入更加方便,也更適合在應用程序中使用。
from influxdb_client import InfluxDBClient client = InfluxDBClient(url="http://localhost:9999", token="my-token") data = [{"measurement": "cpu", "tags": {"host": "server01"}, "fields": {"value": 0.64}}] client.write_points(data)
六、InfluxDB2.0的數據可視化
1. Grafana
Grafana是一款開源的數據可視化工具,它支持多種數據源,包括InfluxDB。使用Grafana可以創建各種漂亮的圖表和儀錶盤,用於展示InfluxDB中的數據。
2. Chronograf
Chronograf是InfluxData提供的另一款開源的數據可視化工具,它可以幫助用戶對InfluxDB中的數據進行查詢、分析和可視化。使用Chronograf可以創建各種圖表和儀錶盤,幫助用戶更好地理解數據。
七、總結
本文介紹了InfluxDB2.0的一些基本概念,包括數據模型、查詢語言、數據寫入和數據可視化等內容。InfluxDB2.0具有更高的性能和更豐富的功能,可以用於多種時序數據的存儲和查詢。歡迎讀者學習和使用。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/301738.html