203. 搭建 Prometheus+Grafana 雲平臺監控系統

1. Prometheus 概述

Prometheus(普羅米修斯)是一套開源的監控&報警&時間序列數據庫的組合,現在最常見的 Docker、Mesos、Kubernetes 容器管理系統中,通常會搭配Prometheus 進行監控。
Prometheus 基本原理是通過 HTTP 協議週期性抓取被監控組件的狀態,這樣做的好處是任意組件只
要提供 HTTP 接口就可以接入監控系統,無需要任何 SDK 或者者其他的集成過程。這樣做非常適合虛擬化環境比如 VM 或者 Docker 。
輸出被監控組件信息的 HTTP 接口被叫做 exporter。目前互聯網公司常用的組件大部分都有
exporter 可以直接使用,比如 Varnish、Haproxy、Nginx、MySQL、Linux 系統信息 (包括磁盤、
內存、CPU、網絡等等),具體支持的源看:https://github.com/prometheus

2. Prometheus 架構圖解

在這裏插入圖片描述

2.1 Prometheus 各組件運行流程如下:

1Prometheus Server:Prometheus SeverPrometheus 組件中的核心部分,負責實現對監
控數據的獲取,存儲及查詢。Prometheus Server 可以通過靜態配置管理監控目標,也可以配合使用
Service Discovery(服務發現)的方式動態管理監控目標,並從這些監控目標中獲取數據。其次
Prometheus Sever 需要對採集到的數據進行存儲,Prometheus Server 本身就是一個實時數據庫,將
採集到的監控數據按照時間序列的方式存儲在本地磁盤當中。Prometheus Server 對外提供了自定義的PromQL,實現對數據的查詢以及分析。另外 Prometheus Server 的聯邦集羣能力可以使其從其他的Prometheus Server 實例中獲取數據。

2Exporters:Exporter將監控數據採集的端點通過 HTTP 服務的形式暴露給Prometheus ServerPrometheus Server 通過訪問該 Exporter 提供的 Endpoint 端點,即可以獲取到需要採集的監控數據。可以將 Exporter 分爲 2 類:

(1) 直接採集:這一類 Exporter 直接內置了對 Prometheus 監控的支持,比如 cAdvisor,Kubernetes,Etcd等,都直接內置了用於向 Prometheus 暴露監控數據的端點。

(2) 間接採集:原有監控目標並無直接支持 Prometheus,因此需要通過 Prometheus 提供的 Client 
Library 編寫該監控目標的監控採集程序。例如:Mysql ExporterJMX Exporter,Consul Exporter等。

3AlertManager:在 Prometheus Server 中支持基於 Prom QL 創建告警規則,如果滿足 Prom QL 定義的規則,則會產生一條告警。常見的接收方式有:電子郵件,webhook 等。

4PushGateway:Prometheus 數據採集基於 Prometheus ServerExporter pull 數據,因此
當網絡環境不允許 Prometheus ServerExporter 進行通信時,可以使用 PushGateway 來進行中轉。

Prometheus 的工作流:
1.Prometheus server 定期從配置好的 jobs 和 exporters 中拉取 metrics,或者接收來自Pushgateway 發送過來的 metrics,或者從其它的 Prometheus server 中拉 metrics。
2.Prometheus server 在本地存儲收集到的 metrics,並運行定義好的 alerts.rules,記錄新的時間序列或者向 Alert manager 推送警報。
3.Alertmanager根據配置文件,對接收到的報進行處理,發出告警.
4.在圖形界面中,可視化採集數據。

3. 安裝配置 Prometheus 監控服務

1.安裝Go語言環境
[root@web01 ~]# yum install go -y
[root@web01 ~]# go version
go version go1.13.6 linux/amd64

2.下載安裝 Prometheus(https://prometheus.io/download/)
[root@web01 ~]# tar xf prometheus-2.7.1.linux-amd64.tar.gz -C /usr/local/
[root@web01 ~]# cd /usr/local/prometheus-2.7.1.linux-amd64/

修改prometheus配置文件,配置監控linux主機和mysq|數據庫,配置文件爲yml語法.注意縮進對齊
[root@web01 prometheus-2.7.1.linux-amd64]# vim prometheus.yml 
在最後一行進行配置:
  - job_name: 'system-status' #每一個 job_name 都是一個監控項,這裏代表監控操作系統狀態
    static_configs:
    - targets: ['10.0.0.8:9100'] #被監控主機 IP 地址和端口
      labels:
        instance: web02 #實例名稱,在 grafana 中表示對應的主機
  
  - job_name: 'mysql-status' #監控 mysql 數據庫狀態
    static_configs:
    - targets: ['10.0.0.51:9104'] #數據庫Ip地址+端口
      labels:
        instance: db01 #實例名稱,在 grafana 中表示對應的主機

在這裏插入圖片描述
./prometheus --config.file=prometheus.yml & 放置後臺運行
在這裏插入圖片描述

4. 啓動用於採集 Linux 系統和 mysql 服務狀態的 exporter 服務

prometheus常見的exporter及作用:
(1). node. exporter 用於監控操作系統的性能和運行狀態
(2). mysqld. exporter用於監控mysql服務
(3). snmp. exporter 用於監控網絡設備

更多exporter可在官網下載官方傳送門—》

1. 配置 node_exporter 監控 web02 運行狀態
[root@web02 ~]# tar xf node_exporter-0.17.0.linux-amd64.tar.gz -C /usr/local/
[root@web02 ~]# /usr/local/node_exporter-0.17.0.linux-amd64/node_exporter &

2、配置 mysqld_exporter 用於監控 db01 上的 mysql 服務
2.1 登錄數據庫:
mysql> grant replication client,process on *.* to 'mysql_monitor'@'localhost' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> grant select on *.* to 'mysql_monitor'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye

2.2 安裝 mysqld_exporter
[root@db01 ~]# tar xf mysqld_exporter-0.11.0.linux-amd64.tar.gz -C /usr/local/
[root@db01 ~]# cd /usr/local/mysqld_exporter-0.11.0.linux-amd64/
[root@db01 /usr/local/mysqld_exporter-0.11.0.linux-amd64]# vim .my.cnf  隱藏文件
[client]
user=mysql_monitor
password= 123456

[root@db01 ~]# /usr/local/mysqld_exporter-0.11.0.linux-amd64/mysqld_exporter --config.my-cnf="/usr/local/mysqld_exporter-0.11.0.linux-amd64/.my.cnf" &

再次驗證是否已添加節點並UP:
在這裏插入圖片描述
總結prometheus使用方法:

1.想監控操作系統,只需要一步:
在被監控系統上安裝node. exporter並啓動就ok了
2.想監控操mysql數據庫,只需要兩步:
(1).創建一個mysql用戶
(2).安裝mysqld. exporter 並啓動

5. 使用 Grafana 可視化工具美化監控數據

1.安裝配置grafana
[root@web01 ~]# yum install grafana-5.4.3-1.x86_64.rpm -y

2.安裝出圖插件
[root@web01 ~]# grafana-cli plugins install grafana-piechart-panel

3.裝完插件需restart服務
[root@web01 ~]# service grafana-server restart

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

6. 將監控 Linux 系統和 mysql 服務運行狀態的 web 儀表盤插件導入 grafana

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章