Tutorial

SigNoz en VPS: APM open source en 15 minutos

Seguridad y monitorización10 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 (v0.144.0, septiembre de 2026), 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/11
  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 Node.js, Python y Go
  6. 06Configurar la retención y el almacenamiento frío de ClickHouse
  7. 07Alertas personalizadas en SigNoz
  8. 08Escalado: standalone vs cluster
  9. 09Cuidado con los OOM kills de ClickHouse
  10. 10SigNoz vs Datadog vs Grafana Cloud
  11. 11Resolución profunda de problemas

¿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 no está presente todavía, instálelo con el script oficial:

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

    Verifique 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á deprecado.

    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 de 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

    Un solo comando basta 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

    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 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. Instale Nginx y Certbot, y colóquelos como reverse proxy con TLS:

    apt install -y nginx certbot python3-certbot-nginx
    
    cat > /etc/nginx/sites-available/signoz << 'EOF'
    server {
        server_name signoz.yourdomain.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.yourdomain.com
    nginx -t && systemctl reload nginx

    Cierre después el puerto 8080 en su cortafuegos.

Instrumentar Node.js, Python y Go

SigNoz recibe las trazas mediante el protocolo OTLP. Así es como se conectan tres entornos comunes.

Node.js (Express/Fastify):

npm install @opentelemetry/sdk-node @opentelemetry/auto-instrumentations-node
OTEL_EXPORTER_OTLP_ENDPOINT="http://<IP_VPS>:4318" \
OTEL_SERVICE_NAME="my-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="my-python-service" \
opentelemetry-instrument uvicorn main:app

Go — spans manuales:

go get go.opentelemetry.io/otel \
       go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp \
       go.opentelemetry.io/otel/sdk/trace

Inicialice el trazador en su main.go y cree spans alrededor de las operaciones críticas:

tracer := otel.Tracer("my-go-service")
ctx, span := tracer.Start(ctx, "fetch-user-details")
defer span.End()
span.SetAttributes(attribute.String("user.id", userID))

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

Configurar la retención y el almacenamiento frío de ClickHouse

En un VPS con disco limitado, la retención predeterminada de SigNoz (3 días para trazas, 30 días para métricas) puede llenar el disco en pocas semanas.

Ajustar la retención desde la UI: vaya a Settings → Retention Period para establecer duraciones distintas para trazas, métricas y logs. Para una agencia que gestiona varios proyectos, 7 días de trazas y 90 días de métricas es un buen equilibrio.

TTL de ClickHouse con volumen frío:

Si su VPS dispone de un segundo volumen más económico montado en /mnt/cold, puede configurar ClickHouse para mover los datos más antiguos automáticamente:

<storage_configuration>
  <disks>
    <default/>
    <cold_disk>
      <type>local</type>
      <path>/mnt/cold/clickhouse/</path>
    </cold_disk>
  </disks>
  <policies>
    <tiered>
      <volumes>
        <hot><disk>default</disk></hot>
        <cold><disk>cold_disk</disk></cold>
      </volumes>
    </tiered>
  </policies>
</storage_configuration>

Luego aplique la política TTL sobre la tabla de trazas de SigNoz:

ALTER TABLE signoz_traces.distributed_signoz_index_v2
  MODIFY TTL toDateTime(timestamp) + INTERVAL 7 DAY
  TO VOLUME 'cold',
  toDateTime(timestamp) + INTERVAL 30 DAY DELETE;

Alertas personalizadas en SigNoz

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. Puede crear alertas sobre cualquiera de estas señales.

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="my-api"}) > 500 (alerta si P99 > 500 ms).
4. Configure el canal de notificación: Slack, email o webhook.

Alerta sobre la tasa de error:
Use la condición rate(signoz_calls_total{service_name="my-api",status_code="STATUS_CODE_ERROR"}[5m]) > 0.05 para disparar una alerta cuando más del 5 % de las llamadas fallen en 5 minutos.

Detección de anomalía (alerta sobre variación repentina):
SigNoz soporta reglas de alerta de tipo Anomaly (pestaña dedicada en la creación de reglas): defina una ventana de referencia (por ejemplo, 7 días) y un umbral de desviación aceptable. Cualquier desviación inusual en el rendimiento o la latencia dispara la alerta — útil para detectar degradaciones lentas que los umbrales fijos no capturan.

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.

Escalado: standalone vs cluster

SigNoz en modo standalone gestiona sin esfuerzo hasta una decena de servicios instrumentados que generan unos pocos miles de spans por segundo.

Cuándo considerar el paso a cluster:
- Su VPS alcanza regularmente el 80% de uso de CPU en el proceso ClickHouse.
- El volumen de trazas supera 5 000 spans/s en pico sostenido.
- Necesita alta disponibilidad con cero tiempo de inactividad durante las actualizaciones.

Escalado vertical primero: antes de distribuir, duplique la RAM del VPS. ClickHouse está diseñado para aprovechar mucha memoria; pasar de 8 a 16 GB RAM suele trasladar el cuello de botella de la CPU a la red.

Escalado horizontal: SigNoz proporciona charts Helm para un despliegue Kubernetes con ClickHouse distribuido. En un VPS, la opción más sencilla es un segundo VPS dedicado a ClickHouse, conectado al primero por red privada.

Cuidado con los OOM kills de ClickHouse

ClickHouse es el componente más exigente en memoria 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 deja de mostrar datos, o el contenedor clickhouse 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

Resolución profunda de problemas

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
La causa más frecuente es una variable OTEL_EXPORTER_OTLP_ENDPOINT incorrecta. Verifique que:
- la URL apunta a la IP pública del VPS, no a localhost;
- el puerto es 4318 para OTLP/HTTP (o 4317 para gRPC);
- ningún cortafuegos bloquea ese puerto entre su aplicación y el VPS.

Test rápido desde el servidor de la aplicación:

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

Una respuesta 405 Method Not Allowed confirma que el collector escucha correctamente.

ClickHouse OOM — contenedor en bucle de reinicio
Consulte dmesg | grep -i oom para confirmar el kill. Si la RAM es insuficiente, limite el uso de memoria de ClickHouse:

echo '<max_memory_usage>2000000000</max_memory_usage>' \
  >> /etc/clickhouse-server/users.xml
docker compose restart clickhouse

Timeout de arranque de SigNoz
Si docker compose ps muestra el contenedor signoz en starting durante más de 5 minutos, ClickHouse no está listo todavía. SigNoz espera una respuesta de ClickHouse antes de inicializarse. Compruebe los logs del contenedor ClickHouse:

docker compose logs clickhouse --tail=50

Un disco lleno o permisos insuficientes sobre el volumen de datos son las causas más comunes de este bloqueo.

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

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