Prometheus监控Minio集群

琉璃12个月前技术文章811


一、概述

Minio支持集成prometheus,用以监控CPU、硬盘、网络等数据。

二、修改docker-compose.yaml

官方的给docker-compose.yaml,默认是不能访问metric数据的。

这里配置用是"public"类型,无身份认证。

需要在docker-compose.yaml中,增加一个环境变量即可。

MINIO_PROMETHEUS_AUTH_TYPE: public

还没有配置主机目录映射,因此,这里就一并修改了,完整内容如下:

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

创建主机目录

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

效果如下:

image.png

将端口改为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节点,而且还是中文显示的。

导入模板后,效果如下:

image.png

但是发现关于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/metricshttp://192.168.31.34:9002/minio/prometheus/metricshttp://192.168.31.34:9003/minio/prometheus/metricshttp://192.168.31.34:9004/minio/prometheus/metrics

发现只有第一个才有s3_requests_total的值。

image.png

因此metrics的计算公式为:

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

修改完成之后,图表数据就有了。

image.png

附上其他图表的正确计算公式:

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,做一下标识区分。

image.png

最终总体效果如下:

image.png

标签: promehteus

相关文章

kubernetes HPA

kubernetes HPA

Horizontal Pod Autoscaling 可以根据 CPU 利用率自动伸缩一个 ReplicaSet、Deployment 或者中的 Pod 数量cat hpa-deploy.yaml a...

Prometheus基于Alertmanager实现钉钉告警

Prometheus基于Alertmanager实现钉钉告警

一、安装prometheus-webhook-dingtalk插件wget https://github.com/timonwong/prometheus-webhook-dingtalk/relea...

大数据监控系列(一)——Prometheus+Grafana监控概述

大数据监控系列(一)——Prometheus+Grafana监控概述

1 概述这是介绍Prometheushe和Grafana主要是为了监控大数据产品,数栈平台也是使用Prometheushe+Grafana作为底层大数据组件的监控,并且均有配置模板,导入即在Grafa...

Prometheus 监控 Nginx

Prometheus 监控 Nginx

一、Nginx_exporter安装下载链接:https://github.com/discordianfish/nginx_exporter下载nginx_exporter的docker镜像。doc...

正式发布 | 《云运维服务白皮书》开放下载!

正式发布 | 《云运维服务白皮书》开放下载!

在全球数字化变革的背景下,为适应数字经济环境下企业生存发展和市场变化的需要,企业进行主动的、系统性、整体性的数字化转型升级。大数据、云计算、人工智能、区块链等新一代信息通信技术为企业的数字化转型提供了...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。