influxes 基本概念

1.安裝

兩種,虛機的話直接下載二進位文件起就好了,容器也很方便,存儲掛載到/var/lib/influxdb 起就ok,配置文件可以通過configmap掛載進去。

2. 概念

2.1 database

CREATE DATABASE xx
SHOW DATABASES
USE mydb

2.2 measurement

相當於sql裡面的table概念。

寫數據格式:

<measurement>[,<tag-key>=<tag-value>...] <field-key>=<field-value>[,<field2-key>=<field2-value>...] [unix-nano-timestamp]

例如:

cpu,host=serverA,region=us_west value=0.64
payment,device=mobile,product=Notepad,method=credit billed=33,licenses=3i 1434067467100293230
stock,symbol=AAPL bid=127.46,ask=127.48
temperature,machine=unit42,type=assembly external=25,internal=37 1434067467000000000

跟普通sql來說就多了tags ,多了k/v的數據

Cli 裡面可以用insert 插入

> create database mydb
> use mydb
Using database mydb
> INSERT cpu,host=serverA,region=us_west value=0.64
> SELECT "host", "region", "value" FROM "cpu"
name: cpu
time                host    region  value
----                ----    ------  -----
1577934903004849943 serverA us_west 0.64

插入了一行到cpu這個指標,標籤上host,region。

> INSERT temperature,machine=unit42,type=assembly external=25,internal=37
> select * from temperature
name: temperature
time                external internal machine type
----                -------- -------- ------- ----
1577935315876294939 25       37       unit42  assembly

influxdb還有個RETENTION的概念,就是創建database的時候能指定retention

CREATE DATABASE <database_name> [WITH [DURATION <duration>] [REPLICATION <n>] [SHARD DURATION <duration>] [NAME <retention-policy-name>]]

如果不指定,會默認使用autogen,

> show retention policies
name    duration shardGroupDuration replicaN default
----    -------- ------------------ -------- -------
autogen 0s       168h0m0s           1        true

這是一個很重要的特性,通過他能自動刪老舊數據。

參考 retention policy (RP)

3. the Time-Structured Merge Tree (TSM)

比B+ 或者lsm樹更高的壓縮比,(壓縮比有多高? 那個文檔里寫了提升45倍的壓縮包 ),高寫入高讀取。
非常完善的一個stroge engine ,包括wal database才有的特性,可以研讀一下程式碼。

細節可以看

//docs.influxdata.com/influxdb/v1.7/concepts/storage_engine/

//docs.influxdata.com/influxdb/v1.7/query_language/database_management/#retention-policy-management

4. 聚合

基本上跟sql的差不多。都是select 開頭,提供了豐富的聚合函數。

詳細文檔: //docs.influxdata.com/influxdb/v1.7/query_language/functions/#aggregations

5. 資源分配

cpu來看差不多需要1個cpu ,優化的還是挺好的。

記憶體佔用就看數據量和tags了。tag數量越多,數據越多,佔用記憶體越大,這個要注意的,

這個database數據量(達到一個很大的規模,這個我忘了具體多少了)上去了以後還是會掛的,變得很不穩定。

6. Prometheus 使用influxdb做remote read,write

這個我看有些部落格說是要編譯adatper ,早期可能需要, 現在其實不用了,官方早已支援的很好。

//docs.influxdata.com/influxdb/v1.7/supported_protocols/prometheus/

remote_write:
  - url: "//localhost:8086/api/v1/prom/write?db=prometheus&u=username&p=password"

remote_read:
  - url: "//localhost:8086/api/v1/prom/read?db=prometheus&u=username&p=password"


如果沒有用戶名密碼認證的話,把username和password去掉即可。

這裡有個小tips,prometheus內部維護了一個metric,用來記錄沒有寫成功的count,prometheus_remote_storage_failed_samples_total , 這個值要看一下是否有失敗。

參考

//docs.influxdata.com/influxdb/v1.7/introduction/getting-started/

//docs.influxdata.com/influxdb/v1.7/concepts/storage_engine/

Tags: