第十章:监控运维
学习 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 稳定运行的关键。下一章将学习安全配置。