【minio监控平台】走进minio,了解minio,docker-compose部署minio文件系统+prothmeus+grafana平台监控系统状态(少走弯路版)

目录

 一、后续更新方向

二、文件系统的搭建

(1)何为MINIO,它有什么作用?

(2)docker-compose部署minio

(3)二进制文件部署minio

(4)整理文件结构,编写docker-compose

        1.创建如下文件目录:

      2.获取bearer_token方法:

三、Prometheus监控minio服务

 1.Prometheus工作原理

 2.Prometheus验证Targets

四、grafana实现系统监控

五、最终效果与总结

1.最终效果

2.总结

六、附录:grafana-panel.json(有点长)


 一、后续更新方向

        各位老师好!这是我第一次写博客,在最近的工作过程中碰到了minio文件服务器的部署问题,想记录一下解决问题的过程。本系统采用minio+prothmeus+grafana三个服务去实现文件系统功能以及系统监控。在后续过程中会更新一些运维、开发心得以及工作中碰到的问题以及工作岗位上的一些问题,有感兴趣的小伙伴可以留下一个关注!

二、文件系统的搭建

(1)何为MINIO,它有什么作用?

        官方解释:MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。

        在我看来,随着目前技术的进步,系统体量越来越大,一些企业级现场会对重要文件进行存储,例如:国家有硬性要求的文件需要有保存时限3年、5年等,这种大体量文件,仅仅用硬盘已经无法满足需求。这时可以通过服务器将文件存储到服务器之中,而MINIO文件管理系统可以实现对服务器中文件进行管理和传输,拥有成型的UI界面,方便我们进行企业级文件管理。

        同时MINIO是一个开源项目,支持市面主流的开发语言并且可以通过SDK快速集成快速集成使用。

(2)docker-compose部署minio

       在这里docker、以及docker-comopse的安装过程我就不过多赘述了,教程很多大家可以自行寻找。

[root@MyCentOS7 ~]# docker -v
Docker version 20.10.15, build fd82621
[root@MyCentOS7 ~]# docker-compose -v
docker-compose version 1.25.5, build 8a1c60f6

        当我们安装好docker以及docker-compose后,下一步准备minio的镜像。

       1.从docker镜像仓库中拉取minio镜像(要确保服务器可以通外网)

[root@MyCentOS7 ~]# docker pull minio/minio
Using default tag: latest
latest: Pulling from minio/minio
ea29d36b883e: Pull complete
5946b96fb1f6: Pull complete
dd3ffe05e053: Pull complete
5e11981e9c8c: Pull complete
e95d9be0e730: Pull complete
85804fd90cc0: Pull complete
55e2b13e3fba: Pull complete
Digest: sha256:78eba29be5c2539b0961dee68b44334d4eda4c9bd7cb1f43f4e07c2ffb609cff
Status: Downloaded newer image for minio/minio:latest
docker.io/minio/minio:latest
[root@MyCentOS7 ~]#

         2.获取prothmeus、grafana镜像方法同minio

docker pull prom/node-exporter
docker pull prom/prometheus
docker pull grafana/grafana

 注意:这里prothmeus是由两个服务组成prometheus和node-exporter组成,所以此处有三个镜像需要下载!

(3)二进制文件部署minio

        1.可以使用wget下载minio二进制文件和mc客户端

wget https://dl.minio.org.cn/server/minio/release/linux-amd64/minio
chmod +x minio
MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=password ./minio server /mnt/data --console-address ":9001"
wget https://dl.minio.org.cn/client/mc/release/linux-amd64/mc
chmod +x mc
mc alias set myminio/ http://MINIO-SERVER MYUSER MYPASSWORD

         二进制文件的方式在这里并不推荐,因为不止涉及minio,还有prothmeus、grafana。此方法不便于服务的管理与启停。

(4)整理文件结构,编写docker-compose

        1.创建如下文件目录:

         grafana-storage文件如下:(将grafana镜像中/var/lib/grafana/  做好映射)

