Windows 監控透過 Prometheus + Grafana Docker 安装

公司最近安裝了一個大陸的軟體,他們透過 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 設定

  1. nginx/Dockerfile 修改其內容,nginx 的檔案需改成 default.conf 否則無法吃進去 nginx 中
  2. 修改 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)