Railway.com built-in metrics, monitoring dashboards, alerting (Pro plan), and external OTEL integration with Grafana. Use when setting up monitoring, creating dashboards, configuring alerts, integrating Prometheus/Loki/Tempo, deploying Grafana stack, or analyzing Railway service metrics.
Comprehensive guide for Railway.com observability including built-in metrics, customizable dashboards, alerting (Pro plan), and external OTEL integration with Grafana/Prometheus/Loki/Tempo.
Railway provides multi-tier observability capabilities:
Keywords: metrics, monitoring, observability, dashboard, alerts, Grafana, Prometheus, Loki, Tempo, OTEL, Alloy, Railway
Navigate to your Railway project:
Railway Dashboard → Project → Service → Metrics Tab
What you see:
Add and customize metric widgets:
Metrics Tab → Add Widget → Select Metric Type
Available widgets:
Customization:
Configure alerts for threshold violations:
Service Settings → Alerts → Create Alert Rule
Alert types:
Notification channels:
Export metrics to external systems:
Service Settings → Observability → OTEL Integration
Configure environment variables:
OTEL_EXPORTER_OTLP_ENDPOINT=https://your-collector:4318
OTEL_EXPORTER_OTLP_HEADERS=Authorization=Bearer <token>
OTEL_SERVICE_NAME=my-railway-service
See references/otel-integration.md for complete setup.
Use Railway template for complete observability:
# Option 1: Deploy via Railway Dashboard
# Template ID: 8TLSQD (Grafana Stack)
# Includes: Grafana, Prometheus, Loki, Tempo, Alloy
# Option 2: Deploy via script
.claude/skills/railway-observability/scripts/deploy-grafana-stack.sh
Stack components:
Railway provides instant metrics without configuration.
Navigate to metrics:
Project → Service → Metrics
Available metrics:
Retention: 30 days for all metrics
Create personalized monitoring views.
Add widgets:
Best practices:
Set up proactive monitoring.
Create alert rule:
Service → Settings → Alerts → New Rule
Alert configuration:
Metric: CPU Usage
Condition: Greater than 80%
Duration: 5 minutes
Notification: Slack webhook
Webhook payload example:
{
"service": "backend-production",
"metric": "cpu_usage",
"threshold": 80,
"current": 87.5,
"timestamp": "2025-11-26T10:30:00Z"
}
See references/dashboard-widgets.md for all alert types.
Send metrics to external systems.
Configure Alloy collector:
# Use template from templates/alloy-config.river
# Deploy as Railway service
# Configure OTEL endpoints
Environment setup:
# In your Railway service
OTEL_EXPORTER_OTLP_ENDPOINT=http://alloy:4318
OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
OTEL_METRICS_EXPORTER=otlp
OTEL_LOGS_EXPORTER=otlp
OTEL_TRACES_EXPORTER=otlp
Verify integration:
# Check Alloy logs
railway logs -s alloy
# Should show: "Successfully received OTLP metrics"
See references/otel-integration.md for complete guide.
Full monitoring solution on Railway.
Deploy stack:
# Run deployment script
cd .claude/skills/railway-observability/scripts
./deploy-grafana-stack.sh
# Or deploy manually via Railway Dashboard
# Template: 8TLSQD (Grafana Stack)
Stack includes:
Access Grafana:
URL: https://<grafana-service>.up.railway.app
Username: admin
Password: (set during deployment)
metrics-reference.md - Complete metrics catalogdashboard-widgets.md - Widget configuration guideotel-integration.md - External integration setupdeploy-grafana-stack.sh - Deploy observability stackalloy-config.river - Grafana Alloy collector config| Metric | Description | Units | Retention |
|---|---|---|---|
| CPU | % of allocated cores | Percentage | 30 days |
| Memory | RAM usage | MB/GB | 30 days |
| Disk | Storage consumption | GB | 30 days |
| Network I/O | Ingress/egress traffic | MB/s | 30 days |
No configuration required - Metrics collected automatically for all services.
Drag-and-drop widgets:
Multi-replica support:
Time range options:
Threshold alerts:
Notification channels:
# Email
[email protected]
# Discord webhook