本文主要介紹了如何二進制安裝Prometheus、使用 Node Exporter 采集主機信息並使用Grafana來進行圖形化的展示。
1. 安裝Prometheus Server
Prometheus基於Golang編寫,編譯后的軟件包,不依賴於任何的第三方依賴。用戶只需要下載對應平台的二進制包,解壓並且添加基本的配置即可正常啟Prometheus Server。
1.1 下載並解壓二進制安裝包
通過Prometheus的官方網站:https://prometheus.io/download/,下載最新版本的Prometheus安裝包
#下載、解壓、創建軟鏈接
cd /export/ wget https://github.com/prometheus/prometheus/releases/download/v2.13.1/prometheus-2.13.1.linux-amd64.tar.gz tar -zxvf prometheus-2.13.1.linux-amd64.tar.gz mv prometheus-2.13.1.linux-amd64 prometheus
1.2 配置說明
解壓后當前目錄會包含默認的Prometheus配置文件promethes.yml,下面配置文件做下簡略的解析:
# 全局配置 global: scrape_interval: 15s # 設置抓取間隔,默認為1分鍾 evaluation_interval: 15s #估算規則的默認周期,每15秒計算一次規則。默認1分鍾 # scrape_timeout #默認抓取超時,默認為10s # Alertmanager相關配置 alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # 規則文件列表,使用'evaluation_interval' 參數去抓取 rule_files: # - "first_rules.yml" # - "second_rules.yml" # 抓取配置列表 scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090']
1.3 創建prometheus的用戶及數據存儲目錄
為了安全,使用普通用戶來啟動prometheus服務。作為一個時序型的數據庫產品,prometheus的數據默認會存放在應用所在目錄下。
useradd -s /sbin/nologin -M prometheus
#創建數據目錄
mkdir /export/prometheus/data -p
#修改目錄屬主
chown -R prometheus:prometheus /export/prometheus/
1.4 創建Systemd服務啟動prometheus
prometheus的啟動很簡單,只需要直接啟動解壓目錄的二進制文件prometheus即可,但是為了更加方便對prometheus進行管理,這里使用systemd來啟停prometheus。
# vim /etc/systemd/system/prometheus.service [Unit] Description=Prometheus Documentation=https://prometheus.io/ After=network.target [Service] Type=simple User=prometheus ExecStart=/export/prometheus/prometheus --config.file=/export/prometheus/prometheus.yml --storage.tsdb.path=/export/prometheus/data
Restart=on-failure
[Install]
WantedBy=multi-user.target
備注:在service文件里面,我們定義了啟動的命令,可以定義數據存儲路徑,否則默認會在prometheus二進制的目錄的data下。
systemctl start prometheus
systemctl status prometheus
systemctl enable prometheus
1.5 打開prometheus的web頁面
到這里,prometheus就已經安裝好了。prometheus啟動后默認會啟動9090端口,通過瀏覽器打開該端口頁面。
2. Grafana的安裝
雖然說prometheus能展示一些圖表,但對比Grafana,那只是個過家家。接下來我們需要在同一個服務器上安裝Grafana服務,用來展示prometheus收集到的數據。
2.1 下載並解壓二進制包
這里安裝的Grafana的版本為6.4.4,要下載其他的版本可以到Grafana的官網:https://grafana.com/grafana/download進行下載。
cd /export
wget https://dl.grafana.com/oss/release/grafana-6.4.4.linux-amd64.tar.gz tar -zxvf grafana-6.4.4.linux-amd64.tar.gz mv grafana-6.4.4 grafana
2.2 創建grafana用戶及數據存放目錄
useradd -s /sbin/nologin -M grafana mkdir /export/grafana/data chown -R grafana:grafana /export/grafana/
2.3 修改配置文件
修改 /export/grafana/conf/defaults.ini 文件,配置為上面新建的數據目錄。
data = /export/grafana/data logs = /export/grafana/log plugins = /export/grafana/plugins provisioning = /export/grafana/conf/provisioning
2.4 把grafana-server添加到systemd中
新增 grafana-server.service 文件,使用systemd來管理grafana服務
vim grafana-server.service [Unit] Description=Grafana After=network.target [Service] User=grafana Group=grafana Type=notify ExecStart=/export/grafana/bin/grafana-server -homepath /export/grafana Restart=on-failure [Install] WantedBy=multi-user.target
啟停並設置開機啟動
systemctl start grafana-server systemctl status grafana-server systemctl enable grafana-server
2.5 打開grafana的web頁面
grafana已經安裝完畢。默認情況下,grafana-server會啟動3000端口,使用瀏覽器打開grafana頁面:http://IP:3000/login,輸入默認的賬號密碼 admin/admin登錄,第一次登陸需要修改密碼。
2.6 添加數據源
grafana雖然已經安裝好了,但是這個時候還沒有數據,沒辦法作圖。下面我們把grafana和prometheus關聯起來,也就是在grafana中添加添加數據源。
在配置頁面點擊添加Data Sources,然后選擇prometheus,輸入prometheus服務的參數即可。

