Linux 集群監(jiān)控部署:prometheus + node-exporter + Grafana
一、前言
之前我們有用到top、free、iostat等等命令,去監(jiān)控服務(wù)器的性能,但是這些命令,我們只針對單臺服務(wù)器進(jìn)行監(jiān)控,通常我們線上都是一個集群的項目,難道我們需要每一臺服務(wù)器都去敲命令監(jiān)控嗎?這樣顯然不是符合邏輯的,Linux中就提供了一個集群監(jiān)控工具 – prometheus。
二、搭建被監(jiān)測節(jié)點 node_exporter
2.1 查看Linux系統(tǒng)版本
該命令僅適合Redhat系列的Linux系統(tǒng),顯示的版本信息也比較簡單
cat /etc/redhat-release
2.2 部署前的準(zhǔn)備
關(guān)閉所有Linux機(jī)器的防火墻:systemctl stop firewalld.service
。
保證所有Linux機(jī)器的時間是準(zhǔn)確的,執(zhí)行date命令檢查;如果不準(zhǔn)確,建議使用。
如果你Linux上的時間不準(zhǔn)確,可以使用ntp命令同步網(wǎng)絡(luò)時間。
首先 ntp 需要安裝
yun intall -y ntp
#安裝成功之后,輸入如下命令
ntpdate pool.ntp.org
2.3 部署Linux操作系統(tǒng)監(jiān)控組件
下載監(jiān)控Linux的exporter(注意選擇自己的操作系統(tǒng),我的操作系統(tǒng)是 Linux centos7.9),下載鏈接:https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz
將node_export 包上傳到需要被監(jiān)控的Linux服務(wù)器上,任意的目錄下,執(zhí)行解壓命令。
```bash
#1.解壓命令
tar -zxvf node_exporter-1.6.1.linux-amd64.tar.gz
#2.使用復(fù)制命令復(fù)制到 node_exporter 文件夾
mv node_exporter-1.6.1.linux-amd64 node_exporter
進(jìn)入解壓后的文件夾中,執(zhí)行啟動腳本。
#1.進(jìn)入 node_exporter 文件夾
cd node_exporter
#2.執(zhí)行啟動腳本
nohup ./node_exporter
#3.查看nohup日志,tail -100 nohup.out,出現(xiàn)如下日志,代表啟動成功
注意:極有可能發(fā)生如下,報錯信息如下:顯示 listen tcp :9100: bind: address already in use 9100端口被占用,那么如何殺掉9100端口的進(jìn)程呢?
[root@mysql node_exporter-1.3.1.linux-amd64]# systemctl status node_exporter
● node_exporter.service - node_exporter
Loaded: loaded (/etc/systemd/system/node_exporter.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Wed 2023-02-08 14:21:40 CST; 8s ago
Process: 32897 ExecStart=/opt/module/node_exporter-1.3.1.linux-amd64/node_exporter (code=exited, status=1/FAILURE)
Main PID: 32897 (code=exited, status=1/FAILURE)
Feb 08 14:21:40 mysql node_exporter[32897]: ts=2023-02-08T06:21:40.435Z caller=node_exporter.go:115 level=info collector=timex
Feb 08 14:21:40 mysql node_exporter[32897]: ts=2023-02-08T06:21:40.435Z caller=node_exporter.go:115 level=info collector=udp_queues
Feb 08 14:21:40 mysql node_exporter[32897]: ts=2023-02-08T06:21:40.435Z caller=node_exporter.go:115 level=info collector=uname
Feb 08 14:21:40 mysql node_exporter[32897]: ts=2023-02-08T06:21:40.435Z caller=node_exporter.go:115 level=info collector=vmstat
Feb 08 14:21:40 mysql node_exporter[32897]: ts=2023-02-08T06:21:40.435Z caller=node_exporter.go:115 level=info collector=xfs
Feb 08 14:21:40 mysql node_exporter[32897]: ts=2023-02-08T06:21:40.435Z caller=node_exporter.go:115 level=info collector=zfs
Feb 08 14:21:40 mysql systemd[1]: Unit node_exporter.service entered failed state.
Feb 08 14:21:40 mysql node_exporter[32897]: ts=2023-02-08T06:21:40.435Z caller=node_exporter.go:199 level=info msg="Listening on" address=:9100
Feb 08 14:21:40 mysql node_exporter[32897]: ts=2023-02-08T06:21:40.435Z caller=node_exporter.go:202 level=error err="listen tcp :9100: bind: address already in use"
Feb 08 14:21:40 mysql systemd[1]: node_exporter.service failed.
打開linux系統(tǒng),在linux的桌面的空白處右擊。
- 在彈出的下拉選項里,點擊打開終端。
- 在終端窗口中輸入 netstat -tln | grep 被占用的端口命令。 輸入 lsof -i:被占端口命令,回車后可查 看端口被那個進(jìn)程占用。
- 輸入kill -9 進(jìn)程 id命令,回車后即可殺死占用的端口進(jìn)程。(一般情況下不建議直接殺死進(jìn)程)
我的端口號是被 gitlab-prometeus 占用的
第一種解決方案:kill -9 進(jìn)程號
yum install lsof
lsof -i:9100
kill -9 pid進(jìn)程號
#無法kill掉的時候,可以使用如下的命令
gitlab-ctl stop node_exporter
#查看狀態(tài)
gitlab-ctl stop node_exporter
第二種解決方案:修改 node_exporter 端口號
#1.新增一個 node_exporter 服務(wù)
vi /usr/lib/systemd/system/node_exporter.service
#2.粘貼如下命令
[Service]
ExecStart=/usr/local/node_exporter/node_exporter --web.listen-address=:9111
[Install]
WantedBy=multi-user.target
[Unit]
Description=node_exporter
After=network.target
#3.執(zhí)行如下的命令重新加載系統(tǒng)服務(wù)
systemctl daemon-reload
#4.啟動服務(wù)
systemctl start node_exporter.service
#5.查看服務(wù)狀態(tài)
systemctl status node_export.service
image-20230802182202762
出現(xiàn)如上的結(jié)果表示 node_exporter.service 啟動成功。
2.4 啟動成功之后,訪問對應(yīng)的接口
例如:http://192.168.xx.7:9111/metrics
出現(xiàn)如上的結(jié)果表示結(jié)果正常。
三、搭建監(jiān)測節(jié)點
3.1 下載包鏈接:
3.1.1 Linux系統(tǒng)下載
#1.下載命令
wget https://github.com/prometheus/prometheus/releases/download/v2.46.0/prometheus-2.46.0.linux-amd64.tar.gz
#2.將 Prometheus 上傳到一臺單獨的Linux機(jī)器上,然后執(zhí)行下面的解壓命令
tar -zxvf prometheus-2.46.0.linux-amd64.tar.gz
#3.移動修改文件名稱
mv prometheus-2.46.0.linux-amd64 prometheus
#4.進(jìn)入解壓后的文件夾中,修改配置文件,添加要監(jiān)控的服務(wù)器信息 ip
vim prometheus.yml
#5.添加如下的命令,其目的是在scrape_configs 配置項下添加 Linux 監(jiān)控的 job,其中 IP 修改為 node_exporter 機(jī)器的ip,端口號默認(rèn)是9100的,自己修改的端口號寫自己的端口號。(復(fù)制粘貼下面的配置信息)
- job_name: "linux"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["192.168.xx.7:9111"]
#6.保存配置文件,啟動prometheus
nohup ./prometheus &
// 檢查nohup.out日志,如果有以下信息,啟動成功
#7.在瀏覽器中訪問部署的prometheus:http://ip:9090,點擊菜單欄 Status -> Targets,看到頁面中有如下node節(jié)點,代表 Prometheus 和 node_exporter 鏈接成功。 出現(xiàn)如下的結(jié)果就正常。
3.1.2 Windows系統(tǒng)下載
鏈接:https://github.com/prometheus/prometheus/releases/download/v2.46.0/prometheus-2.46.0.windows-amd64.zip
#3.移動修改文件名稱
mv prometheus-2.46.0.linux-amd64 prometheus
#4.進(jìn)入解壓后的文件夾中,修改配置文件,添加要監(jiān)控的服務(wù)器信息 ip
prometheus.yml
#5.添加如下的命令,其目的是在scrape_configs 配置項下添加 Linux 監(jiān)控的 job,其中 IP 修改為 node_exporter 機(jī)器的ip,端口號默認(rèn)是9100的,自己修改的端口號寫自己的端口號。(復(fù)制粘貼下面的配置信息)
- job_name: "linux"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["192.168.xx.7:9111"]
#6.在promehteus的文件夾下找到
prometheus.exe 點擊運行
#7.在瀏覽器中訪問部署的prometheus:http://ip:9090,點擊菜單欄 Status -> Targets,看到頁面中有如下node節(jié)點,代表 Prometheus 和 node_exporter 鏈接成功。 出現(xiàn)如下的結(jié)果就正常。
3.2 部署Grafana
下載安裝granfana,(和prometheus 同一臺服務(wù)器)輸入命令安裝。
#1.下載及安裝 granfana
sudo yum install -y https://dl.grafana.com/enterprise/release/grafana-enterprise-10.0.0-1.x86_64.rpm
#2.啟動 granfana
systemctl start granfana-server
#3.在瀏覽器訪問:http://ip:3000/
#4.用戶名/密碼:首次登陸用戶名/密碼為:admin/admin,然后會讓你修改密碼。如果不設(shè)置的話,可以直接點擊skip。
登陸界面
自定義用戶名和密碼
添加你的第一個數(shù)據(jù)源
選擇prometheus 進(jìn)行添加
設(shè)置prometheus 的 name 和 url 鏈接地址
保存及測試
創(chuàng)建自己的面板
創(chuàng)建所需要的 Dashboards
導(dǎo)入 dashboard
官方Dashboard網(wǎng)站 在該頁面搜索 Node Export ,直接選擇中文的或者選擇英文的。
選擇對應(yīng)的 DashBoard ID
整體效果如下
整體效果-2
四、郵件警告
4.1 告警介紹
在Prometheus 平臺中,警報由獨立的自建 Alertmanager 處理。通常情況下,我們首先告訴 Prometheus Altertmanager 所在的位置,然后在 Prometheus 配置中創(chuàng)建警報規(guī)則,最后配置 Altertmanager 來處理警報并發(fā)送給接收者(郵件,webhook,slack等)。
在QQ郵箱開通授權(quán)碼:
4.2 配置 alertmanager.yml 文件
alertmanager.yml
global:
resolve_timeout: 15s
smtp_smarthost: 'smtp.qq.com:465' #smtp服務(wù)
smtp_from: 'xxxxxx@qq.com' #發(fā)送郵箱
smtp_auth_username: 'xxxxxx@qq.com' #用戶郵箱
smtp_auth_password: 'vkqubunlwssebbij' #授權(quán)碼
smtp_hello: '@qq.com'
smtp_require_tls: false
templates:
- 'D:\softwore\alertmanager-0.25.0.windows-amd64\tmpl\email.tmpl' #增加templates配置 不填寫,有默認(rèn)模板
route:
group_by: ['alertname']
group_wait: 20s
group_interval: 5m
repeat_interval: 5m
receiver: 'email'
receivers:
- name: 'email'
email_configs:
- to: 'xxxxxx@qq.com' #發(fā)給那個郵箱
html: '{{ template "email.html" . }}' #警告模板
send_resolved: true
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname', 'dev', 'instance']
4.3 配置 prometheus.yml 文件
prometheus.yml
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets: ["127.0.0.1:9093"] # 配置 node-exporter 地址
# - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
- "rules/rules.yml" # 配置的警告規(guī)則 文件
# - "first_rules.yml"
# - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: "prometheus"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["localhost:9090"]
- job_name: "node-exporter"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["192.168.50.7:9111"]
- job_name: "alertmanager"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["127.0.0.1:9093"]
4.4 配置rules.yml 規(guī)則
rules.yml
groups:
- name: general.rules
rules:
- alert: "Memory 使用率"
expr: round(100- node_memory_MemAvailable_bytes/node_memory_MemTotal_bytes*100) > 99
for: 15s
labels:
severity: warning
annotations:
summary: "內(nèi)存使用率過高大于90%,當(dāng)前使用率{{ $value }}%"
- alert: InstanceDown
expr: up{job="node-exporter"} == 0
for: 10s
labels:
severity: warning
annotations:
description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 5 minutes."
summary: "{{ $labels.instance }} 已停止運行超過 10s!"
- alert: "CPU使用率過高"
expr: ceil(100 - sum(increase(node_cpu_seconds_total{job="node-exporter",mode="idle"}[5m])) by(instance) / sum(increase(node_cpu_seconds_total{job="node-exporter"}[5m])) by(instance)*100) > 90
for: 10s
labels:
severity: warning
annotations:
description: "{{ $labels.instance }} 的 {{ $labels.mountpoint }} CPU使用大于90%"
summary: "{{ $labels.mountpoint }} CPU使用率過高!"
- alert: "Disk 使用率"
expr: round((1 - (node_filesystem_avail_bytes{fstype=~"ext3|ext4|xfs|nfs",job="node-exporter"} / node_filesystem_size_bytes{fstype=~"ext3|ext4|xfs|nfs",job="node-exporter"})) * 100) > 90
for: 10s
labels:
severity: warning
annotations:
description: "{{ $labels.instance }}的{{ $labels.mountpoint }} 分區(qū)使用大于90% (當(dāng)前值: {{ $value }}%)"
summary: "{{ $labels.instance }}:{{ $labels.mountpoint }} 分區(qū)使用率過高"
4.5 配置 email.tmpl 警告內(nèi)容通知模板
{{ define "email.html" }}
{{- if gt (len .Alerts.Firing) 0 -}}
{{- range $index, $alert := .Alerts -}}
======== 異常告警 ======== <br>
告警程序: prometheus_alert <br>
告警級別: {{ $alert.Labels.severity }} 級 <br>
告警名稱: {{ $alert.Labels.alertname }} <br>
告警機(jī)器: {{ $alert.Labels.instance }} {{ $alert.Labels.device }} <br>
告警主題: {{ $alert.Annotations.summary }} <br>
告警詳情: {{ $alert.Annotations.description }} <br>
告警時間: {{ $alert.StartsAt.Format "2006-01-02 15:04:05" }} <br>
========== END ========== <br>
{{- end }}
{{- end }}
{{- if gt (len .Alerts.Resolved) 0 -}}
{{- range $index, $alert := .Alerts -}}
======== 告警恢復(fù) ======== <br>
告警名稱: {{ $alert.Labels.alertname }} <br>
告警級別: {{ $alert.Labels.severity }} <br>
告警機(jī)器: {{ $alert.Labels.instance }} <br>
告警詳情: {{ $alert.Annotations.summary }} <br>
告警時間: {{ $alert.StartsAt.Format "2006-01-02 15:04:05" }} <br>
恢復(fù)時間: {{ $alert.EndsAt.Format "2006-01-02 15:04:05" }} <br>
========== END ========== <br>
{{- end }}
{{- end }}
{{- end }}
##4.6 郵件通知效果如下
4.7 具體內(nèi)容如下
五、自動化部署腳本
5.1 Linux 命令詳解
top 命令經(jīng)常用來監(jiān)控Linux的系統(tǒng)狀況,是常用的性能分析工具,能夠?qū)崟r分析系統(tǒng)中各個進(jìn)程的資源占用情況。
5.1.1 常用參數(shù)
top 的使用方式 top [-d number] | top [-bnp]
參數(shù) 含義
-d number number 代表秒數(shù),表示top命令顯示的頁數(shù)更新一次的間隔(default=5s)
-b 以批次的方式執(zhí)行top
-n 與-b配合使用,表示需要進(jìn)行幾次 top 命令的輸出結(jié)果
-p 指定特定的pid進(jìn)程號進(jìn)行觀察
5.1.2 top 命令顯示的頁面還可以輸入一下按鍵執(zhí)行相應(yīng)的功能(注意大小寫區(qū)分的)
參數(shù) 含義
? 顯示在top當(dāng)中可以輸入的命令
P 以CPU的使用資源排序顯示
M 以內(nèi)存的使用資源排序顯示
N 以 pid 排序顯示
T 由進(jìn)程使用的時間累計排序顯示
k 給某一個pid一個信號,可以用來殺死進(jìn)程(9)
r 給某個pid重新定制一個nice值(即優(yōu)先級)
q 推出 top(用ctr + c也可以退出 top)
5.1.3 top 各輸出參數(shù)含義
1.top 前五條信息解釋
top - 13:41:32 up 48 days, 15:36, 3 users, load average: 0.72,0.66,0.68
內(nèi)容 含義
13:41:32 表示當(dāng)前時間
up 48 days,15:36 系統(tǒng)運行時間,格式為時:分
3 users 當(dāng)前登陸用戶數(shù)
load average:0.72,0.66,0.68 系統(tǒng)負(fù)載,即任務(wù)隊列的平均長度。三個數(shù)值分別為1分鐘,5分鐘,15分鐘前到現(xiàn)在的平均值
第二行的數(shù)據(jù)
Tasks: 465 total, 1 running, 644 sleeping, 0 stopped, 0 zombie
內(nèi)容 含義
Tasks:465 total 進(jìn)程總數(shù)
1 running 正在運行的進(jìn)程數(shù)
644 sleeping 睡眠的進(jìn)程
0 stopped 停止的進(jìn)程數(shù)
0 zombie 僵尸進(jìn)程數(shù)
第三行數(shù)據(jù)
Cpu(s):3.8%us, 1.8%sy, 0.0%ni,94.3%id, 0.1%wa, 0.0%hi, 0.0%si, 0.0%st
內(nèi)容 含義
3.8%us 用戶空間占用CPU百分比
1.8%sy 內(nèi)核空間占用CPU百分比
0.0%ni 用戶進(jìn)程空間內(nèi)改變過優(yōu)先級的進(jìn)程占用CPU百分比
94.3%id 空閑CPU百分比
0.1%wa 等待輸入輸出的CPU時間百分比
0.0%hi 硬中斷(Hardware IRQ)占用CPU的百分比
0.0%si 軟中斷(Software Interrupts)占用 CPU 的百分比
0.0 st 用于有虛擬機(jī) cpu 的情況,用來指示被虛擬機(jī)偷掉的 cpu 時間
第四行數(shù)據(jù)
KiB Mem: 32365492 total, 377508 free, 25695388 used, 6292596 buffers/cache
內(nèi)容 含義
32365492 total 物理內(nèi)存總量
377508 free 空閑內(nèi)從總量
25695388 used 使用的物理內(nèi)存總量
6292596 buffers/cache 用作內(nèi)核緩存的內(nèi)存量
第五行數(shù)據(jù)
KiB Swap: 29360120 total, 13275880 free,16084240 used, 2091316 avail Mem
內(nèi)容 含義
29360120 total 交換區(qū)總量
13275880 free 空閑交換區(qū)總量
16084240 used 使用的交換區(qū)總量
2091316 avail Mem 可用交換取總量
5.1.4 進(jìn)程信息
列名 含義
PID 進(jìn)程id
USER 進(jìn)程所有者的用戶名
PR 優(yōu)先級
NI nice 值。負(fù)值表示高優(yōu)先級,正值表示低優(yōu)先級
VIRT 進(jìn)程使用的虛擬內(nèi)存總量,單位kb。VIRT=SWAP+RES
RES 進(jìn)程使用的,違背換出的物理內(nèi)存大小,單位kb。RES = CODE + DATA
SHR 共享內(nèi)存大小,單位kb
S 進(jìn)程狀態(tài)。D=不可中斷的睡眠狀態(tài) R=運行 S=睡眠 T=跟蹤/停止 Z=僵尸進(jìn)程
%CPU 上次更新到現(xiàn)在的CPU時間占用百分比
%MEM 進(jìn)程使用的物理內(nèi)存百分比
TIME+ 進(jìn)程使用的CPU時間總計,單位1/100秒
默認(rèn)進(jìn)入 top 時,各進(jìn)程是按照 CPU 的占用了來排序的。
5.2 安裝 node_exporter 節(jié)點 shell 腳本
5.2.1 創(chuàng)建node_exporter shell 腳本
#1.創(chuàng)建node_exporter.sh 腳本
touch node_exporter.sh
#2.編輯node_exporter.sh腳本
vim node_exporter.sh
粘貼下面內(nèi)容,到 node_exporter.sh 里面
#1.首先 ntp 需要安裝,進(jìn)行時間同步
yun intall -y ntp
#2.安裝成功之后,輸入如下命令
ntpdate pool.ntp.org
#3.下載 node_exporter 安裝包
wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz
#4.解壓到當(dāng)前文件夾或解壓到固定文件夾
tar -zxvf node_exporter-1.6.1.linux-amd64.tar.gz
#5.使用復(fù)制命令復(fù)制到 node_exporter 文件夾
mv node_exporter-1.6.1.linux-amd64 /usr/local/node_exporter
5.2.2 使用第6步到第8步進(jìn)行啟動,也可以使用5.2.3方式創(chuàng)建一個 node_exporter 服務(wù)
#6.進(jìn)入 /usr/local/node_exporter 文件夾
cd node_exporter
#7.執(zhí)行啟動腳本
nohup ./node_exporter
#8.查看nohup日志,tail -100 nohup.out,出現(xiàn)如下日志,代表啟動成功
5.2.3 創(chuàng)建一個 node_exporter 服務(wù)
【優(yōu)點】:可以在服務(wù)器任何地方執(zhí)行,不用進(jìn)入文件夾下執(zhí)行命令。
#1.新增一個 node_exporter 服務(wù)
touch /usr/lib/systemd/system/node_exporter.service
filename="/usr/lib/systemd/system/node_exporter.service"
#2.粘貼如下命令
cat>"${filename}" << EOF
[Service]
ExecStart=/usr/local/node_exporter/node_exporter --web.listen-address=:9111
[Install]
WantedBy=multi-user.target
[Unit]
Description=node_exporter
After=network.target
EOF
#3.執(zhí)行如下的命令重新加載系統(tǒng)服務(wù)
systemctl daemon-reload
#4.啟動服務(wù)
systemctl start node_exporter.service
#5.查看服務(wù)狀態(tài)
systemctl status node_export.service
【腳本一】文章來源:http://www.zghlxwxcb.cn/news/detail-756420.html
#1.首先 ntp 需要安裝,進(jìn)行時間同步
yun intall -y ntp
#2.安裝成功之后,輸入如下命令
ntpdate pool.ntp.org
#3.下載 node_exporter 安裝包
wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz
#4.解壓到當(dāng)前文件夾或解壓到固定文件夾
tar -zxvf node_exporter-1.6.1.linux-amd64.tar.gz
#5.使用復(fù)制命令復(fù)制到 node_exporter 文件夾
mv node_exporter-1.6.1.linux-amd64 /usr/local/node_exporter
#6.新增一個 node_exporter 服務(wù)
touch /usr/lib/systemd/system/node_exporter.service
filename="/usr/lib/systemd/system/node_exporter.service"
#7.粘貼如下命令
cat>"${filename}" << EOF
[Service]
ExecStart=/usr/local/node_exporter/node_exporter --web.listen-address=:9111
[Install]
WantedBy=multi-user.target
[Unit]
Description=node_exporter
After=network.target
EOF
#8.執(zhí)行如下的命令重新加載系統(tǒng)服務(wù)
systemctl daemon-reload
#9.啟動服務(wù)
systemctl start node_exporter.service
#10.設(shè)置node-exporter開機(jī)啟動
systemctl enable node-exporter.service
#11.查看服務(wù)狀態(tài)
systemctl status node_export.service
【腳本二】文章來源地址http://www.zghlxwxcb.cn/news/detail-756420.html
#!/bin/bash
#變量
set -e
COLOR="echo -e \\E[1;32m"
COLOR1="echo -e \\E[1;31m"
END="\\E[0m"
install_dir="/apps"
#函數(shù)
node_exporter_install() {
#判斷安裝目錄是否存在
[ -f ${install_dir} ] || mkdir -p $install_dir
#下載軟件
cd $install_dir
wget https://github.com/prometheus/node_exporter/releases/download/v1.2.0/node_exporter-1.2.0.linux-amd64.tar.gz &> /dev/null
#解壓軟件包,并創(chuàng)建軟鏈接
tar xf node_exporter-1.2.0.linux-amd64.tar.gz
ln -sv node_exporter-1.2.0.linux-amd64 node_exporter &> /dev/null
#創(chuàng)建node-exporter的service文件
cat > /usr/lib/systemd/system/node-exporter.service <<EOF
[Unit]
Description=This is prometheus node exporter
[Service]
Type=simple
ExecStart=/apps/node_exporter/node_exporter
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
#同步service文件
systemctl daemon-reload
#啟動node-exporter
systemctl start node-exporter.service
#設(shè)置node-exporter開機(jī)啟動
systemctl enable node-exporter.service &> /dev/null
}
node_exporter_install
#變量
node_exporter_port=`ss -ntlp | grep -o 9100`
if [ $node_exporter_port == "9100" ];then
${COLOR}node-exporter安裝成功!${END}
else
${COLOR1}node-exporter安裝失敗!${END}
fi
5.3 prometheus shell 腳本
#1.下載命令
wget https://github.com/prometheus/prometheus/releases/download/v2.46.0/prometheus-2.46.0.linux-amd64.tar.gz
#2.將 Prometheus 上傳到一臺單獨的Linux機(jī)器上,然后執(zhí)行下面的解壓命令
tar -zxvf prometheus-2.46.0.linux-amd64.tar.gz
#3.移動修改文件名稱
mv prometheus-2.46.0.linux-amd64 prometheus
#4.進(jìn)入解壓后的文件夾中,修改配置文件,添加要監(jiān)控的服務(wù)器信息 ip
cd prometheus
#5.添加如下的命令,其目的是在scrape_configs 配置項下添加 node-exporter 監(jiān)控的 job,其中 IP 修改為 node_exporter 機(jī)器的ip,端口號默認(rèn)是9100的,自己修改的端口號寫自己的端口號。(復(fù)制粘貼下面的配置信息)
vim prometheus.yml
- job_name: "node-exporter"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["192.168.xx.7:9111"]
#6.保存配置文件,啟動prometheus
nohup ./prometheus &
// 檢查nohup.out日志,如果有以下信息,啟動成功
#7.在瀏覽器中訪問部署的prometheus:http://ip:9090,點擊菜單欄 Status -> Targets,看到頁面中有如下node節(jié)點,代表 Prometheus 和 node_exporter 鏈接成功。 出現(xiàn)如下的結(jié)果就正常。
5.4 grafana 腳本
#1.下載及安裝 granfana
sudo yum install -y https://dl.grafana.com/enterprise/release/grafana-enterprise-10.0.0-1.x86_64.rpm
#2.啟動 granfana
systemctl start granfana-server
#3.查看端口驗證
netstat -nlpt|grep 3000
#4.在瀏覽器訪問:http://ip:3000/
#5.用戶名/密碼:首次登陸用戶名/密碼為:admin/admin,然后會讓你修改密碼。如果不設(shè)置的話,可以直接點擊skip。
到了這里,關(guān)于Linux 集群監(jiān)控部署:prometheus + node-exporter + Grafana的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!