Saltar al contenido principal
Version: 1.13.0

Recomendaciones MinIO

Recomendaciones para el Despliegue de MinIO

Este documento proporciona una guía con buenas prácticas para desplegar MinIO de forma segura y mantenible, haciendo énfasis en la habilitación del versionado, el uso responsable de etiquetas de imagen y la correcta gestión de logs.

Para los requisitos de hardware, se recomienda consultar la documentación oficial de MinIO.

Habilitar el versionado de objetos

El versionado permite conservar múltiples versiones de un mismo objeto, facilitando la recuperación ante errores o modificaciones accidentales.

Ejemplo de comandos:

mc alias set local http://localhost:9000 minioadmin minioadmin
mc version enable local/nombre-del-bucket

Recomendación: automatizar la habilitación de versionado para nuevos buckets mediante scripts de provisión o herramientas como Terraform.

Habilitar instancias de réplicas

La replicación en MinIO permite copiar objetos entre buckets ubicados en distintos clusters, con el objetivo de reducir el riesgo de pérdida total de datos ante fallas graves de infraestructura.

Esta práctica es clave para escenarios de disaster recovery, ya que protege frente a incidentes que pueden afectar completamente a un cluster (caídas de datacenter, corrupción masiva, errores operativos), garantizando la disponibilidad de una copia remota de los datos.

Buenas prácticas

  • Replicar únicamente los buckets críticos, evitando replicar datos innecesarios que incrementen costos y complejidad.
  • Asegurar la conectividad entre clusters, la latencia de red es un factor importante a considerar.
  • Garantizar el uptime de ambos extremos (origen y destino), ya que la replicación depende de la disponibilidad de ambos clusters.
  • Monitorear continuamente el estado de la replicación, verificando que no existan errores ni retrasos significativos.
  • Habilitar la replicación asincrónica en donde el cliente recibe una confirmación de Éxito en cuanto el objeto se escribe en el sitio local; esto no afecta el rendimiento de la aplicación. La replicación sincrónica en cambio el cliente no recibe la confirmación de Escritura Exitosa hasta que el objeto se haya guardado tanto en el sitio local como en el remoto.

Evitar el uso de la etiqueta latest

Usar latest puede provocar comportamientos inesperados debido a actualizaciones automáticas no controladas.

Ejemplo de uso recomendado:

image: minio/minio:RELEASE.2025-09-07T16-13-09Z-cpuv1

Consulta versiones estables en: https://hub.docker.com/r/minio/minio/tags

Habilitar logs correctamente

  1. Logs del servidor MinIO (stdout/stderr)
  • Redirigir salida estándar del contenedor o servicio a un sistema de logs centralizado (ej. ELK, Loki, Fluentd).
  • En Kubernetes, considerar usar un Sidecar o configuración de stdout/stderr.
  1. Habilitar audit logs (para operaciones S3)

MinIO permite auditar operaciones S3 en formato JSON. Ejemplo de configuración con webhook:

export MINIO_AUDIT_LOGGER_WEBHOOK_ENABLE="on"
export MINIO_AUDIT_LOGGER_WEBHOOK_ENDPOINT="http://logger-service.local/audit"

Alternativamente, para guardar en archivos locales:

export MINIO_AUDIT_LOGGER_FILE_ENABLE="on"
export MINIO_AUDIT_LOGGER_FILE_FILENAME="/var/log/minio/audit.log"
  • Configurar Minio para que emita las métricas en formato JSON.
  • Si es factible, habilitar el resguardo de eventos de los objetos:
MINIO_AUDIT_QUEUE_DIR="/opt/minio/audit/events"
MINIO_AUDIT_QUEUE_DIR_MAX_SIZE="10000"

Asegúrate de proteger los logs y aplicar políticas de rotación.

  1. Habilitar métricas con prometheus y dashboard de Grafana

Documentación oficial

Partiendo de una base hipotética en la que se cuenta con MinIO de forma dockerizada:

  1. Se requiere meterse al contenedor
docker exec -it <id_contenedor> bash
  1. Generar la configuración de Prometheus con el siguiente comando mc:
mc admin prometheus generate ALIAS ### Donde ALIAS equivale al nombre de su instancia MinIO

El mismo generará un output similar al siguiente:

scrape_configs:
- job_name: minio-job
bearer_token: TOKEN
metrics_path: /minio/v2/metrics/cluster
scheme: https
static_configs:
- targets: [minio.example.net]
  1. El output es la configuración que utilizará Prometheus para obtener las métricas de la instancia de MinIO. Si usted posee más de una instancia instalada (por ejemplo, para réplicas), deberá repetir los mismos pasos en cada instancia.

  2. Una vez agregada dicha configuración en el archivo config de Prometheus , se debe levantar el servicio de Prometheus de nuevo. se puede verificar que funcione entrando a Grafana > explorer > Prometheus.

Se recomienda implementar dashboards ya prearmados para interpretar las métricas de Prometheus mediante Grafana. Ejemplo de dashboard: https://grafana.com/grafana/dashboards/13502-minio-dashboard/