目錄
- 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