Por qué un almacenamiento dedicado para tus métricas
Un Prometheus solo mezcla dos oficios: recoger las métricas de tus servicios cada quince segundos y almacenarlas. El primero es ligero; el segundo crece con cada serie y cada día de historial. Se acaba reduciendo la retención a unas semanas, y la pregunta «¿la latencia ya era tan alta el trimestre pasado?» queda sin respuesta.
VictoriaMetrics separa ambos. Prometheus — o Grafana Alloy, vmagent, Telegraf — sigue recogiendo y envía cada punto a VictoriaMetrics, que lo comprime y lo conserva. Como responde a la API de consulta de Prometheus, Grafana la consulta sin cambiar un solo panel.
Lo que aporta VictoriaMetrics
- Compatible con Prometheus — destino
remote_write, API de consulta de Prometheus, fuente de datos de Grafana sin plugin. - PromQL y MetricsQL — tus consultas PromQL funcionan tal cual; MetricsQL añade funciones más prácticas.
- Almacenamiento compacto — fuerte compresión de series, varios meses de retención en un disco modesto.
- Multiprotocolo — InfluxDB line protocol, Graphite, OpenTSDB, OpenTelemetry, importación CSV y JSON.
- Interfaz vmui — exploración de series, gráficos, análisis de cardinalidad y consultas más lentas.
- Un único binario — un contenedor, ninguna dependencia externa, unas decenas de megabytes de RAM en reposo.
VictoriaMetrics frente al almacenamiento local de Prometheus
Desplace la tabla
| VictoriaMetrics | Prometheus solo | |
|---|---|---|
| Retención habitual | De varios meses a varios años | Quince días por defecto |
| Centralizar varios servidores | Sí, por remote_write | No, una instancia por ámbito |
| Lenguaje de consulta | PromQL y MetricsQL | PromQL |
| Formatos de ingesta | Prometheus, InfluxDB, Graphite, OpenTSDB, OTLP | Recogida de Prometheus |
| Grafana | Fuente de datos Prometheus | Fuente de datos Prometheus |
| Recogida de objetivos | Posible, pero se deja a Prometheus o vmagent | Sí, es su función |
Requisitos previos
Un VPS Ubuntu 24.04 con 1 GB de RAM basta para empezar; prevé 2 GB y más disco si centralizas muchos servidores. Necesitas Docker con el plugin Compose, y un nombre de dominio que apunte al VPS, con nginx y un certificado HTTPS: tus servidores enviarán allí sus métricas y Grafana la consultará, así que la dirección debe ser estable y cifrada.
Idealmente, instala VictoriaMetrics en una máquina distinta de los servidores que vigila: si cae con ellos, pierdes justamente los datos que explican la avería.
Instalar VictoriaMetrics con Docker Compose
Preparar el directorio y la contraseña
Crea el directorio de la aplicación y un archivo
.envcon la contraseña del usuarioadmin.mkdir -p /opt/victoriametrics && cd /opt/victoriametrics echo "ADMIN_PASSWORD=$(openssl rand -hex 16)" > .env chmod 600 .envEscribir el docker-compose.yml
El puerto solo se publica en la interfaz local: solo nginx accede a él. Las dos opciones
-httpAuthprotegen todos los puntos de acceso — interfaz, consultas e ingesta.-retentionPeriod=12conserva doce meses de datos.services: victoriametrics: image: victoriametrics/victoria-metrics:v1.155.0 restart: unless-stopped ports: - "127.0.0.1:8428:8428" command: - -storageDataPath=/storage - -retentionPeriod=12 - -httpAuth.username=admin - -httpAuth.password=${ADMIN_PASSWORD} - -selfScrapeInterval=30s volumes: - victoriametrics-data:/storage volumes: victoriametrics-data: {}Arrancar el contenedor
El arranque tarda menos de un segundo. El registro debe mostrar «started VictoriaMetrics» y después el inicio de la recogida de sus propias métricas.
docker compose up -d docker compose logs --tail 20Publicar en HTTPS con nginx
En el vhost de tu dominio (certificado obtenido con certbot), redirige al puerto local. Aumenta
client_max_body_size: los lotes deremote_writesuperan rápido el límite por defecto.location / { proxy_pass http://127.0.0.1:8428; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; client_max_body_size 64m; }
Sin contraseña, la base queda abierta en escritura
Sin las opciones -httpAuth, cualquiera que conozca la dirección puede leer todas tus métricas y escribir métricas falsas, o incluso borrar series por la API de administración. Mantén la autenticación activa y no publiques nunca el puerto 8428 directamente en la IP pública: pasa siempre por el proxy inverso HTTPS.
Enviar las métricas de Prometheus
En cada servidor que ejecuta Prometheus, añade un bloque remote_write a prometheus.yml y recarga Prometheus. Sigue recogiendo como antes y duplica cada punto hacia VictoriaMetrics.
remote_write:
- url: https://metrics.example.com/api/v1/write
basic_auth:
username: admin
password: "<ADMIN_PASSWORD>"Comprueba después que los datos llegan: la serie up de tus objetivos debe responder. Los puntos recientes aparecen tras unos treinta segundos, un retraso normal que VictoriaMetrics aplica a las consultas instantáneas.
curl -u admin:<ADMIN_PASSWORD> \
'https://metrics.example.com/api/v1/query?query=up'Consultar VictoriaMetrics desde Grafana
En Grafana, añade una fuente de datos de tipo Prometheus con la URL https://metrics.example.com, marca Basic auth e introduce el usuario admin y la contraseña. Tus paneles existentes — Node Exporter Full, por ejemplo — funcionan sin cambios, sobre toda la profundidad de historial conservada.
Para explorar sin Grafana, abre https://metrics.example.com/vmui: la interfaz integrada grafica las consultas, lista las series y muestra, en la pestaña de cardinalidad, qué métricas cuestan más almacenamiento.
Retención, disco y copia de seguridad
La retención se ajusta con -retentionPeriod: un número solo cuenta meses, y los sufijos d, w o y cuentan días, semanas o años. El espacio ocupado depende sobre todo del número de series activas y de la frecuencia de recogida: mídelo tras una semana (du -sh sobre el volumen) en lugar de estimarlo. Para la copia de seguridad, la herramienta oficial vmbackup toma instantáneas coherentes sin detener la base; si no, detén el contenedor antes de copiar el volumen.
Enviar métricas sin Prometheus
Prometheus no es obligatorio. VictoriaMetrics acepta directamente el formato de texto de Prometheus, el line protocol de InfluxDB, Graphite, OpenTSDB y OpenTelemetry. Una aplicación puede, por tanto, enviar sus propios contadores con una simple llamada HTTP — útil para una métrica de negocio, un script de copia de seguridad o una tarea programada que no dura lo suficiente para ser recogida.
curl -u admin:<ADMIN_PASSWORD> \
-d 'orders_total{shop="casa"} 1284' \
https://metrics.example.com/api/v1/import/prometheusSi ya usas Telegraf, apunta su salida InfluxDB a https://metrics.example.com con las mismas credenciales: VictoriaMetrics se presenta como una base InfluxDB para la escritura. Para recoger objetivos sin instalar Prometheus en cada máquina, el agente ligero vmagent lee el mismo scrape_configs que Prometheus y lo envía todo por remote_write; guarda los puntos en un búfer en disco si VictoriaMetrics no está disponible momentáneamente.
Controlar la cardinalidad
El coste de una base de series temporales no depende del número de puntos, sino del número de series: cada combinación única de nombre de métrica y etiquetas crea una. Una etiqueta que lleva un identificador de usuario, una dirección IP o una URL completa multiplica las series por miles, y es ella la que llena la memoria y el disco — con VictoriaMetrics como con Prometheus.
La pestaña Cardinality de vmui lista las métricas y etiquetas que producen más series. Consúltala después de conectar un servicio nuevo: una etiqueta con valores sin límite se corrige en el origen, en la aplicación o con una regla metric_relabel_configs del lado de Prometheus, antes de que llene meses de almacenamiento.
Actualizar VictoriaMetrics
El proyecto publica una nueva versión varias veces al mes, con notas de versión detalladas. El formato de almacenamiento sigue siendo compatible entre versiones: actualizar consiste en cambiar el número de la imagen en docker-compose.yml y reiniciar el contenedor. El volumen de datos se conserva, y el breve corte durante el reinicio lo absorbe el búfer de Prometheus o de vmagent, que reenvía los puntos pendientes.
cd /opt/victoriametrics
docker compose pull
docker compose up -dInstalación en un clic desde el Marketplace de ServOrbit
El Marketplace de ServOrbit instala VictoriaMetrics en tu VPS sin línea de comandos: despliega el contenedor oficial, genera la contraseña del usuario admin, activa la autenticación en todos los puntos de acceso y publica la interfaz en HTTPS en un subdominio de tu dominio o en el subdominio gratuito del VPS. La contraseña aparece en tu área de cliente; solo queda añadir el bloque remote_write a tus servidores y la fuente de datos en Grafana.