1. 程式人生 > >Prometheus入門教程(二):Prometheus + Grafana實現視覺化、告警

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

# 文章首發於【陳樹義】公眾號,點選跳轉到原文: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