基本概念
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
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:
在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:
輸入用戶名和密碼:admin和admin,
如圖:
配置數據源,將Grafana和Prometheus關聯起來,點擊Configuration->Data Sources->Add data source,選擇Prometheus,
如圖:
在URL輸入Prometheus服務地址,
如圖:
增加一個儀表盤,點擊Import,輸入:https://grafana.com/dashboards/1860 ,點擊load,
如圖:
效果如下: