Influxdb+Grafana+Telegraf及docker中運行


  • telegraf收集服務的各指標信息。
  • influxdb存儲收集的信息
  • grafana顯示收集出來的數據

參考資料

1. InfluxDB

1. 特徵:

1. 時序性(Time Series)

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

2. 度量(Metrics)

對實時大量數據進行計算;golang

3. 事件(Event)

支持任意的事件數據,換句話說,任意事件的數據咱們均可以作操做。sql

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。docker

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 testuseless

    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 DEFAULTide

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搭建

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
相關文章
相關標籤/搜索