Tutorial

SigNoz en VPS: APM open source en 15 minutos

Seguridad y monitorización7 min de lectura6 pasos

Datadog factura de media 15 $ por host y por mes, a los que se suman cargos por métrica que se disparan en cuanto su tráfico crece. SigNoz, plataforma open source construida sobre ClickHouse y OpenTelemetry, ofrece los tres pilares de la observabilidad — trazas, métricas, logs — en su propio VPS y sin suscripción. En quince minutos cronometrados, dispone de un APM completo, controlado y soberano.

Contenido· ¿Por qué sustituir Datadog o New Relic por SigNoz?1/10
  1. 01¿Por qué sustituir Datadog o New Relic por SigNoz?
  2. 02Lo que SigNoz le aporta
  3. 03Requisitos previos antes de empezar
  4. 04Instalación de SigNoz con Foundry CLI
  5. 05Instrumentar su aplicación con el SDK de OpenTelemetry
  6. 06Crear dashboards y alertas
  7. 07Cuidado con los OOM kills de ClickHouse
  8. 08SigNoz vs Datadog vs Grafana Cloud
  9. 09Resolver los problemas más habituales
  10. 10Consejo: planifique la retención de los datos de ClickHouse

¿Por qué sustituir Datadog o New Relic por SigNoz?

Las herramientas SaaS de observabilidad tienen un modelo de precios temible: gratis hasta un puñado de hosts y, después, la factura se dispara con cada servicio añadido. Para una agencia web que gestiona diez proyectos de clientes o un desarrollador independiente que escala su SaaS, la cuenta mensual supera rápidamente los 200 a 500 € sin que el valor añadido sea proporcional.

SigNoz cambia las reglas del juego. Es una plataforma de observabilidad open source (licencia Apache 2.0) que se apoya en ClickHouse para el almacenamiento de alto rendimiento de las trazas y las métricas, y en el protocolo OpenTelemetry para la instrumentación. Sus datos se quedan en su casa, usted controla la retención y solo paga el VPS que hace funcionar la stack.

Lo que SigNoz le aporta

  • Trazas distribuidas: visualice el recorrido completo de una petición HTTP a través de sus microservicios, con los spans, las duraciones y los errores en cada etapa.
  • Métricas compatibles con Prometheus: importe sus dashboards existentes o cree otros nuevos desde la interfaz de SigNoz.
  • Logs centralizados: recopile y correlacione los logs estructurados de todas sus aplicaciones en una interfaz unificada.
  • Alertas configurables: defina umbrales sobre cualquier métrica y reciba notificaciones por Slack, PagerDuty o webhook.
  • Dashboards personalizables: cree vistas de negocio o técnicas en unos clics, sin necesidad obligatoria de LoQL ni PromQL.
  • Interfaz moderna: UI React responsive accesible en el puerto 8080 de su VPS, sin agente propietario del lado del cliente.

Requisitos previos antes de empezar

SigNoz se apoya en ClickHouse, un motor de base de datos columnar muy exigente en memoria. El mínimo absoluto recomendado es 4 GB de RAM — por debajo, el OOM killer del kernel mata ClickHouse antes incluso de que se cargue la UI. Para un uso en producción con varias aplicaciones instrumentadas, apunte a 8 GB.

Esta es la lista completa de requisitos previos:
- Un VPS con Ubuntu 22.04 o Debian 12.
- Docker Engine ≥ 24 y Docker Compose V2 instalados.
- El puerto 8080 abierto en su cortafuegos (UI de SigNoz).
- Los puertos 4317 (OTLP/gRPC) y 4318 (OTLP/HTTP) abiertos para recibir las trazas.
- Un acceso root o sudo en el VPS.
- Al menos 20 GB de espacio libre en disco para ClickHouse y sus archivos de datos.

