第十章:监控运维

学习 MinIO 的监控运维,包括日志管理、健康检查、性能指标和告警配置。

最后更新: 2024-01-15
页面目录

第十章:监控运维

10.1 日志管理

10.1.1 日志类型

日志类型 说明 存储位置
Server Logs MinIO 服务日志 标准输出/文件
Audit Logs 操作审计日志 Webhook
Access Logs 访问日志 配置输出

10.1.2 配置日志级别

# 设置日志级别
mc admin config set myminio/ \
  logger_webhook=endpoint=http://logger:8080 \
  logger_webhook/auth_token=TOKEN

# 查看当前日志配置
mc admin config get myminio/ logger_webhook

# 支持的日志级别
# fatal, critical, error, warn, info, debug, v

10.1.3 查看日志

# 查看 MinIO 日志
mc admin logs myminio/

# 查看特定节点日志
mc admin logs myminio/ --nodes node1

# 导出日志到文件
mc admin logs myminio/ > minio.log

# 实时跟踪日志
mc admin logs myminio/ --follow

10.2 健康检查

10.2.1 健康检查 API

# 简单健康检查
curl http://localhost:9000/minio/health/live

# 就绪检查
curl http://localhost:9000/minio/health/ready

# 详细健康检查
curl http://localhost:9000/minio/health/large

# 响应示例
# OK (表示服务正常)

10.2.2 集群信息

# 查看集群信息
mc admin info myminio/

# 示例输出
# ●  MinIO
#    Uptime   : 7 days, 15 hours, 30 minutes
#    Version  : RELEASE.2024-01-01T00-00-00Z
#    Network  : 4/4 OK
#    Drives   : 16/16 OK
#    Pool     : 4 nodes, 4 drives each
#
# Storage Under Network Information:
#    Used Space: 10.5TB
#    Backend type: erasure

10.2.3 磁盘检查

# 检查磁盘状态
mc admin disk health myminio/

# 本地磁盘检查
miniowach /data/disk1

10.3 性能指标

10.3.1 Prometheus 指标

# 启用 Prometheus 端点
mc admin config set myminio/ \
  metrics_instrumentation=on

# Prometheus 抓取配置
curl http://localhost:9000/minio/v2/metrics/cluster

# Prometheus 指标示例
# minio_cluster_nodes_online_total
# minio_cluster_disks_online_total
# minio_s3_requests_total
# minio_s3_requests_errors_total
# minio_node_disk_storage_used_bytes
# minio_node_disk_storage_available_bytes

10.3.2 Prometheus 配置

# prometheus.yml
scrape_configs:
  - job_name: 'minio'
    static_configs:
      - targets: ['minio:9000']
    metrics_path: /minio/v2/metrics/cluster
    scrape_interval: 15s

10.3.3 关键指标

指标 说明
minio_cluster_nodes_online 在线节点数
minio_s3_requests_total S3 请求总数
minio_s3_requests_errors S3 请求错误数
minio_node_disk_storage_used 已用存储
minio_node_disk_storage_free 可用存储
minio_s3_requests_duration_seconds 请求延迟

10.4 告警配置

10.4.1 Watcher 告警

# 配置告警规则
mc admin config set myminio/ \
  notify_webhook.endpoint=http://alertmanager:9093 \
  notify_webhook.auth_token=Bearer_TOKEN

# 告警条件示例
# - 节点离线
# - 磁盘空间不足
# - 请求错误率高

10.4.2 AlertManager 配置

# alertmanager.yml
global:
  smtp_smarthost: 'smtp.example.com:587'
  smtp_from: 'minio-alerts@example.com'

route:
  group_by: ['alertname']
  receiver: 'email'

receivers:
  - name: 'email'
    email_configs:
      - to: 'admin@example.com'

10.4.3 自定义告警脚本

#!/bin/bash
# alert-script.sh

ALERT_EMAIL="admin@example.com"
THRESHOLD=90

# 检查磁盘使用率
USAGE=$(mc admin info myminio/ | grep -oP 'Used Space: \K[\d.]+')

if [ $(echo "$USAGE > $THRESHOLD" | bc) -eq 1 ]; then
  echo "Warning: MinIO disk usage at ${USAGE}%!" | \
    mail -s "MinIO Alert" $ALERT_EMAIL
fi

10.5 性能监控

10.5.1 吞吐量监控

# 查看 I/O 统计
mc admin ioinfo myminio/

# 查看带宽使用
mc admin bandwidth myminio/

# 列出请求统计
mc admin stats myminio/

10.5.2 延迟监控

# 查看请求延迟
curl http://localhost:9000/minio/v2/metrics/resource

# 延迟百分位
# P50, P90, P99 延迟

10.5.3 性能优化建议

监控指标 优化方向
CPU 使用率高 增加节点,优化负载
磁盘 I/O 高 使用 SSD,优化分片
网络瓶颈 升级网络,优化压缩
请求队列长 增加并发,优化缓存

10.6 运维命令

10.6.1 服务管理

# 重启服务
mc admin service restart myminio/

# 停止服务
mc admin service stop myminio/

# 重新加载配置
mc admin service reload myminio/

10.6.2 节点管理

# 查看所有节点
mc admin server list myminio/

# 查看节点信息
mc admin server info myminio/node1

# 更新节点配置
mc admin server update myminio/node1

10.6.3 更新升级

# 查看更新信息
mc admin update myminio/

# 执行更新
mc admin update myminio/

# 更新特定节点
mc admin update myminio/node1

10.7 资源使用

10.7.1 存储桶使用

# 查看存储桶使用情况
mc admin bucket info myminio/mybucket

# 列出所有存储桶使用
mc admin info myminio/

# 磁盘使用分布
mc admin disk usage myminio/

10.7.2 用户配额

# 查看用户配额
mc admin user list myminio/

# 查看存储桶配额
mc admin bucket quota myminio/mybucket

10.8 诊断工具

10.8.1 性能测试

# 使用 MinIO Erasure Code Calculator
# https://min.io/resources/calculator

# 配置示例
# 节点数: 4
# 磁盘/节点: 4
# 纠删码: 4+4
# 总存储: 16 磁盘

10.8.2 网络测试

# 测试 API 延迟
curl -w "@curl-format.txt" -o /dev/null -s http://localhost:9000/mybucket/testfile

# curl-format.txt 内容:
# time_namelookup: %{time_namelookup}\n
# time_connect: %{time_connect}\n
# time_starttransfer: %{time_starttransfer}\n
# time_total: %{time_total}\n

10.8.3 trace 工具

# 跟踪请求
mc admin trace myminio/

# 跟踪特定操作
mc admin trace myminio/ --storage --api s3.GetObject

# 保存跟踪日志
mc admin trace myminio/ --output trace.log

10.9 备份验证

10.9.1 数据完整性检查

# 检查数据完整性
mc admin bucket quota myminio/mybucket

# 验证对象
mc ls --verify myminio/mybucket/

10.9.2 恢复演练

# 定期执行恢复演练
# 1. 备份当前数据
mc mirror myminio/production /backup/production/

# 2. 执行恢复
mc mirror /backup/production myminio/restored/

# 3. 验证数据
mc diff myminio/production myminio/restored/

10.10 总结

本章介绍了 MinIO 的监控运维方法,包括日志管理、健康检查、性能指标和告警配置。完善的监控体系是保障 MinIO 稳定运行的关键。下一章将学习安全配置。