---
title: Grafana 新增圖表
tags: Grafana
---
# Grafana新增圖表
> [name=賴品璇]
> [time=Fri, Jan 7, 2021]
---
# Agenda
* Grafana
* Grafana基本概念
* 新增Data Source
* 新增Dashboard
* 表單配置說明
* Variables變量配置
* 新增告警
* 使用模板
---
# Grafana
* 開源的分析監控平台
* 高度定製化:可視化圖表、警報
* 支援多源數據庫
* InfluxDB、Prometheus、Zabbix、Elasticsearch、OpenTSDB...等。
* 地圖數據、金融、股票...等。
---
## Grafana基本概念
* Data Source:數據源
* Dashboard儀表板:一或多個面板組成
* Row:組織和管理相關的Panel
* Panel面板:Grafana數據呈現的最小單元

---
## Data Source
* 此次Demo採用 Telegraf採集、InfluxDB儲存、Grafana展示

---
### 新增Data Source
* 點選設定→選擇Data Source

---
* 新增Data Source

---
* 本範例為InfluxDB,因此選擇[InfluxDB]

---
* Name可以自行取名,本範例使用[InfluxDB]
* Query Language選擇[InfluxQL]
* URL需輸入相對應的連結與port號,以下舉三種例子
* 若InfluxDB與Grafana在同機台可輸入 http://localhost:8086 or http://127.0.0.1:8086
* 若InfluxDB與Grafana於不同機台,則要輸入安裝InfluxDB機台的外網 ex.!
[pin-granfana]想要讀取[lily-testcdn]的InfluxDB,連結處就要輸入該台外網IP&Port

* 若是使用docker-compose建立InfluxDB與Grafana,可以使用http://`container_name`:8086,此demo為`container_name: influxdb`
因此url可輸入 http://InfluxDB:8086

---
* Database輸入InfluxDB讀取的檔案名稱:telegraf1
* 設定完成點選[Save & Test]按鈕

---
* 成功寫入

* 失敗

---
## 新增Dashboard
* 點選Dashboard中的Manage

---
* 建立新的Dashboard

* 建立新面板

---
* 透過下拉式選單選擇要讀取的資料庫**InfluxDB**

---
### 表單配置說明

* FROM Default:默認架構圖,保持不變
measurement:選取對應的InfluxDB表單名稱
* WHERE:根據自己的需求選擇條件
* SELECT field():選擇表單抓取的細項數據
mean():細項對應InfluxDB內的資料
* GROUPBY time():根據時間分組
fill():當無數據時的填充值,默認值為null
---
#### 數據

* cpu:系統CPU的訊息
* disk:硬碟佔用信息。
* diskio:硬碟IO性能
* kernel:內核
* mem:記憶體
* processes:處於執行狀態的程式
* swap:類似Windows系統下的"虛擬內存"
---
* DEMO記憶體的總容量與使用率

---
* ALIAS BY輸入資料名稱,即可顯示於圖表

---
* 可點選複製以方便快速設定

---
### 圖表呈現方式調整-更改折線圖的顏色


---
### 圖表呈現方式細項調整
* 點選show options

---
* 點選Panel

---
* Settings更改Panel名稱

---
* Visualization中可以選擇圖表類型

---
* Display 可以設定顯示方式

---

---
* Axes Y軸

* 根據觀測的數據來調整出相對應的單位 ex記憶體單位為byte

* 小小補充IEC是由國際電工委員會制定,SI為國際單位制

* 顯示正確單位

---
* Axes X軸


---
## 新增Variables變量配置
快速切換不同變數來使用同圖表
* 點選設定

---
* 設定中有Variables

---
* 增加Variables

---
依照需求增加變數


---
* data source

---

---

---

---
* Query :Hostname

Refresh:控制下拉列表中的值是否更新
never:從不。 On Dashboard Load:Dashboard加載完成之前更新(會減慢加載速度)
On Time Range Change:如果變量選項和時間相關,或者依賴dashboard時間範圍選擇
---
```
SHOW TAG VALUES FROM "system" WITH KEY = "host"
```

---

---
## 新增告警
* 點選Alert

---
* Create Alert

---
* 設定告警規則
```
Rule:此條規則的名稱、多久評估一次值、等待多久從pending 轉為alert的狀態
When avg() of query(A, 5m, now) is ABOVE ___
:當Query A的平均值,從五分鐘前到現在的值超過___
當這個條件式滿足時,符合告警的設定
```

---

---
* 點選Alerting,Alert Rules中可以看到目前設定好的告警

---
* Notification Channels 增加通道類型

---
* Demo使用slack

---
### slack url
* 點選:https://slack.com/apps
在下方搜尋【incoming webhooks】

---
* 選擇告警頻道

---
* 點選Add Incoming WebHooks integration

---
* 複製Webhook URL

---
* 貼上url

---
* 測試

---
* slack 收到測試告警

---
* 回到panel ,可設定告警通知訊號

---
## 使用模板
有兩種做法可以複製官網的Import ID,也可以使用json code匯入
1. 使用Import ID,在[Gragana官網](https://grafana.com/)中找符合需求的模板

---
* 輸入條件即可找到符合條件的模板

---
* 複製模板代號

---

---
* 將代號填入Import

---

---

---
* 詳細可以在設定中變更

---
2. 使用前輩or自己拉得不錯的儀表板匯出json文件,再匯入
* ex.將pin-grafana的儀錶板匯出,點選分享

---
* Export>View JSON

---
* 點選複製到剪貼簿

---
* 點開127.0.0.1上的Grafana,Dashboards>Manage>Import

---
* 將Josn文件貼上後按Load

---
* 點選Import

---

---
### Reference
[參考1](https://ithelp.ithome.com.tw/articles/10190837)
[參考2](https://www.itread01.com/content/1547847009.html)
[telegraf 改參數](https://juejin.im/post/6844904005399740423)
[模板教學](https://www.itread01.com/content/1546765089.html)
[參考](https://ken.io/note/grafana-quickstart-influxdb-datasource-graph)
[官方模板](https://grafana.com/grafana/dashboards/11912)
https://kknews.cc/zh-tw/career/nv4zq9q.html
[參考3](https://karneliuk.com/2019/03/sp-part-6-secured-monitoring-of-multivendor-service-provider-fabric-with-telegraf-influxdb-and-grafana-running-as-docker-containers-and-automated-with-ansible/)
[參考4](https://yunlzheng.gitbook.io/prometheus-book/part-ii-prometheus-jin-jie/grafana/grafana-intro)
[參考5](https://www.shuzhiduo.com/A/xl56GAE1dr/)