注意:再此文件下所有文件夹以及文件都需要赋予完整权限 ,否则会出现grafana服务起不来的问题,方法如下:

#777是目录或文件最大权限,后跟路径名或文件名
chmod 777 /root/minio/install_Data/node1/grafana-storage/

         prothmeus文件夹下:(同样会在docker-compose做映射)

        prothmeus.yml如下: 

global:
  scrape_interval: 30s
  scrape_timeout: 10s
# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets: 
      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

scrape_configs:
  - job_name: minio-job
    bearer_token: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJwcm9tZXRoZXVzIiwic3ViIjoiYWRtaW4iLCJleHAiOjQ4NjI2ODQ4NzV9.yJAmy_xjRBQAysSsQ_0ixKnYslO0yA-NHa3IJ1rx83oo2wJB21ZdVPisdLjex2YDdemPdXX_r41NM9jvk12SoQ
    metrics_path:  /minio/prometheus/metrics
    scheme: http
    static_configs:
      - targets: ['192.168.1.156:9000']
 

         在这里需要注意的是:

        1.bearer_token:是通过minio客户端 mc 获取的,用于prothmeus去监听minio的权限问题。

        2.metrics_path:采集metrics样本的路径

        3. static_configs:  - targets: 用于设置prothmeus监听的ip以及端口号,这里指minio服务的IP及PORT。

      2.获取bearer_token方法:

http://dl.minio.org.cn/client/mc/release/linux-amd64/mc

        下载mc客户端二进制文件(上文下载过此处不用下载),执行命令赋予权限,即安装成功。

chmod +x mc
./mc --help

        bearer_token获取方式:

mc --insecure alias set MINIO http://localhost:9000 你的账号 你的密码
mc admin prometheus generate MINIO

         全都配置好后,我们采用docker-compose 的方式启动服务

        docker-compose如下:

version: '3'

services:
  minio:
    image: 10.142.0.203:8082/minio/minio:latest
    hostname: "minio"
    ports:
      - 9000:9000 # api 端口
      - 9001:9001 # 控制台端口
    environment:
      - MINIO_ACCESS_KEY=admin  
      - MINIO_SECRET_KEY=12345678 
      - MINIO_PROMETHEUS_AUTH_TYPE=public
      - MINIO_PROMETHEUS_URL=192.168.1.156:9090
    volumes:
      - /root/minio-data/minio-disk-1:/data1
      - /root/minio-data/minio-disk-2:/data2    
    command: server --console-address ':9001' /data  #指定容器中的目录 /data
    privileged: true
    restart: always
    
  prometheus:
    image: 10.142.0.203:8082/prom/prometheus:latest
    restart: always 
    ports:
      - 9090:9090
    volumes:
      - ./prometheus:/etc/minio/prometheus
    command: --web.enable-lifecycle  --config.file=/etc/minio/prometheus/prometheus.yml
    depends_on:
      - minio


  grafana:
    image: 10.142.0.203:8082/grafana/grafana:latest
    restart: always
    ports:
      - 3000:3000
    volumes:
      -  ./grafana-storage:/var/lib/grafana
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=12345678
    depends_on:
      - prometheus


  nodeexport:
    image: 10.142.0.203:8082/prom/node-exporter:latest
    restart: always
    ports:
      - 9100:9100

        启动容器并查看容器状态 :

#-d 让容器在后台启动
docker-compose up -d
docker ps -a

         确保容器起来后,服务部署完成!下一步进行服务验证:

        登录http://master_ip:9000 验证MINIO

        系统操作很简单,MINIO也是支持S3协议的一个文件系统,在新创建一个桶后,可以实现在桶中对文件进行存储增删改查等操作。

        首先创建一个桶:

         创建桶之后,就可以实现文件上传、下载、删除等操作。