按照上圖示例添加數據源之后,點擊save & test就可以了。
2.7 添加自帶的示例圖表
按照上面的指導添加數據源之后,我們就可以針對這些數據來繪制圖表了。grafana最人性化的一點就是擁有大量的圖表模板,我們只需要導入模板即可,從而省去了大量的制作圖表的時間。
目前我們的prometheus還沒有什么監控數據,只有prometheus本身的數據,我們看下這些prometheus本身數據圖表是怎樣的。
在添加數據源的位置上,右邊的選項有個Dashboards的菜單選項,我們點擊進去,然后導入基礎服務器監控圖表。
從Grafana官網查找最新的監控圖表:
復制ID或者下載后,此處復制ID:
輸入其ID號即可出來相應模板信息:


最后我們在左上角的位置上選擇這個圖表查看下,是不是很酷炫呢。這是個簡單的示例,后續我們使用node-exporter來收集主機的性能信息,然后在grafana中展示。
3. 使用Node Exporter采集主機運行數據
與傳統的監控zabbix來對比的話,prometheus-server就像是mysql,負責存儲數據。只不過這是時序數據庫而不是關系型的數據庫。數據的收集還需要其他的客戶端,在prometheus中叫做exporter。針對不同的服務,有各種各樣的exporter,就好比zabbix的zabbix-agent一樣。
這里為了能夠采集到主機的運行指標如CPU, 內存,磁盤等信息。我們可以使用Node Exporter。Node Exporter同樣采用Golang編寫,並且不存在任何的第三方依賴,只需要下載,解壓即可運行。可以從https://prometheus.io/download/獲取最新的node exporter版本的二進制包
3.1 下載node exporter
wget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz tar -xf node_exporter-0.18.1.linux-amd64.tar.gz #新建一個目錄專門安裝各種exporter mkdir -p /export/prometheus_exporter mv node_exporter-0.18.1.linux-amd64 /export/prometheus_exporter/ cd /export/prometheus_exporter/ mv node_exporter-0.18.1.linux-amd64/ node_exporter
3.2 加入linux服務,啟動node exporter
直接打開node_exporter的可執行文件即可啟動 node export,默認會啟動9100端口。建議使用systemctl來啟動
# vim /etc/systemd/system/node_exporter.service
[Unit]
Description=node_exporter
After=network.target
[Service]
Restart=on-failure
ExecStart=/export/prometheus_exporter/node_exporter/node_exporter
[Install]
WantedBy=multi-user.target
3.3 加入開機啟動
# systemctl enable node_exporter
# systemctl start node_exporter
3.4 配置Prometheus,收集node exporter的數據
可以看到node exporter啟動后也就是暴露了9100端口,並沒有把數據傳到prometheus,我們還需要在prometheus中配置,讓prometheus去pull這個接口的數據。
編輯prometheus.yml文件,增加后面4行.
scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] #采集node exporter監控數據 - job_name: 'node' static_configs: - targets: ['localhost:9100']
然后重啟prometheus,打開prometheus頁面查看是不是有對應的數據了。
在prometheus的web界面看到這個節點是up的狀態了,接下來我們在grafana中添加對應的模板。
3.5 導入grafana模板,數據展示
在導入界面,我們輸入模板的編號,這里我使用的是9276號模板,如要使用其他的模板,請到grafana的官網去查找 https://grafana.com/dashboards
選擇數據源,然后點擊導入

然后你就可以看到下面一個這么形象具體好看的界面了。

