Prometheus入門教程(二):Prometheus + Grafana實現視覺化、告警
阿新 • • 發佈:2020-10-16
# 文章首發於【陳樹義】公眾號,點選跳轉到原文:https://mp.weixin.qq.com/s/56S290p4j9KROB5uGRcGkQ
Prometheus UI 提供了快速驗證 PromQL 以及臨時視覺化支援的能力,但其視覺化能力卻比較弱。一般情況下,我們都用 Grafana 來實現對 Prometheus 的視覺化實現。
![](https://www-shuyi-me.oss-cn-shenzhen.aliyuncs.com/blog/16027618001370.jpg)
## 什麼是Grafana
Grafana 是一個用來展示各種各樣資料的開源軟體,在其官網上用這麼一段話來說明其作用。
```
Used by thousands of companies to monitor everything from infrastructure, applications, and power plants to beehives.
數以萬計的公司用 Grafana 來監控基礎設施、應用。
```
從官網上可以看到目前有 Paypal、ebay 等公司已經在使用 Prometheus 了。
![](https://www-shuyi-me.oss-cn-shenzhen.aliyuncs.com/blog/16027618092587.jpg)
## 快速入門
我們只需要在 Grafana 上配置一個 Prometheus 的資料來源。接著我們就可以配置各種圖表,Grafana 就會自動去 Prometheus 拉取資料進行展示。
### 啟動伺服器
首先我們從 https://grafana.com/grafana/download 下載對應系統的安裝包,下載解壓後用下面的命令啟動:
```
./grafana-server web
```
# 文章首發於【陳樹義】公眾號,點選跳轉到原文:https://mp.weixin.qq.com/s/56S290p4j9KROB5uGRcGkQ
正常啟動會輸出如下資訊:
```
INFO[07-18|17:28:12] App mode production logger=settings
INFO[07-18|17:28:12] Connecting to DB logger=sqlstore dbtype=sqlite3
INFO[07-18|17:28:12] Starting DB migration logger=migrator
INFO[07-18|17:28:12] Starting plugin search logger=plugins
INFO[07-18|17:28:12] Registering plugin logger=plugins name="Direct Input"
INFO[07-18|17:28:12] HTTP Server Listen logger=http.server address=[::]:3000 protocol=http subUrl= socket=
```
Grafana 預設使用 3000 埠啟動,我們訪問:http://localhost:3000 檢視對應頁面。
![](https://www-shuyi-me.oss-cn-shenzhen.aliyuncs.com/blog/16027618196907.jpg)
預設的賬號密碼是 admin/admin,登陸進去後是這樣的。
![](https://www-shuyi-me.oss-cn-shenzhen.aliyuncs.com/blog/16027618266253.jpg)
### 配置資料來源
之後我們去設定選單新增 Prometheus 資料來源:
![](https://www-shuyi-me.oss-cn-shenzhen.aliyuncs.com/blog/16027618341025.jpg)
開啟如下圖所示:
![](https://www-shuyi-me.oss-cn-shenzhen.aliyuncs.com/blog/16027618431277.jpg)
之後輸入對應的名字和 URL 地址即可:
![](https://www-shuyi-me.oss-cn-shenzhen.aliyuncs.com/blog/16027618479349.jpg)
這裡我們添加了一個名為「Prometheus-1」的資料來源,資料獲取地址為:http://localhost:9090。
### 配置面板
在 Grafana 中有「Dashboard」和「Panel」的概念,Dashboard 可以理解成「看板」,而 Panel 可以理解成「圖表,一個看看板中包含了無數個圖表。例如下圖就是一個看板(Dashboard):
![](https://www-shuyi-me.oss-cn-shenzhen.aliyuncs.com/blog/16027618541693.jpg)
裡面一個個小的圖表,就是一個個小的圖表(Panel)。
點選「+號」-> 「Dashboard」就可以新增一個大面板。
![](https://www-shuyi-me.oss-cn-shenzhen.aliyuncs.com/blog/16027618603991.jpg)
新增後的面板是空白的,下面我們建立一個圖示來顯示 CPU 的使用率變化情況。點選右上角的建立圖表按鈕:
![](https://www-shuyi-me.oss-cn-shenzhen.aliyuncs.com/blog/16027618667209.jpg)
點選建立圖表會進入如下介面:
![](https://www-shuyi-me.oss-cn-shenzhen.aliyuncs.com/blog/16027618708532.jpg)
我們設定好資料來源、Metrics資料、圖表名稱,之後點選右上角的 Apply 按鈕即可。儲存之後我們就可以在面板中看到機器的 CPU 使用率情況了。
![](https://www-shuyi-me.oss-cn-shenzhen.aliyuncs.com/blog/16027618756656.jpg)
### 郵件通道配置
如果我們要使用 Prometheus 進行監控告警,那麼 Grafana 也能夠實現。
Grafana 的告警渠道有很多,這裡我們以郵件告警為例。
首先需要在 Grafana 的配置檔案,預設是 conf/default.ini 檔案。
![](https://www-shuyi-me.oss-cn-shenzhen.aliyuncs.com/blog/16027618833034.jpg)
在 default.ini 檔案中增加如下配置:
```
[smtp]
enabled = true
host = smtp.exmail.qq.com:465
user = [email protected]
# If the password contains # or ; you have to wrap it with triple quotes. Ex """#password;"""
password = xxxx
cert_file =
key_file =
skip_verify = false
from_address = [email protected] //必須與上面的 user 屬性一致
from_name = Grafana
ehlo_identity =
```
host 這裡是你郵箱所在運營商的 SMTP 伺服器。user 屬性是發件人的郵箱地址。password 是發件人郵箱的登陸密碼。from_address 與 user 屬性一樣,都是發件人的郵箱地址。from_name 是發件人的顯示名稱。
修改完成之後,儲存配置檔案,之後重啟 Grafana。接著通過 Alerting 選單新增告警渠道。
![](https://www-shuyi-me.oss-cn-shenzhen.aliyuncs.com/blog/16027618907055.jpg)
之後填寫「提醒通道」名稱、型別,之後點選「Send Test」按鈕測試一下。
![](https://www-shuyi-me.oss-cn-shenzhen.aliyuncs.com/blog/16027618966711.jpg)
正常的話,會受到一封測試郵件,這表明郵件配置已經完成。
此外我們還可以配置 AlertManager、釘釘等其他告警方式,配置的流程都大同小異,這裡不再贅述。
# 文章首發於【陳樹義】公眾號,點選跳轉到原文:https://mp.weixin.qq.com/s/56S290p4j9KROB5uGRcGkQ
### 指標告警配置
配置好郵件傳送通道資訊後,Grafana 就具備了傳送郵件的能力。但是什麼時候傳送郵件呢?這就需要我們進行指標告警配置了。
我們需要在圖表面板設定中設定相關報警資訊:
![](https://www-shuyi-me.oss-cn-shenzhen.aliyuncs.com/blog/16027619020507.jpg)
這裡我配置了 1 分鐘內值低於 1,那麼就報警,即:1 分鐘內掛機了,那麼就報警。隨後我手動關掉了 NodeExport 節點,過了幾分鐘我就收到了報警郵件。
![](https://www-shuyi-me.oss-cn-shenzhen.aliyuncs.com/blog/16027619068579.jpg)
***更多關於圖表的設定,將在後續文章專門講述,這裡不深入講解。***
## Grafana模板中心
對於線上監控來講,如果我們每個面板都需要自己從零開始,那麼就太累了。事實上,我們用到的許多監控資訊都是類似的。因此 [Grafana官網 - Dashboards 模組](https://grafana.com/grafana/dashboards) 提供了下載 Dashboard 模板的功能。
![](https://www-shuyi-me.oss-cn-shenzhen.aliyuncs.com/blog/16027619121458.jpg)
Dashboards 裡有許多各種型別的 Dashboard 面板,例如 JVM 監控、MySQL 資料庫監控等。你只需找到合適自己的監控面板,之後根據 ID 新增即可。
例如我找到的這個這個面板包含了各種常見的資源監控,例如:CPU、記憶體等。
![](https://www-shuyi-me.oss-cn-shenzhen.aliyuncs.com/blog/16027619179756.jpg)
你只需要複製它的 ID 並使用 Grafana 的 import 功能匯入即可,如下圖所示:
![](https://www-shuyi-me.oss-cn-shenzhen.aliyuncs.com/blog/16027619255914.jpg)
最終的效果如圖所示:
![](https://www-shuyi-me.oss-cn-shenzhen.aliyuncs.com/blog/16027619319695.jpg)
# 文章首發於【陳樹義】公眾號,點選跳轉到原文:https://mp.weixin.qq.com/s/56S290p4j9KROB5uGRcGkQ
## 參考資料
* [Grafana: The open observability platform | Grafana Labs](https://grafana.com/)
* [Grafana Dashboards - discover and share dashboards for Grafana. | Grafana Labs](https://grafana.com/grafana/das