Instalación de SigNoz con Foundry CLI

  1. Paso 1 — Instalar Docker en su VPS

    Si Docker aún no está presente, instálelo con el script oficial:

    curl -fsSL https://get.docker.com | sh
    systemctl enable --now docker
    docker --version

    Compruebe que el comando docker compose (V2, sin guion) funciona:

    docker compose version
  2. Paso 2 — Instalar Foundry CLI (foundryctl)

    Desde la versión v0.112.0, SigNoz adopta el Foundry CLI como método de despliegue oficial. El antiguo install.sh basado en docker-compose está obsoleto.

    curl -L https://get.foundry.so/foundryctl/latest | bash
    export PATH="$HOME/.foundry/bin:$PATH"
    foundryctl --version

    Añada el export PATH en su ~/.bashrc o ~/.profile para hacerlo permanente.

  3. Paso 3 — Crear el archivo casting.yaml

    Foundry CLI utiliza un archivo declarativo casting.yaml para definir la stack SigNoz:

    mkdir -p /opt/signoz && cd /opt/signoz
    
    cat > casting.yaml << 'EOF'
    apiVersion: foundry.so/v1
    kind: Casting
    metadata:
      name: signoz
    spec:
      release: stable
      components:
        - name: signoz
          enabled: true
        - name: clickhouse
          enabled: true
    EOF
  4. Paso 4 — Lanzar el despliegue

    Basta un solo comando para arrancar toda la stack:

    foundryctl cast -f casting.yaml

    Foundry CLI descarga las imágenes Docker, configura los volúmenes persistentes y arranca los contenedores en el orden correcto. El arranque completo tarda entre 2 y 3 minutos. Siga los logs en tiempo real:

    docker compose -f /opt/signoz/docker-compose.yaml logs -f
  5. Paso 5 — Comprobar que SigNoz está operativo

    Espere a que todos los contenedores estén en estado healthy:

    docker compose -f /opt/signoz/docker-compose.yaml ps

    Abra después su navegador en http://<IP_VPS>:8080. Cree su cuenta de administrador en la primera conexión. Nota: el antiguo puerto 3301 mencionado en tutoriales de la comunidad está obsoleto — el puerto actual es el 8080.

  6. Paso 6 — Asegurar el acceso con un reverse proxy

    No deje el puerto 8080 expuesto directamente en producción. Coloque Nginx como reverse proxy con un certificado TLS:

    apt install -y nginx certbot python3-certbot-nginx
    
    cat > /etc/nginx/sites-available/signoz << 'EOF'
    server {
        server_name signoz.votredomaine.com;
        location / {
            proxy_pass http://127.0.0.1:8080;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
    EOF
    
    ln -s /etc/nginx/sites-available/signoz /etc/nginx/sites-enabled/
    certbot --nginx -d signoz.votredomaine.com
    nginx -t && systemctl reload nginx

    Cierre después el puerto 8080 en su cortafuegos.

Instrumentar su aplicación con el SDK de OpenTelemetry

SigNoz recibe las trazas mediante el protocolo OTLP. Así es como se conecta una aplicación Node.js y una aplicación Python.

Node.js (Express):

npm install @opentelemetry/sdk-node @opentelemetry/auto-instrumentations-node

Cree un archivo tracing.js al arrancar su app:

const { NodeSDK } = require('@opentelemetry/sdk-node');
const { getNodeAutoInstrumentations } = require('@opentelemetry/auto-instrumentations-node');
const sdk = new NodeSDK({ instrumentations: [getNodeAutoInstrumentations()] });
sdk.start();

Arranque su app con la variable de entorno apuntando a su VPS:

OTEL_EXPORTER_OTLP_ENDPOINT="http://<IP_VPS>:4318" \
OTEL_SERVICE_NAME="mon-api" \
node -r ./tracing.js app.js

Python (FastAPI/Flask):

pip install opentelemetry-distro opentelemetry-exporter-otlp
opentelemetry-bootstrap -a install

OTEL_EXPORTER_OTLP_ENDPOINT="http://<IP_VPS>:4318" \
OTEL_SERVICE_NAME="mon-service-python" \
opentelemetry-instrument uvicorn main:app

En ambos casos, las trazas aparecen en la interfaz de SigNoz bajo Services en los segundos siguientes a la primera llamada HTTP.

Crear dashboards y alertas

Una vez instrumentadas sus aplicaciones, SigNoz rellena automáticamente la vista Services con la latencia P50/P99, la tasa de error y el rendimiento de cada servicio.

Crear un dashboard personalizado:
1. Vaya a Dashboards → New Dashboard.
2. Añada un panel de tipo Time Series y seleccione una métrica Prometheus.
3. Aplique filtros por servicio, entorno o endpoint.

Configurar una alerta sobre la latencia P99:
1. Vaya a Alerts → New Alert Rule.
2. Elija el tipo Metric Based Alert.
3. Introduzca la condición: p99(signoz_latency_bucket{service_name="mon-api"}) > 500 (alerta si P99 > 500 ms).
4. Configure el canal de notificación: Slack, correo o webhook.

Cuidado con los OOM kills de ClickHouse

ClickHouse es el componente más exigente de la stack SigNoz. En un VPS con menos de 4 GB de RAM disponible, el kernel Linux puede matar el proceso ClickHouse con una señal exit code 137 (SIGKILL enviado por el OOM killer).

Síntoma: la interfaz de SigNoz se carga pero ya no muestra datos, o el contenedor clickhouse se reinicia en bucle. Los logs de la aplicación no mencionan nada — el error está a nivel del kernel.

Diagnóstico:

dmesg | grep -i oom

Verá una línea del tipo Out of memory: Killed process XXXX (clickhouse-serv).

Remedios: añada RAM a su VPS (recomendado), o limite la memoria de ClickHouse añadiendo max_memory_usage=2000000000 (2 GB) en /etc/clickhouse-server/users.xml.

SigNoz vs Datadog vs Grafana Cloud

Desplace la tabla

CriterioSigNoz (self-hosted)DatadogGrafana Cloud
Coste mensual (5 servicios)Solo el coste del VPS (~10-20 €)~75-150 $ + métricas personalizadasGratis hasta 10k series, luego ~8 $/1k
Trazas distribuidasSí (OpenTelemetry nativo)Sí (agente propietario)Sí (Tempo, vía OTLP)
MétricasSí (compatible con Prometheus)Sí (propietario + Prometheus)Sí (Mimir, compatible con Prometheus)
LogsSí (integrado)Sí (coste adicional)Sí (Loki, coste adicional)
Soberanía de los datosTotal — datos en su VPSDatos en Datadog (US/UE)Datos en Grafana Labs
Complejidad operativaMedia (Docker, 1 VPS)Nula (SaaS)Baja (SaaS)
ActualizaciónManual (foundryctl)AutomáticaAutomática
SoporteComunidad + plan de pagoDe pago (incluido)Comunidad + plan de pago

Resolver los problemas más habituales

La UI no se carga en el puerto 8080
Compruebe que el contenedor signoz-frontend está en estado running y que su cortafuegos autoriza el puerto:

docker compose ps | grep frontend
ufw status | grep 8080

Las trazas no aparecen en la interfaz
Compruebe que el puerto 4318 (OTLP/HTTP) es accesible desde su aplicación:

curl -v http://<IP_VPS>:4318

Una respuesta 405 Method Not Allowed confirma que el collector sí está escuchando.

El contenedor ClickHouse se reinicia en bucle
Casi con toda seguridad es un OOM kill. Consulte dmesg | grep -i oom para confirmarlo.

Error connection refused desde la app hacia el VPS
Asegúrese de que los puertos 4317 o 4318 están abiertos en el firewall del VPS de SigNoz, y de que la URL de OTEL_EXPORTER_OTLP_ENDPOINT apunta realmente a la IP pública del VPS y no a localhost.

Consejo: planifique la retención de los datos de ClickHouse

De forma predeterminada, SigNoz conserva las trazas 3 días y las métricas 30 días. En un VPS de 20 GB, un volumen de trazas moderado puede llenar el disco en unas semanas.

Ajuste la retención en la interfaz de SigNoz en Settings → Retention Period. Para una agencia que gestiona varios proyectos de clientes, 7 días de trazas y 90 días de métricas ofrecen un buen equilibrio entre visibilidad y consumo de disco.

Un VPS a la medida de SigNoz y sus herramientas DevOps

Nuestros planes para desarrolladores empiezan con 4 GB de RAM, SSD y un ancho de banda generoso — exactamente lo que SigNoz necesita para funcionar sin sobresaltos. Despliegue su stack de observabilidad en unos minutos y mantenga sus datos bajo control.

¿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