Prometheus是一個開源的監視,查詢和警報工具。該功能豐富的工具最初由Soundcloud於2012年構建,已被多家公司采用,以監控其IT基礎架構並確保所有系統運行順暢。Prometheus允許您查詢和提取時間序列指標,例如通過HTTP協議的CPU和內存利用率,並在實時圖形上將其可視化。您還可以將Prometheus配置為在節點或服務停機時發出警報,並將其與其他第三方監視工具(例如Grafana)集成以增強數據可視化。在本指南中,我們將介紹在CentOS 8 / RHEL 8系統上Prometheus的安裝。
Prometheus架構
測試環境
prometheus主機 | prometheus 客戶端 | |
---|---|---|
主機名 | prometheusserver | prometheusclient |
IP信息 | 192.168.6.140 | 192.168.6.160 |
步驟1:創建一個Prometheus用戶和組
首先,我們將為Prometheus創建一個系統用戶。執行以下命令以實現此目的。
[root@prometheusserver ~]# useradd -m -s /bin/false prometheus
[root@prometheusserver ~]# id prometheus
uid=1005(prometheus) gid=1005(prometheus) groups=1005(prometheus)
[root@prometheusserver ~]#
您可能已經注意到,系統用戶沒有/ bin / false選項中指定的登錄權限。
步驟2:Prometheus創建配置目錄
創建Prometheus用戶之后,我們將在/ etc和/ var目錄中創建配置目錄,這些目錄將存儲Prometheus配置文件和數據。因此,運行以下命令:
[root@prometheusserver ~]# mkdir /etc/prometheus
[root@prometheusserver ~]# mkdir /var/lib/prometheus
在/ var / lib / prometheus上設置所有權
[root@prometheusserver ~]# chown prometheus /var/lib/prometheus/
步驟3:下載Prometheus tar文件
有了目錄后,我們現在可以下載Prometheus。要獲取最新版本,請轉到“下載”頁面以獲取適用於您的環境的最新版本。在撰寫本文時,最新版本為v 2.23.0。或者,只需運行以下命令
[root@prometheusserver ~]# dnf install wget -y
[root@prometheusserver ~]# wget https://github.com/prometheus/prometheus/releases/download/v2.23.0/prometheus-2.23.0.linux-amd64.tar.gz
下載完成后,解壓縮tarball文件,如下所示
[root@prometheusserver tmp]# tar zxvf prometheus-2.23.0.linux-amd64.tar.gz
這將為您提供一個名為prometheus-2.14.0.linux-amd64的目錄
使用tree命令查看目錄結構,
提取的目錄包含2個二進制文件prometheus和promtool,我們需要將其復制到/usr/local/bin路徑。
因此,導航到提取的目錄並使用以下命令將其復制:
[root@prometheusserver tmp]# cd prometheus-2.23.0.linux-amd64
[root@prometheusserver prometheus-2.23.0.linux-amd64]# cp prometheus /usr/local/bin
對其他二進制文件也一樣
[root@prometheusserver prometheus-2.23.0.linux-amd64]# cp promtool /usr/local/bin
步驟4:Prometheus創建配置文件
首先從配置開始,創建文件/etc/prometheus/prometheus.ym l並將配置粘貼到文件中
[root@prometheus ~]# vi /etc/prometheus/prometheus.yml
# Global config
global:
scrape_interval:15s #設置間隔為每15秒。默認值為每1分鍾。
Evaluation_interval:15s #每15秒評估一次規則。默認值為每1分鍾。
scrape_timeout:15s #scrape_timeout設置為全局默認值(10s)。
#包含僅一個要刮擦的端點的刮擦配置: #這里是Prometheus本身。
scrape_configs:
#作業名稱作為標簽“ job = <job_name>”添加到從此配置中刮取的任何時間序列。
- job_name: 'prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:9090']
這將僅監視您的本地系統(Prometheus Server)。
接下來,如下調整防火牆,以允許通過端口9090到服務器的外部連接
[root@prometheusserver /]# firewall-cmd --add-port=9090/tcp --permanent
success
[root@prometheusserver /]#firewall-cmd --reload
success
步驟5:Prometheus Server創建Systemd服務文件
為了使我們能夠使用systemd將Prometheus作為服務進行管理,我們需要為其創建系統文件。因此,如圖所示創建文件並粘貼內容,
[root@prometheusserver /]# vi /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus Time Series Collection and Processing Server
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus \
--config.file /etc/prometheus/prometheus.yml \
--storage.tsdb.path /var/lib/prometheus/ \
--web.console.templates=/etc/prometheus/consoles \
--web.console.libraries=/etc/prometheus/console_libraries
[Install]
WantedBy=multi-user.target
為了使更改生效,請重新加載systemctl,
[root@prometheusserver /]# systemctl daemon-reload
現在啟動並啟用Prometheus在啟動時運行
[root@prometheusserver /]# systemctl start prometheus
[root@prometheusserver /]# systemctl enable prometheus
為了確定Prometheus正在運行,請運行以下命令:
[root@prometheusserver /]# systemctl status prometheus
從顯示的輸出中,我們可以清楚地看到Prometheus正常運行,沒有錯誤。另外,您可以使用netstat實用工具檢查服務是否正在偵聽端口9090。
[root@prometheusserver /]# netstat -tunlp
或者
[root@prometheusserver /]# ss -antpl
Prometheus按預期在端口9090上運行。現在轉到瀏覽器,瀏覽服務器的IP,如下所示
http://服務器-ip:9090
點擊“狀態”標簽,然后點擊“目標”
您的系統將顯示如下
步驟6:安裝並配置node_exporter
node_exporter是一種實用程序,可收集和大量Linux系統指標,例如CPU,內存使用率,文件系統和網絡統計信息。在本節中,我們將在Prometheus服務器和遠程CentOS 8 Linux主機上安裝node_exporter,並監視這兩個主機上的系統指標。
【1】在Prometheus節點上,我們將為node_exporter創建一個系統用戶。
[root@prometheusserver tmp]# useradd -m -s /bin/false node_exporter
【2】接下來,前往Prometheus的下載頁面,然后下載node_exporter tarball或使用下面的wget命令從命令行下載下來,
[root@prometheusserver tmp]# wget https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz
【3】下載node_exporter文件后,繼續進行提取,如下所示
[root@prometheusserver tdops]# tar zxvf node_exporter-1.0.1.linux-amd64.tar.gz
【4】可以使用tree命令檢查提取的文件夾的內容,如下所示
[root@prometheusserver tdops]# tree node_exporter-1.0.1.linux-amd64
node_exporter-1.0.1.linux-amd64
├── LICENSE
├── node_exporter
└── NOTICE
0 directories, 3 files
【5】將node_exporter的二進制文件復制到 /usr/local/bin路徑
[root@prometheusserver tdops]# cp node_exporter-1.0.1.linux-amd64/node_exporter /usr/local/bin
【6】設置已復制的node_exporter文件的文件許可權,如下所示
[root@prometheusserver tmp]# chown node_exporter:node_exporter /usr/local/bin/node_exporter
【7】我們需要配置node_exporter以作為服務運行。因此,繼續操作並創建一個systemd服務文件,如下所示
[root@prometheusserver tmp]# vi /etc/systemd/system/node_exporter.service
【8】粘貼如下所示的配置並保存文件
[Unit]
Description=Prometheus Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=multi-user.target
【9】為了使更改生效,請使用以下命令重新加載systemd Manager:
[root@prometheusserver tmp]# systemctl daemon-reload
【10】啟動並啟用node_exporter服務
[root@prometheusserver tdops]# systemctl start node_exporter
[root@prometheusserver tdops]# systemctl enable node_exporter
或者
# 啟動並使節點導出器在系統引導時運行。
[root@prometheusserver tdops]# systemctl enable --now node_exporter.service
【11】為了確保該服務正在運行,請執行:
[root@prometheusserver tdops]# systemctl status node_exporter
● node_exporter.service - Prometheus Node Exporter
Loaded: loaded (/etc/systemd/system/node_exporter.service; enabled; vendor preset: disa>
Active: active (running) since Sun 2020-12-13 20:59:44 CST; 32s ago
Main PID: 6419 (node_exporter)
Tasks: 4 (limit: 23840)
Memory: 1.7M
CGroup: /system.slice/node_exporter.service
└─6419 /usr/local/bin/node_exporter
【12】遇到一個小插曲,啟動時遇到錯誤
Dec 13 20:43:50 centos8 systemd[1]: Started Prometheus Node Exporter.
Dec 13 20:43:50 centos8 systemd[5595]: node_exporter.service: Failed to execute command: Exec format error
Dec 13 20:43:50 centos8 systemd[5595]: node_exporter.service: Failed at step EXEC spawning /usr/local/bin/node_exporter: Exec format error
Dec 13 20:43:50 centos8 systemd[1]: node_exporter.service: Main process exited, code=exited, status=203/EXEC
Dec 13 20:43:50 centos8 systemd[1]: node_exporter.service: Failed with result 'exit-code'.
Dec 13 20:43:50 centos8 tdops[5610]: tdops pts/1 2020-12-13 19:41 (10.57.237.13) [/tmp] 2020-12-13/20:43:50 systemctl restart node_exporter
[root@prometheusserver tmp]# systemctl status node_exporter
● node_exporter.service - Prometheus Node Exporter
Loaded: loaded (/etc/systemd/system/node_exporter.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Sun 2020-12-13 20:44:36 CST; 4s ago
Process: 5635 ExecStart=/usr/local/bin/node_exporter (code=exited, status=203/EXEC)
Main PID: 5635 (code=exited, status=203/EXEC)
Dec 13 20:44:36 prometheusserver systemd[1]: Started Prometheus Node Exporter.
Dec 13 20:44:36 prometheusserver systemd[1]: node_exporter.service: Main process exited, code=exited, status=203/EXEC
Dec 13 20:44:36 prometheusserver systemd[1]: node_exporter.service: Failed with result 'exit-code'.
[root@prometheusserver tmp]#
【13】排查了一下發現,下載的軟件包與系統不匹配,node_exporter-1.0.1.darwin-amd64.tar.gz 更換為node_exporter-1.0.1.linux-amd64.tar.gz
【14】確保該服務正在運行,請使用netstat實用程序檢查它是否正在按默認預期在端口9100上偵聽。
[root@prometheusserver tdops]# netstat -pnltu | grep 9100
tcp6 0 0 :::9100 :::* LISTEN 6419/node_exporter
[root@prometheusserver tdops]# ss -antpl | grep 9100
LISTEN 0 16384 *:9100
Node_exporter服務正在按預期運行。
【15】如圖所示在防火牆中打開端口9100
[root@prometheusserver tdops]# firewall-cmd --add-port=9100/tcp --permanent
success
[root@prometheusserver tdops]# firewall-cmd --reload
success
同樣,對遠程CentOS 8 Linux系統也重復上述步驟。
【16】您需要將node_exporter目標添加到prometheus.yml文件。附加以下幾行以為Prometheus服務器定義node_exporter
[root@prometheusserver tdops]# cat /etc/prometheus/prometheus.yml
# Global config
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_timeout: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node_exporter'
static_configs:
- targets: ['localhost:9090']
【17】重新啟動Prometheus服務
[root@prometheusserver tdops]# systemctl restart prometheus
【18】再次轉到瀏覽器,單擊“狀態”標簽,然后單擊“目標”
確保 在Prometheus服務器的瀏覽器上觀察到名為node_exporter的新端點
步驟7:遠程主機上安裝node_exporter
【1】創建node_exporter 用戶
[root@prometheusclient tmp]# useradd -m -s /bin/false node_exporter
【2】Prometheus的下載頁面,然后下載node_exporter 或使用下面的wget命令從命令行下載下來,
[root@prometheusclient tmp]# wget https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz
【3】下載node_exporter文件后,繼續進行提取.
[root@prometheusclient tmp]# tar zxvf node_exporter-1.0.1.linux-amd64.tar.gz
【4】您可以使用tree命令檢查提取的文件夾的內容,如下所示
[root@prometheusclient tmp]# tree node_exporter-1.0.1.linux-amd64
node_exporter-1.0.1.linux-amd64
├── LICENSE
├── node_exporter
└── NOTICE
0 directories, 3 files
[root@prometheusclient tmp]#
【5】將node_exporter的二進制文件復制到 /usr/local/bin路徑
[root@prometheusclient tmp]# cp node_exporter-1.0.1.linux-amd64/node_exporter /usr/local/bin
【6】設置已復制的node_exporter文件的文件許可權,如下所示
[root@prometheusclient tmp]# chown node_exporter:node_exporter /usr/local/bin/node_exporter
【7】需要配置node_exporter以作為服務運行。因此,繼續操作並創建一個systemd服務文件,如下所示
[root@prometheusserver tmp]# vi /etc/systemd/system/node_exporter.service
然后粘貼如下所示的配置並保存文件
[Unit]
Description=Prometheus Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=multi-user.target
【8】為了使更改生效,請使用以下命令重新加載systemd Manager:
[root@prometheusclient tmp]# systemctl daemon-reload
【9】啟動並啟用node_exporter服務
[root@prometheusserver tdops]# systemctl start node_exporter
[root@prometheusserver tdops]# systemctl enable node_exporter
或者
# 啟動並使節點導出器在系統引導時運行。
[root@prometheusserver tdops]# systemctl enable --now node_exporter.service
【10】確保該服務正在運行,查看服務狀態信息:
[root@prometheusserver tdops]# systemctl status node_exporter
● node_exporter.service - Prometheus Node Exporter
Loaded: loaded (/etc/systemd/system/node_exporter.service; enabled; vendor preset: disa>
Active: active (running) since Sun 2020-12-13 20:59:44 CST; 32s ago
Main PID: 6419 (node_exporter)
Tasks: 4 (limit: 23840)
Memory: 1.7M
CGroup: /system.slice/node_exporter.service
└─6419 /usr/local/bin/node_exporter
步驟8: Prometheus服務器端添加配置
【1】遠程Linux系統 prometheusclient添加端點,請回到prometheus.yml文件並在下面添加以下行
–目標:['192.168.6.160:9100']
現在,node_exporter部分應如下所示
- job_name: 'node_exporter'
static_configs:
- targets: ['localhost:9090']
- targets: ['192.168.6.160:9100']
【2】保存更改並重新啟動Prometheus服務
[root@prometheusserver tdops]# systemctl restart prometheus
【3】刷新瀏覽器並注意為遠程CentOS Linux系統添加的第二個端點
【4】顯示Prometheus服務器的度量,請運行:
[root@prometheusclient tmp]# curl http://localhost:9100/metrics
【5】遠程CentOS 8主機,我執行了以下命令:
curl http://192.168.6.160:9100/metrics
【6】也可以通過打開瀏覽器並瀏覽URL來實現
http://192.168.10.90:9100/metrics
【7】選擇要繪制圖形的指標
【8】單擊“執行”按鈕,然后單擊下面的“圖形”選項卡以顯示圖形
這是我們本文章的結尾。您已成功安裝並配置了Prometheus,以監視服務器和遠程主機上的系統指標。
廣告時間:
- 關於我 :全國7*24高效代維服務
- 微信:lianglab
- QQ:867266199
- 淘寶店:全國7*24高效代維服務
- 全國高效代維:為中小型企業,提供雲計算咨詢代維、架構設計、降低成本。
在下一個指南中,我們將Prometheus與Grafana集成在一起,以更好地可視化和分析指標,隨時與我們分享您的反饋,並與朋友分享文章。