Prometheus入門教程(二):Prometheus + Grafana實現可視化、告警

文章首發於【陳樹義】公眾號,點擊跳轉到原文://mp.weixin.qq.com/s/56S290p4j9KROB5uGRcGkQ

Prometheus UI 提供了快速驗證 PromQL 以及臨時可視化支援的能力,但其可視化能力卻比較弱。一般情況下,我們都用 Grafana 來實現對 Prometheus 的可視化實現。

什麼是Grafana

Grafana 是一個用來展示各種各樣數據的開源軟體,在其官網上用這麼一段話來說明其作用。

Used by thousands of companies to monitor everything from infrastructure, applications, and power plants to beehives.

數以萬計的公司用 Grafana 來監控基礎設施、應用。

從官網上可以看到目前有 Paypal、ebay 等公司已經在使用 Prometheus 了。

快速入門

我們只需要在 Grafana 上配置一個 Prometheus 的數據源。接著我們就可以配置各種圖表,Grafana 就會自動去 Prometheus 拉取數據進行展示。

啟動伺服器

首先我們從 //grafana.com/grafana/download 下載對應系統的安裝包,下載解壓後用下面的命令啟動:

./grafana-server web

文章首發於【陳樹義】公眾號,點擊跳轉到原文://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 埠啟動,我們訪問://localhost:3000 查看對應頁面。

默認的帳號密碼是 admin/admin,登陸進去後是這樣的。

配置數據源

之後我們去設置菜單添加 Prometheus 數據源:

打開如下圖所示:

之後輸入對應的名字和 URL 地址即可:

這裡我們添加了一個名為「Prometheus-1」的數據源,數據獲取地址為://localhost:9090

配置面板

在 Grafana 中有「Dashboard」和「Panel」的概念,Dashboard 可以理解成「看板」,而 Panel 可以理解成「圖表,一個看看板中包含了無數個圖表。例如下圖就是一個看板(Dashboard):

裡面一個個小的圖表,就是一個個小的圖表(Panel)。

點擊「+號」-> 「Dashboard」就可以添加一個大面板。

添加後的面板是空白的,下面我們創建一個圖標來顯示 CPU 的使用率變化情況。點擊右上角的創建圖表按鈕:

點擊創建圖表會進入如下介面:

我們設置好數據源、Metrics數據、圖表名稱,之後點擊右上角的 Apply 按鈕即可。保存之後我們就可以在面板中看到機器的 CPU 使用率情況了。

郵件通道配置

如果我們要使用 Prometheus 進行監控告警,那麼 Grafana 也能夠實現。

Grafana 的告警渠道有很多,這裡我們以郵件告警為例。

首先需要在 Grafana 的配置文件,默認是 conf/default.ini 文件。

在 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 菜單添加告警渠道。

之後填寫「提醒通道」名稱、類型,之後點擊「Send Test」按鈕測試一下。

正常的話,會受到一封測試郵件,這表明郵件配置已經完成。

此外我們還可以配置 AlertManager、釘釘等其他告警方式,配置的流程都大同小異,這裡不再贅述。

文章首發於【陳樹義】公眾號,點擊跳轉到原文://mp.weixin.qq.com/s/56S290p4j9KROB5uGRcGkQ

指標告警配置

配置好郵件發送通道資訊後,Grafana 就具備了發送郵件的能力。但是什麼時候發送郵件呢?這就需要我們進行指標告警配置了。

我們需要在圖表面板設置中設置相關報警資訊:

這裡我配置了 1 分鐘內值低於 1,那麼就報警,即:1 分鐘內掛機了,那麼就報警。隨後我手動關掉了 NodeExport 節點,過了幾分鐘我就收到了報警郵件。

更多關於圖表的設置,將在後續文章專門講述,這裡不深入講解。

Grafana模板中心

對於線上監控來講,如果我們每個面板都需要自己從零開始,那麼就太累了。事實上,我們用到的許多監控資訊都是類似的。因此 Grafana官網 – Dashboards 模組 提供了下載 Dashboard 模板的功能。

Dashboards 里有許多各種類型的 Dashboard 面板,例如 JVM 監控、MySQL 資料庫監控等。你只需找到合適自己的監控面板,之後根據 ID 添加即可。

例如我找到的這個這個面板包含了各種常見的資源監控,例如:CPU、記憶體等。

你只需要複製它的 ID 並使用 Grafana 的 import 功能導入即可,如下圖所示:

最終的效果如圖所示:

文章首發於【陳樹義】公眾號,點擊跳轉到原文://mp.weixin.qq.com/s/56S290p4j9KROB5uGRcGkQ

參考資料