Prometheus(普羅米修斯)監控系統

轉載:https://huaweicloud.csdn.net/63354fcad3efff3090b53e66.html?spm=1001.2101.3001.6650.17&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Eactivity-17-118637402-blog-127518984.235%5Ev27%5Epc_relevant_recovery_v2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Eactivity-17-118637402-blog-127518984.235%5Ev27%5Epc_relevant_recovery_v2&utm_relevant_index=23

Prometheus(普羅米修斯)是一套開源的監控&報警&時間序列數據庫的組合,由 SoundCloud 公司開發。Prometheus 基本原理是通過 HTTP 協議週期性抓取被監控組件的狀態,這樣做的好處是任意組件只要提供 HTTP 接口就可以接入監控系統,不需要任何 SDK 或者其他的集成過程。這樣做非常適合虛擬化環境比如 VM 或者 Docker 。Prometheus 應該是爲數不多的適

 願許浪盡天涯  · 2021-07-30 14:53:50

 

 

一、Prometheus 簡介

Prometheus(普羅米修斯)是一套開源的監控&報警&時間序列數據庫的組合,由 SoundCloud 公司開發。

Prometheus 基本原理是通過 HTTP 協議週期性抓取被監控組件的狀態,這樣做的好處是任意組件只要提供 HTTP 接口就可以接入監控系統,不需要任何 SDK 或者其他的集成過程。這樣做非常適合虛擬化環境比如 VM 或者 Docker 。

Prometheus 應該是爲數不多的適合 Docker、Mesos、Kubernetes 環境的監控系統之一。

1.Prometheus 優勢

易於管理:

  • Prometheus核心部分只有一個單獨的二進制文件,不存在任何的第三方依賴(數據庫,緩存等等);
  • 唯一需要的就是本地磁盤,因此不會有潛在級聯故障的風險。

強大的查詢語言 PromQL:

  • Prometheus 內置一個強大的數據查詢語言 PromQL,通過 PromQL 可以實現對監控數據的查詢、聚合。
  • 同時 PromQL 也被應用於數據可視化(如 Grafana)以及告警中。

高效:

  • 對於監控系統而言,大量的監控任務必然導致有大量的數據產生。而 Prometheus 可以高效的處理這些數據。

可擴展:

  • Prometheus 支持聯邦集羣,可以讓多個 Prometheus 實例產生一個邏輯集羣;
  • 當單實例 Prometheus 處理的任務量過大時,通過使用功能分區(sharding)+ 聯邦集羣(federation)可以對其進行擴展。

易於集成:

  • 目前官網提供了多種語言的客戶端 SDK,基於這些 SDK 可以快速讓應用程序納入到監控系統中,同時還支持與其它的監控系統集成。

可視化:

  • Prometheus Server 自帶一個 UI,通過這個 UI 可以方便對數據進行查詢和圖形化展示;
  • 同時還可以對接 Grafana 可視化工具展示精美監控指標。

2.Prometheus 基礎架構

在這裏插入圖片描述
如上圖,Prometheus 主要由以下部分組成:

  • Prometheus:主要是負責存儲、抓取、聚合、查詢方面。
  • Alertemanager:主要是負責實現報警功能。
  • Pushgateway:主要是實現接收有 Client-push 過來的指標數據,在指定的時間間隔,有主程序來抓取。
  • *_exporter:主要是負責採集物理機、中間件的信息。
推薦內容
 

二、Prometheus 安裝

準備工作:

主機名操作系統IP 地址
Prometheus CentOS 7.4 192.168.1.1
Client CentOS 7.4 192.168.1.2
Granfana CentOS 7.4 192.168.1.3
  • 注意:在所有節點上安裝 ntpdate 工具,並進行時間同步(因爲 Prometheus 對時間要求非常嚴格)
yum -y install ntpdate
/usr/sbin/ntpdate ntp1.aliyun.com

1.下載

[root@Prometheus ~]# wget https://github.com/prometheus/prometheus/releases/download/v2.16.0/prometheus-2.16.0.linux-amd64.tar.gz
[root@Prometheus ~]# tar xf prometheus-2.16.0.linux-amd64.tar.gz
[root@Prometheus ~]# mv prometheus-2.16.0.linux-amd64 /usr/local/prometheus

2.配置

[root@Prometheus ~]# useradd -s /sbin/nologin prometheus
[root@Prometheus ~]# chown -R prometheus:prometheus /usr/local/prometheus/
[root@Prometheus ~]# vim /usr/lib/systemd/system/prometheus.service
[Unit]
Description=prometheus
After=network.target 

