Guía de despliegue

VictoriaMetrics en un VPS: almacenar métricas de Prometheus

Desplegar en un VPS Cloud →

Tutorial

VictoriaMetrics en un VPS: almacenar métricas de Prometheus

Autoalojamiento7 min de lectura4 pasos

Prometheus es excelente recogiendo métricas y mucho menos conservándolas. Por defecto guarda quince días de historial, y ampliarlo hace crecer el disco y la memoria de la propia máquina que monitoriza. VictoriaMetrics es una base de datos de series temporales open source (licencia Apache-2.0) que toma el relevo: recibe las métricas por `remote_write`, las comprime y las conserva durante meses, respondiendo a la misma API de consulta que Prometheus. Esta guía la instala en un contenedor Docker en un VPS, la protege con contraseña, la coloca detrás de un proxy inverso HTTPS y le conecta Prometheus y Grafana.

Contenido· Por qué un almacenamiento dedicado para tus métricas1/13
  1. 01Por qué un almacenamiento dedicado para tus métricas
  2. 02Lo que aporta VictoriaMetrics
  3. 03VictoriaMetrics frente al almacenamiento local de Prometheus
  4. 04Requisitos previos
  5. 05Instalar VictoriaMetrics con Docker Compose
  6. 06Sin contraseña, la base queda abierta en escritura
  7. 07Enviar las métricas de Prometheus
  8. 08Consultar VictoriaMetrics desde Grafana
  9. 09Retención, disco y copia de seguridad
  10. 10Enviar métricas sin Prometheus
  11. 11Controlar la cardinalidad
  12. 12Actualizar VictoriaMetrics
  13. 13Instalación en un clic desde el Marketplace de ServOrbit

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

VictoriaMetricsPrometheus solo
Retención habitualDe varios meses a varios añosQuince días por defecto
Centralizar varios servidoresSí, por remote_writeNo, una instancia por ámbito
Lenguaje de consultaPromQL y MetricsQLPromQL
Formatos de ingestaPrometheus, InfluxDB, Graphite, OpenTSDB, OTLPRecogida de Prometheus
GrafanaFuente de datos PrometheusFuente de datos Prometheus
Recogida de objetivosPosible, pero se deja a Prometheus o vmagentSí, 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

  1. Preparar el directorio y la contraseña

    Crea el directorio de la aplicación y un archivo .env con la contraseña del usuario admin.

    mkdir -p /opt/victoriametrics && cd /opt/victoriametrics
    echo "ADMIN_PASSWORD=$(openssl rand -hex 16)" > .env
    chmod 600 .env
  2. Escribir el docker-compose.yml

    El puerto solo se publica en la interfaz local: solo nginx accede a él. Las dos opciones -httpAuth protegen todos los puntos de acceso — interfaz, consultas e ingesta. -retentionPeriod=12 conserva 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: {}
  3. 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 20
  4. Publicar 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 de remote_write superan 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/prometheus

Si 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 -d

Instalació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.

Tus métricas a largo plazo, en tu VPS

Un VPS ServOrbit Ubuntu 24.04 con 1 GB de RAM basta para arrancar VictoriaMetrics. Instalación en un clic desde el Marketplace, HTTPS en tu dominio o en el subdominio gratuito del VPS, contraseña generada para ti.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva