Influxdb+Grafana+Telegraf及docker中執行
阿新 • • 發佈:2018-12-03
目錄
- telegraf收集服務的各指標資訊。
- influxdb儲存收集的資訊
- grafana顯示收集出來的資料
參考資料
- Telegraf+Influxdb+Grafana構建監控平臺
-
1. InfluxDB
1. 特徵:
1. 時序性(Time Series)
與時間相關的函式的靈活使用(諸如最大、最小、求和等);
2. 度量(Metrics)
對實時大量資料進行計算;
3. 事件(Event)
支援任意的事件資料,換句話說,任意事件的資料我們都可以做操作。
2. 特點:
- schemaless(無結構),可以是任意數量的列;
- min, max, sum, count, mean, median 一系列函式,方便統計;
- Native HTTP API, 內建http支援,使用http讀寫;
- Powerful Query Language 類似sql;
- Built-in Explorer 自帶管理工具。
3. 功能及預設
- 時序資料庫
- 預設埠為Web端8083 , API端8086 , 預設登陸資訊admin
4. 主要概念
1) 與SQL的名詞做比較
influxDB中的名詞 | SQL中的概念 | 概念 |
---|---|---|
database | 資料庫 | 資料庫 |
measurement | 資料庫中的表 | fields,tags以及time列的容器 |
points | 表中的一行資料 | 同一個series中具有相同時間的field set |
2) InfluxDB的獨有概念
Point
屬性 | SQL中的概念 |
---|---|
timestamp | 每個資料都需要一個時間戳(主索引&自動生成),在TSM儲存引擎中會特殊對待,以為了優化後續的查詢操作 |
field | 1. 各種記錄值(必須存在,沒有索引的屬性),eg:溫度 2. 由field key,field value組成 3. field key和field value對組成field set 4. 如果使用欄位作為查詢條件,會掃描符合查詢條件的所有欄位值,效能不及tag。fields相當於SQL的沒有索引的列。 5. field value可以為string,float,integer或boolean型別 |
tag | 1. 各種有索引的屬性,eg:地區 2. tag key,tag value組成 3. tag key和tag value對組成tag set 4. tags相當於SQL中的有索引的列 5. tag value只能是string型別 |
series
- series是共享同一個retention policy,measurement以及tag set的資料集合
- series相當於是InfluxDB中一些資料的集合。所有在資料庫中的資料,都要通過圖表展示出來,而series則表示表裡面的資料,可以在圖表上畫成幾條線(通過tags排列組合算出來)
shard
每個儲存策略下會存在許多shard,每個shard儲存一個指定時間段的資料,例如7點-8點的資料落入shard0中,8點-9點的資料落到shard1中,每個shard都對應一個底層的tsm儲存引擎,有獨立的cache,wal,tsm file。
retention policy
保留策略(RP)是用來定義資料在InfluxDB存放的時間,或者定義儲存某個期間的資料。當你建立資料庫時,InfluxDB會自動建立一個autogen(具有無限保留的保留策略)
5. 常用命令
1. 使用者管理:
- 顯示使用者
SHOW USERS
- 建立使用者和設定密碼
CREATE USER "username" WITH PASSWORD 'password'
- 建立管理員許可權的使用者
CREATE USER "username" WITH PASSWORD 'password' WITH ALL PRIVILEGES
- 刪除使用者
DROP USER "username"
授權資料庫給指定使用者
GRANT ALL PRIVILEGES ON cadvisor TO testuse
2. database:
- 建立資料庫:
CREATE DATABASE testDB
- 顯示所有資料庫:
SHOW DATABASES
- 刪除資料庫:
DROP DATABASE testDB
- 使用資料庫:
USE testDB
建立預設的資料保留策略,設定儲存時間30天,副本為1
CREATE RETENTION POLICY "xx_retention" ON "xx" DURATION 30d REPLICATION 1 DEFAULT
6. 函式
- 聚合函式:
FILL(), INTEGRAL(),SPREAD(), STDDEV(),MEAN(), MEDIAN()
等。 - 選擇函式:
SAMPLE(), PERCENTILE(), FIRST(), LAST(), TOP(), BOTTOM()
等。 - 轉換函式:
DERIVATIVE(), DIFFERENCE()
等。 - 預測函式:
HOLT_WINTERS()
。
7. golang中使用
直接看 git吧
2. Grafana
1. 主要特性
- 靈活豐富的圖形化選項
- 可以混合多種風格
- 支援白天和夜間模式
- 多個數據源。
2. 功能及預設
- 訪問各類資料來源 , 自定義報表、顯示圖表等等 , 用於提供介面監控
預設埠為3000 , 預設登陸資訊admin
***3. Telegraf
1. 功能
收集系統和服務的統計資料, 並寫入到InfluxDB資料庫, 在需要監控的機器上安裝
***4. docker-compose搭建
- docker-compose.yml
influxdb:
image: influxdb:latest
container_name: tig-influxdb
ports:
- "8083:8083"
- "8086:8086"
- "8090:8090"
env_file:
- 'env.influxdb'
volumes:
# Data persistency
# sudo mkdir -p ./influxdb/data
- ./influxdb/data:/var/lib/influxdb
# 配置docker裡的時間為東八區時間
- ./etc/timezone:/etc/timezone:ro
- ./etc/localtime:/etc/localtime:ro
restart: unless-stopped #停止後自動
telegraf:
image: telegraf:latest
container_name: tig-telegraf
links:
- influxdb
volumes:
- ./telegraf.conf:/etc/telegraf/telegraf.conf:ro
- ./etc/timezone:/etc/timezone:ro
- ./etc/localtime:/etc/localtime:ro
restart: unless-stopped
grafana:
image: grafana/grafana:latest
container_name: tig-grafana
ports:
- "3000:3000"
env_file:
- 'env.grafana'
links:
- influxdb
volumes:
# Data persistency
# sudo mkdir -p ./grafana/data; chown 472:472 ./grafana/data
- ./grafana/data:/var/lib/grafana
- ./etc/timezone:/etc/timezone:ro
- ./etc/localtime:/etc/localtime:ro
restart: unless-stopped