[Service]
User=prometheus
Group=prometheus
WorkingDirectory=/usr/local/prometheus
ExecStart=/usr/local/prometheus/prometheus
[Install]
WantedBy=multi-user.target
[root@Prometheus ~]# systemctl daemon-reload
[root@Prometheus ~]# systemctl enable --now prometheus								# 啓動並開啓自啓		

當啓動 Prometheus 後,便可以通過 9090 端口來訪問 Prometheus 自帶的 UI 界面:
在這裏插入圖片描述

3.後端存儲配置

  • 默認情況下 Prometheus 會將採集的數據存儲到本機的 /usr/local/prometheus/data 目錄,存儲數據的大小受限和擴展不便;
  • 所以這裏使用 influxdb 作爲後端的數據庫來存儲數據。

1)安裝

[root@Prometheus ~]# wget https://dl.influxdata.com/influxdb/releases/influxdb-1.7.8.x86_64.rpm
[root@Prometheus ~]# yum -y localinstall influxdb-1.7.8.x86_64.rpm
[root@Prometheus ~]# cp /etc/influxdb/influxdb.conf /etc/influxdb/influxdb.conf.default
[root@Prometheus ~]# systemctl enable --now influxdb

2)驗證

[root@Prometheus ~]# influx
Connected to http://localhost:8086 version 1.7.8
InfluxDB shell version: 1.7.8
> create database prometheus;
> exit

在這裏插入圖片描述

3)配置 Prometheus 集成 infuxdb

[root@Prometheus ~]# vim /usr/local/prometheus/prometheus.yml
在最後面添加:
remote_write:
  - url: "http://localhost:8086/api/v1/prom/write?db=prometheus"
remote_read:
  - url: "http://localhost:8086/api/v1/prom/read?db=prometheus"
[root@Prometheus ~]# systemctl restart prometheus									# 重啓 Prometheus
  • 注意:如果你們 influxdb 配置密碼,請參考 官網文檔 來進行配置。

三、使用 Prometheus 實現系統監控

  • 因爲 Prometheus 並不能直接監控服務,其主要任務負責數據的收集,存儲並對外提供數據查詢支持;
  • 因此,爲了能夠監控到某些東西,如:主機的 CPU 使用率,我們需要使用到 Exporter。

1.安裝 Node_Exporter

[root@Client ~]# wget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz
[root@Client ~]# tar xf node_exporter-0.18.1.linux-amd64.tar.gz
[root@Client ~]# mv node_exporter-0.18.1.linux-amd64 /usr/local/exporter/
[root@Client ~]# vim /usr/lib/systemd/system/node_exporter.service
[Unit]
Description=node_exporter
After=network.target 

[Service]
User=prometheus
Group=prometheus
ExecStart=/usr/local/exporter/node_exporter \
          --web.listen-address=:20001 \
          --collector.systemd \
          --collector.systemd.unit-whitelist=(sshd|nginx).service \
          --collector.processes
[Install]
WantedBy=multi-user.target
[root@Client ~]# systemctl daemon-reload
[root@Client ~]# systemctl enable --now node_exporter

當啓動 node_exporter 服務後,便可以通過 20001 端口來訪問 Client 的監控指標。
在這裏插入圖片描述

2.修改 Promehtues 配置文件

[root@Prometheus ~]# vim /usr/local/prometheus/prometheus.yml
- job_name: "Client"
  static_configs:
  - targets:
    - "192.168.1.2:20001"
[root@Prometheus ~]# systemctl restart prometheus

3.驗證

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

四、使用 Prometheus + Grafana 實現可視化界面

  • 在 Prometheus 中,我們可以使用 Web 界面進行數據的查詢和展示,但是展示效果不是很好;
  • 所以我們這裏使用 Grafana 來配合 Prometheus 使用。

1.安裝 Grafana

[root@Grafana ~]# wget https://dl.grafana.com/oss/release/grafana-6.1.4-1.x86_64.rpm
[root@Grafana ~]# yum -y localinstall grafana-6.1.4-1.x86_64.rpm
[root@Grafana ~]# systemctl enable --now grafana-server
[root@Grafana ~]# netstat -anpt | grep 3000

2.配置 Grafana 的 Web 界面

在這裏插入圖片描述
Add data source(添加數據源)
在這裏插入圖片描述
在這裏插入圖片描述
Import(導入模板)
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

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