1. 程式人生 > >Influxdb+Grafana+Telegraf及docker中執行

Influxdb+Grafana+Telegraf及docker中執行

目錄


  • telegraf收集服務的各指標資訊。
  • influxdb儲存收集的資訊
  • grafana顯示收集出來的資料

參考資料

1. 時序性(Time Series)

與時間相關的函式的靈活使用(諸如最大、最小、求和等);

2. 度量(Metrics)

對實時大量資料進行計算;

3. 事件(Event)

支援任意的事件資料,換句話說,任意事件的資料我們都可以做操作。

2. 特點:

  1. schemaless(無結構),可以是任意數量的列;
  2. min, max, sum, count, mean, median 一系列函式,方便統計;
  3. Native HTTP API, 內建http支援,使用http讀寫;
  4. Powerful Query Language 類似sql;
  5. 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-tig

  • 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