Prometheus 監控系統實戰

目錄

學習目標

如下:

任務背景

某某某公司是一家電商網站,由於公司的業務快速發展,公司要求對現有機器進行業務監控,責成運維部門來實施這個項目。

任務要求

如下:

任務分析

爲什麼要監控?答:實時收集數據,通過報警及時發現問題,及時處理。數據爲優化也可以提供依據。

監控四要素:

Prometheus 實戰

| Prometheus 概述

Prometheus(由 go 語言開發)是一套開源的監控 & 報警 & 時間序列數據庫的組合。適合監控 docker 容器。因爲 kubernetes 的流行帶動了 prometheus 的發展。

https://prometheus.io/docs/introduction/overview/

| 時間序列數據

①什麼是序列數據

時間序列數據(TimeSeries Data):按照時間順序記錄系統、設備狀態變化的數據被稱爲時序數據。

應用的場景很多,如:

②時間序列數據特點

性能好:關係型數據庫對於大規模數據的處理性能糟糕。NOSQL 可以比較好的處理大規模數據,讓依然比不上時間序列數據庫。

存儲成本低:高效的壓縮算法,節省存儲空間,有效降低 IO。

Prometheus 有着非常高效的時間序列數據存儲方法,每個採樣數據僅僅佔用 3.5byte 左右空間,上百萬條時間序列,30 秒間隔,保留 60 天,大概花了 200 多 G(來自官方數據)。

③Prometheus 的主要特徵

如下:

④普羅米修斯架構原理

如下圖:

| 實驗環境準備

1️⃣靜態 ip(要求能上外網)

2️⃣主機名

3️⃣時間同步(時間同步一定要確認一下)

4️⃣關閉防火牆,selinux

①安裝 prometheus

從官網下載相應版本,安裝到服務器上:

https://prometheus.io/download/

官網提供的是二進制版,解壓就能用,不需要編譯。

②Prometheus 界面

通過瀏覽器訪問 http:// 服務器 IP:9090 就可以訪問到 Prometheus 的主界面:

默認只監控了本機一臺,點 Status→點 Targets→可以看到只監控了本機:

③主機數據展示

通過 http:// 服務器 IP:9090/metrics 可以查看到監控的數據:

在 web 主界面可以通過關鍵字查詢監控項:

④監控遠程 Linux 主機

在遠程 linux 主機(被監控端 agent1)上安裝 node_exporter 組件。

下載地址:

https://prometheus.io/download/

擴展:nohup 命令。如果把啓動 node_exporter 的終端給關閉,那麼進程也會隨之關閉。nohup 命令會幫你解決這個問題。

通過瀏覽器訪問 http:// 被監控端 IP:9100/metrics 就可以查看到 node_exporter 在被監控端收集的監控信息:

回到 Prometheus 服務器的配置文件裏添加被監控機器的配置段:

回到 web 管理界面→點 Status→點 Targets→可以看到多了一臺監控目標:

練習:加上本機 prometheus 的監控。答:在本機安裝 node_exporter,也使用上面的方式監控起來。

⑤監控遠程 MySQL

在被管理機 agent1 上安裝 mysqld_exporter 組件:

回到 Prometheus 服務器的配置文件裏添加被監控的 mariadb 的配置段:

回到 web 管理界面→點 Status→點 Targets→可以看到監控 mariadb 了:

| Grafana 可視化圖形工具

①什麼是 Grafana

Grafana 是一個開源的度量分析和可視化工具,可以通過將採集的數據分析,查詢,然後進行可視化的展示,並能實現報警。

網址:

https://grafana.com/

②使用 Grafana 連接 Prometheus

在 grafana 服務器上安裝 grafana,下載地址:

https://grafana.com/grafana/download

通過瀏覽器訪問 http:// grafana 服務器 IP:3000 就到了登錄界面,使用默認的 admin 用戶,admin 密碼就可以登陸了。

下面我們把 Prometheus 服務器收集的數據做爲一個數據源添加到 grafana,讓 grafana 可以得到 Prometheus 的數據。

然後爲添加好的數據源做圖形顯示:

點擊保存:

最後在 dashboard 可以查看到:

匹配條件顯示:

③Grafana 圖形顯示 MySQL 監控數據

在 grafana 上修改配置文件, 並下載安裝 mysql 監控的 dashboard(包含相關 json 文件,這些 json 文件可以看作是開發人員開發的一個監控模板)。

參考網址:

https://github.com/percona/grafana-dashboards

在 grafana 圖形界面導入相關 json 文件:

點 import 導入後,報 prometheus 數據源找不到,因爲這些 json 文件裏默認要找的就是叫 Prometheus 的數據源,但我們前面建立的數據源卻是叫 prometheus_data(坑啊)。

那麼請自行把原來的 prometheus_data 源改名爲 Prometheus 即可(注意:第一個字母 P 是大寫)。

然後再回去刷新,就有數據了,如下圖所示:

過段時間再看,就會有數據了,如下圖所示:

④Grafana+onealert 報警

Prometheus 報警需要使用 alertmanager 這個組件,而且報警規則需要手動編寫(對運維來說不友好)。所以我這裏選用 grafana+onealert 報警。注意:實現報警前把所有機器時間同步再檢查一遍。

先在 onealert 裏添加 grafana 應用:

配置通知策略:

在 grafana 增加通知通道:

現在可以去設置一個報警來測試了(這裏以我們前面加的 cpu 負載監控來做測試):

保存後就可以測試了,如果 agent1 上的 cpu 負載還沒有到 0.5,你可以試試 0.1,或者運行一些程序把 agent1 負載調大。

最終能測試報警成功:

最終的郵件報警效果:

測試 MySQL 鏈接數報警:

⑤總結報警不成功的可能原因

如下:

作者:果子哥丶

來源:https://blog.csdn.net/qq_39578545/article/details/108754585

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/Y1wj8UjTxQfBikr6I2zD-w