公司最近安裝了一個大陸的軟體,他們透過 Docker 架設 Grafana + Prometheus 建構監控預警系統,因此這邊特別學習如何架設,然而我們 OS 是用 windows 架設的,需要透過 Prometheus 的 windows Exporter 服務程式進行監控,安裝方式可以參考 (link)
Prometheus
Prometheus 是一個很方便且完善的監控預警框架 TSDB (Time Series Database) 時間序列資料庫,可以快速且容易的建立不同維度的指標 (Metrics) 和整合不同的 Alert Tool 以及資訊視覺化圖表的監控工具並提供自帶的 PromQL 進行 query 查詢。
Grafana
Grafana 是由 Grafana Lab 經營的一個非常精美的儀表板系統,可以整合各種不同的 Data Source,例如:Prometheus、Elasticsearch、MySQL、PostgreSQL等。透過不同種指標 (Metrics) 呈現在 Dashboard 上。如果還是不太清楚,可以把 Prometheus Grafana 分別想成 Prometheus 是 EFK 的 Elasticsearch,Grafana 想成是 EFK 的 Kibana。
安裝步驟
我在網路找到開源打包寫好的 docker file (連結) ,我們這邊透過這個去安裝,並修改一些內容改成我們的windows 版本。
修改 dockerfile 設定
- nginx/Dockerfile 修改其內容,nginx 的檔案需改成 default.conf 否則無法吃進去 nginx 中
- 修改 status.conf 檔案內容
FROM nginx:latest
COPY ./status.conf /etc/nginx/conf.d/default.conf
server {
listen 8080;
server_name localhost;
location /stub_status {
stub_status on;
access_log off;
allow all; # 允許所有 IP
}
location / {
root /usr/share/nginx/html;
index index.html;
}
}
修改 Prometheus 設定檔案
- 要透過 Prometheus 監控 local 的 資源除了安裝好 windows exporter 外,還需要再Prometheus設定檔案中設定,然而我們是透過 docker 架設的,所以需要設定實體 IP 。
global:
scrape_interval: 5s # Server 抓取頻率
external_labels:
monitor: "my-monitor"
scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"]
- job_name: "nginx_exporter"
static_configs:
- targets: ["nginx-prometheus-exporter:9113"]
- job_name: "windows_exporter"
- targets: ["192.168.137.1:9182"] # 因為是 docker 架設的 所以要存取外部的需使用此方案
接著透過 docker 指令進行安裝
docker-compose up -d

測試與操作
Prometheus
- 瀏覽器上輸入網址: http://localhost:9090/ 可以看到 Prometheus Web UI > Status > Target health
- 以及透過 expoer 等監控的設定

Grafana
- 瀏覽器上輸入網址: http://localhost:3456/login 可以看到
- 輸入 帳號: admin 密碼: pass 可以正常登入

Grafana 設定
設定我們的 Data Source : Prometheus
- 因為透過 docker 架設的,因此需設定 http://prometheus:9090/

- 按下 Save & test 測試是否安裝 OK

- 到 grafana 找尋 windows exporter 的 dashboard (link),並寫下載 Json
- 匯入到 grafana 網站上

- 樣子如這樣

參考連結: (link)