Prometheus監控Minio集群


一、概述

Minio支持集成prometheus,用以監控CPU、硬盤、網絡等數據。

 

二、修改docker-compose.yaml

官方的給docker-compose.yaml,默認是不能訪問metric數據的。

這里配置用是"public"類型,無身份認證。

需要在docker-compose.yaml中,增加一個環境變量即可。

MINIO_PROMETHEUS_AUTH_TYPE: public

 

在上篇文章,鏈接如下:

https://www.cnblogs.com/xiao987334176/p/13256553.html

 

還沒有配置主機目錄映射,因此,這里就一並修改了,完整內容如下:

version: '3.7'

# starts 4 docker containers running minio server instances. Each
# minio server's web interface will be accessible on the host at port
# 9001 through 9004.
services:
  minio1:
    image: minio/minio:RELEASE.2020-07-02T00-15-09Z
    volumes:
      - /data/minio-cluster/minio1/data1:/data1
      - /data/minio-cluster/minio1/data2:/data2
    ports:
      - "9001:9000"
    environment:
      MINIO_ACCESS_KEY: minio
      MINIO_SECRET_KEY: minio123
      MINIO_PROMETHEUS_AUTH_TYPE: public
    command: server http://minio{1...4}/data{1...2}
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3

  minio2:
    image: minio/minio:RELEASE.2020-07-02T00-15-09Z
    volumes:
      - /data/minio-cluster/minio2/data1:/data1
      - /data/minio-cluster/minio2/data2:/data2
    ports:
      - "9002:9000"
    environment:
      MINIO_ACCESS_KEY: minio
      MINIO_SECRET_KEY: minio123
      MINIO_PROMETHEUS_AUTH_TYPE: public
    command: server http://minio{1...4}/data{1...2}
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3

  minio3:
    image: minio/minio:RELEASE.2020-07-02T00-15-09Z
    volumes:
      - /data/minio-cluster/minio3/data1:/data1
      - /data/minio-cluster/minio3/data2:/data2
    ports:
      - "9003:9000"
    environment:
      MINIO_ACCESS_KEY: minio
      MINIO_SECRET_KEY: minio123
      MINIO_PROMETHEUS_AUTH_TYPE: public
    command: server http://minio{1...4}/data{1...2}
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3

  minio4:
    image: minio/minio:RELEASE.2020-07-02T00-15-09Z
    volumes:
      - /data/minio-cluster/minio4/data1:/data1
      - /data/minio-cluster/minio4/data2:/data2
    ports:
      - "9004:9000"
    environment:
      MINIO_ACCESS_KEY: minio
      MINIO_SECRET_KEY: minio123
      MINIO_PROMETHEUS_AUTH_TYPE: public
    command: server http://minio{1...4}/data{1...2}
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3
View Code

 

創建主機目錄

mkdir -p /data/minio-cluster/minio{1,2,3,4}/data{1,2}

 

啟動docker-compose

docker-compose up -d

 

三、訪問metric

http://192.168.31.34:9001/minio/prometheus/metrics

效果如下:

 

 

將端口改為9002~9004,也是同樣的結果。

 

四、Prometheus配置

修改prometheus.yml,增加job_name

  - job_name: minio
    metrics_path: /minio/prometheus/metrics
    scrape_interval: 10s
    scheme: http
    static_configs:
      - targets: ['192.168.31.34:9001','192.168.31.34:9002','192.168.31.34:9003','192.168.31.34:9004']

修改完成后,重啟prometheus

 

訪問targets,確保都是UP狀態

 

 

五、Grafana導入模板

模板選擇

推薦使用模板:https://grafana.com/grafana/dashboards/12063

這個模板執行選擇Minio節點,而且還是中文顯示的。

 

注意:其他的Minio模板,雖然星級很高,下載次數也比較多。但是發現都不合適!

 

導入模板后,效果如下:

 

 

但是發現關於s3相關圖表,數據是空的。

需要修改圖表中的metrics計算公式才行。

先來看S3接口總請求,對應的metrics計算公式為:

sum(s3_requests_total{instance="172.16.62.150:9000",job="minio-metrics"}) by (api)

它需要key為s3_requests_total的值。

 

我們再去這幾個metrics中去查找

http://192.168.31.34:9001/minio/prometheus/metrics
http://192.168.31.34:9002/minio/prometheus/metrics
http://192.168.31.34:9003/minio/prometheus/metrics
http://192.168.31.34:9004/minio/prometheus/metrics

 

發現只有第一個才有s3_requests_total的值。

 

因此metrics的計算公式為:

sum(s3_requests_total{api="listobjectsv1"}) by (api)

修改完成之后,圖表數據就有了。

 

 

附上其他圖表的正確計算公式:

S3接口當前總請求數
sum(s3_requests_current{api="listobjectsv1"}) by (api)

S3接口總錯誤請求數
sum(s3_errors_total{api="listobjectsv1",job="$job"}) by (api)

sum(s3_requests_current{api="listobjectsv1",job="$job"}) by (api)

S3接口延遲統計
s3_ttfb_seconds_sum{api="listobjectsv1"}

 

對於S3接口總錯誤請求數,需要修改一下Legend,做一下標識區分。

 

 

最終總體效果如下:

 

 

 

 

本文參考鏈接:

https://www.cnblogs.com/rongfengliang/p/12017914.html

https://blog.csdn.net/kuang1144/article/details/105302960


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM