0%

Prometheus+Grafana搭建監控系統

基本概念

Prometheus

時間序列化數據庫,將數據打上標簽,以時間維度存儲。

Grafana

Prometheus中存儲的數據,通過Grafana很優美的展現出來。

Prometheus:

登錄linux系統,輸入以下命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#創建data文件夾
mkdir /data/

cd /data/

#下載
wget https://github.com/prometheus/prometheus/releases/download/v2.23.0/prometheus-2.23.0.linux-amd64.tar.gz

#解壓
tar -zxvf prometheus-2.23.0.linux-amd64.tar.gz -C /usr/local/

cd /usr/local

#轉移文件夾
mv prometheus-2.23.0.linux-amd64/ prometheus/

cd prometheus/

#查看版本號
./prometheus --version

prometheus.yml文件,此文件很關鍵!!!

添加用戶 prometheus ,此用戶用于啟動服務:

1
2
3
4
#創建用戶組
groupadd prometheus
#創建用戶,沒有登錄權限
useradd -g prometheus -s /sbin/nologin prometheus

賦予權限:

1
chown -R prometheus:prometheus /usr/local/prometheus/

創建prometheus運行數據目錄/data/prometheus-data,并賦予權限:

1
2
3
mkdir /data/prometheus-data

chown -R prometheus:prometheus /data/prometheus-data

設置開機啟動:

1
2
3
4
5
touch /usr/lib/systemd/system/prometheus.service

chown prometheus:prometheus /usr/lib/systemd/system/prometheus.service

vi /usr/lib/systemd/system/prometheus.service

prometheus.service,ExecStart啟動參數,請根據實際情況增加或修改,詳細可以查看官方,本文內容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[Unit]
Description=Prometheus
Documentation=https://prometheus.io/
After=network.target

[Service]
# Type設置為notify時,服務會不斷重啟
Type=simple
User=prometheus

# --storage.tsdb.path是可選項,數據目錄存放位置
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/data/prometheus-data
Restart=on-failure

[Install]
WantedBy=multi-user.target

保存后退出。

設置啟動:

1
2
3
4
5
6
7
8
#開機啟動
systemctl enable prometheus

#服務啟動
systemctl start prometheus

#服務狀態
systemctl status prometheus

防火墻配置,以firewalld為例,開放9090端口:

1
2
3
4
5
6
7
8
9
10
11
#服務狀態
systemctl status firewalld.service

#服務狀態
firewall-cmd --state

#開放端口
firewall-cmd --zone=public --add-port=9090/tcp --permanent

#服務重啟
systemctl reload firewalld

網址訪問:ip地址:9090

1
localhost:9090

exporter是什么?

Exporter是Prometheus的一類數據采集組件的總稱。它負責從目標處搜集數據,并將其轉化為Prometheus支持的格式。與傳統的數據采集組件不同的是,它并不向中央服務器發送數據,而是等待中央服務器主動前來抓取。exporter來源主要2個方面,一個是社區提供的,一種是用戶自定義開發。

常用exporter:https://prometheus.io/docs/instrumenting/exporters/

Prometheus 官方提供的 Node Exporter 來完成對Linux系統運行數據的采集。以 Node Exporter 為例。

網址:https://github.com/prometheus/node_exporter/releases

執行以下命令:

1
2
3
4
5
6
7
cd /data/

wget https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz

tar zxvf node_exporter-1.0.1.linux-amd64.tar.gz

mv node_exporter-1.0.1.linux-amd64/node_exporter /usr/local/prometheus_node_exporter

為node_exporter創建用戶:

1
useradd -rs /bin/false prometheusNodeUser

設置開機啟動:

1
2
3
4
5
touch /usr/lib/systemd/system/prometheus_node_exporter.service

chown prometheusNodeUser:prometheusNodeUser /usr/lib/systemd/system/prometheus_node_exporter.service

vi /usr/lib/systemd/system/prometheus_node_exporter.service

內容如下:

1
2
3
4
5
6
7
8
9
10
11
12
[Unit]
Description=prometheus node exporter
After=network.target

[Service]
User=prometheusNodeUser
Group=prometheusNodeUser
Type=simple
ExecStart=/usr/local/prometheus_node_exporter

[Install]
WantedBy=multi-user.target

保存后退出。

設置啟動:

1
2
3
systemctl enable prometheus_node_exporter
systemctl start prometheus_node_exporter
systemctl status prometheus_node_exporter

防火墻配置,以firewalld為例,開放9100端口:

1
2
3
4
5
6
7
systemctl status firewalld.service

firewall-cmd --state

firewall-cmd --zone=public --add-port=9100/tcp --permanent

systemctl reload firewalld

網址訪問,ip地址:9100/metrics:

1
localhost:9100/metrics

在Prometheus Server上添加已配置的節點導出程序Target,輸入以下命令:

1
2
3
4
5
#備份文件
cp /usr/local/prometheus/prometheus.yml /usr/local/prometheus/prometheus.yml_bak

#修改prometheus.yml文件
vi /usr/local/prometheus/prometheus.yml

在scrape_configs配置下添加以下配置,IP和端口請根據實際情況修改,

1
2
3
4
- job_name: 'node_exporter_centos_108'
scrape_interval: 5s
static_configs:
- targets: ['192.168.0.108:9100']

如圖:

重啟Prometheus服務:

1
systemctl restart prometheus

登錄Prometheus服務器界面,并檢查目標,

1
http://192.168.0.108:9090/classic/targets

Grafana

網址:https://grafana.com/

1
2
3
4
5
cd /data

wget https://dl.grafana.com/oss/release/grafana-7.3.6-1.x86_64.rpm

yum install grafana-7.3.6-1.x86_64.rpm

配置文件目錄,配置文件目前采用默認:

1
cat /etc/grafana/grafana.ini

設置開機啟動:

1
2
3
systemctl enable grafana-server
systemctl start grafana-server
systemctl status grafana-server

防火墻配置,以firewalld為例,開放3000端口:

1
2
3
4
5
6
7
systemctl status firewalld.service

firewall-cmd --state

firewall-cmd --zone=public --add-port=3000/tcp --permanent

systemctl reload firewalld

網址訪問,ip地址:3000:

1
localhost:3000

輸入用戶名和密碼:admin和admin,

如圖:

配置數據源,將Grafana和Prometheus關聯起來,點擊Configuration->Data Sources->Add data source,選擇Prometheus,

如圖:

在URL輸入Prometheus服務地址,

如圖:

增加一個儀表盤,點擊Import,輸入:https://grafana.com/dashboards/1860 ,點擊load,

如圖:

效果如下:

layicr 微信支付

微信支付

layicr 支付寶

支付寶