三、Prometheus监控minio服务

 1.Prometheus工作原理

        Prometheus的基本原理是通过HTTP周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口并符合Prometheus定义的数据格式,就可以介入Prometheus监控。

        现在回过头来再看Prometheus中有一个node-exporter服务,广义上讲所有可以向Prometheus提供监控样本数据的程序都可以被称为一个Exporter。而Exporter的一个实例称为target,如下所示,Prometheus通过轮询的方式定期从这些target中获取样本数据。

        通俗来讲,Prometheus会通过node-exporter去获取你的主机数据,从而监控的服务器各项数据。我们可以看下,访问node-exporter端口:

 2.Prometheus验证Targets

登录 http://master_ip:9090 查看

        如果看到我们minio的端口,state为“up”就监听成功了,Prometheus配置完成。

四、grafana实现系统监控

    通过grafana对Prometheus监控数据进行显示做成仪表盘,这是我们最后一步也是最简单一部,

登录http://master_ip:3000 账号: admin 密码 12345678   步骤如下:

 

         通过不同的json实现仪表盘的布局是不一样的,grafana会通过json生成不同的仪表盘。

五、最终效果与总结

1.最终效果

2.总结

        对于整体的部署流程来说,是比较简单的,但是过程中有一些需要注意的地方,是非常容易踩坑的。对于这种运维部署来说,不像代码而言有明确的错误提示,部署的过程中有一点小失误就会导致服务挂掉,而且很难找到源头,需要顺藤摸瓜,过程算是非常慢的。本文希望可以帮助需要的人,哪怕是一个点也好。

        对于MINIO呢,和其他支持S3协议的文件系统大同小异,可以通过.Net,Java,Python对接口进行重写,一般可以自己重新设计个中文前端页面,覆写文件系统使其看起来更加简洁。该系统适合于企业级应用的文件存储,或者用于大学毕业生做毕业设计也是个不错的选择!欢迎有问题的小伙伴在评论区,前来讨论。

六、附录:grafana-panel.json(有点长)

{
  "annotations": {
    "list": [
      {
        "builtIn": 1,
        "datasource": {
          "type": "datasource",
          "uid": "grafana"
        },
        "enable": true,
        "hide": true,
        "iconColor": "rgba(0, 211, 255, 1)",
        "name": "Annotations & Alerts",
        "target": {
          "limit": 100,
          "matchAny": false,
          "tags": [],
          "type": "dashboard"
        },
        "type": "dashboard"
      }
    ]
  },
  "description": "MinIO dashboard - https://min.io/",
  "editable": true,
  "fiscalYearStartMonth": 0,
  "gnetId": 12563,
  "graphTooltip": 0,
  "id": 20,
  "iteration": 1709271530311,
  "links": [
    {
      "icon": "external link",
      "includeVars": true,
      "keepTime": true,
      "tags": [
        "minio"
      ],
      "type": "dashboards"
    }
  ],
  "liveNow": false,
  "panels": [
    {
      "datasource": "${DS_PROMETHEUS}",
      "description": "Minio is a high performance distributed object storage server, designed for large-scale private cloud infrastructure. For more information, check out the docs.",
      "gridPos": {
        "h": 3,
        "w": 5,
        "x": 0,
        "y": 0
      },
      "id": 8,
      "links": [],
      "options": {
        "content": "<img src=\"https://min.io/resources/img/logo/MINIO_wordmark.png\" style=\"height: 55px;\"></img>",
        "mode": "html"
      },
      "pluginVersion": "8.5.0",
      "transparent": true,
      "type": "text"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "L9YN4_oIz"
      },
      "description": "Total number of disks for current MinIO server instances",
      "fieldConfig": {
        "defaults": {
          "color": {
            "fixedColor": "rgb(31, 120, 193)",
            "mode": "fixed"
          },
          "mappings": [
            {
              "options": {
                "match": "null",
                "result": {
                  &
  • 22
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未来之星姜大帅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值