Deploy OpenTelemetry LGTM with Faro
Deploy and Host the LGTM stack with Opentelemetry and Faro RUM
Just deployed
/data/grafana
Prometheus
Just deployed
/data
Just deployed
/data
Just deployed
OpenTelemetry Collector
Just deployed
Just deployed
/data
Deploy and Host OpenTelemetry LGTM with Faro on Railway
OpenTelemetry LGTM with Faro is the full observability stack — Loki, Grafana, Tempo, Prometheus and an OpenTelemetry Collector — with a Grafana Alloy service added in front to receive browser and mobile telemetry. Backend services send OTLP to the collector as usual, while frontends send Faro payloads to Alloy, which normalizes and forwards them through the same pipeline.
About Hosting OpenTelemetry LGTM with Faro
Hosting this stack means running six services: an OpenTelemetry Collector as the ingest hub, an Alloy service dedicated to the Faro protocol, and Loki, Tempo, Prometheus and Grafana behind them. Alloy is needed because the Faro Web SDK posts its own JSON payload that no collector build can accept; it parses that and hands OTLP to the collector, so every signal still passes through one place before reaching storage.
On Railway the backends take volumes, the collector and Alloy get public domains for ingest, and Grafana arrives with datasources, correlation and a frontend dashboard already provisioned.
Common Use Cases
- OTLP-first observability that also needs browser RUM, without splitting into two stacks
- Debugging a user-reported frontend error through to the backend trace that caused it
- Monitoring services and frontends against a single retention and alerting policy
- Migrating off a hosted observability vendor while keeping both server and browser telemetry
Dependencies for OpenTelemetry LGTM with Faro Hosting
- OpenTelemetry Collector
- Grafana Alloy
- Grafana
- Prometheus
- Loki
- Tempo
Deployment Dependencies
- OpenTelemetry: https://opentelemetry.io/docs/
- OpenTelemetry Collector: https://opentelemetry.io/docs/collector/
- Grafana Alloy: https://grafana.com/docs/alloy/latest/
- Grafana: https://grafana.com/docs/
- Prometheus: https://prometheus.io/docs/introduction/overview/
- Loki: https://grafana.com/docs/loki/latest/
- Tempo: https://grafana.com/docs/tempo/latest/
Implementation Details
OpenTelemetry Collector endpoints (internal Railway networking):
RAILWAY_LOKI_ENDPOINT="http://${{Loki.RAILWAY_PRIVATE_DOMAIN}}:3100/otlp"
RAILWAY_TEMPO_ENDPOINT="http://${{Tempo.RAILWAY_PRIVATE_DOMAIN}}:4318"
RAILWAY_PROMETHEUS_ENDPOINT="http://${{Prometheus.RAILWAY_PRIVATE_DOMAIN}}:9090/api/v1/otlp"
The collector's OTLP ingest requires credentials, one user:password line per producer so any single one can be revoked or rotated alone:
RAILWAY_OTEL_HTPASSWD="railway:${{ secret(32) }}"
The Alloy service receives Faro on port 12347 and forwards to the collector with its own credential line. PORT points Railway's health probe at Alloy's own HTTP server:
PORT=12345
FARO_API_KEY="${{ secret(32) }}"
FARO_CORS_ALLOWED_ORIGINS="https://app.example.com,http://localhost:3000"
OTEL_EXPORTER_OTLP_ENDPOINT="http://${{OpenTelemetry Collector.RAILWAY_PRIVATE_DOMAIN}}:4318"
OTEL_UPSTREAM_USERNAME="faro"
OTEL_UPSTREAM_PASSWORD="${{ secret(32) }}"
Grafana auto-wired data sources — the same variable names, but base URLs rather than OTLP paths:
RAILWAY_LOKI_ENDPOINT="http://${{Loki.RAILWAY_PRIVATE_DOMAIN}}:3100"
RAILWAY_TEMPO_ENDPOINT="http://${{Tempo.RAILWAY_PRIVATE_DOMAIN}}:3200"
RAILWAY_PROMETHEUS_ENDPOINT="http://${{Prometheus.RAILWAY_PRIVATE_DOMAIN}}:9090"
Frontend telemetry lands under service.namespace="faro", so it can be given its own retention and is what the bundled Frontend Observability dashboard queries.
Why Deploy OpenTelemetry LGTM with Faro on Railway?
Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.
By deploying OpenTelemetry LGTM with Faro on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.
Template Content
Prometheus
jratienza65/otel-lgtm-railwayOpenTelemetry Collector
jratienza65/otel-lgtm-railway