railway-metrics

Railway Service Metrics

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "railway-metrics" with this command: npx skills add davila7/claude-code-templates/davila7-claude-code-templates-railway-metrics

Railway Service Metrics

Query resource usage metrics for Railway services.

When to Use

  • User asks "how much memory is my service using?"

  • User asks about CPU usage, network traffic, disk usage

  • User wants to debug performance issues

  • User asks "is my service healthy?" (combine with railway-service skill)

Prerequisites

Get environmentId and serviceId from linked project:

railway status --json

Extract:

  • environment.id → environmentId

  • service.id → serviceId (optional - omit to get all services)

MetricMeasurement Values

Measurement Description

CPU_USAGE CPU usage (cores)

CPU_LIMIT CPU limit (cores)

MEMORY_USAGE_GB Memory usage in GB

MEMORY_LIMIT_GB Memory limit in GB

NETWORK_RX_GB Network received in GB

NETWORK_TX_GB Network transmitted in GB

DISK_USAGE_GB Disk usage in GB

EPHEMERAL_DISK_USAGE_GB Ephemeral disk usage in GB

BACKUP_USAGE_GB Backup usage in GB

MetricTag Values (for groupBy)

Tag Description

DEPLOYMENT_ID Group by deployment

DEPLOYMENT_INSTANCE_ID Group by instance

REGION Group by region

SERVICE_ID Group by service

Query

query metrics( $environmentId: String! $serviceId: String $startDate: DateTime! $endDate: DateTime $sampleRateSeconds: Int $averagingWindowSeconds: Int $groupBy: [MetricTag!] $measurements: [MetricMeasurement!]! ) { metrics( environmentId: $environmentId serviceId: $serviceId startDate: $startDate endDate: $endDate sampleRateSeconds: $sampleRateSeconds averagingWindowSeconds: $averagingWindowSeconds groupBy: $groupBy measurements: $measurements ) { measurement tags { deploymentInstanceId deploymentId serviceId region } values { ts value } } }

Example: Last Hour CPU and Memory

Use heredoc to avoid shell escaping issues:

bash <<'SCRIPT' START_DATE=$(date -u -v-1H +"%Y-%m-%dT%H:%M:%SZ" 2>/dev/null || date -u -d "1 hour ago" +"%Y-%m-%dT%H:%M:%SZ") ENV_ID="your-environment-id" SERVICE_ID="your-service-id"

VARS=$(jq -n
--arg env "$ENV_ID"
--arg svc "$SERVICE_ID"
--arg start "$START_DATE"
'{environmentId: $env, serviceId: $svc, startDate: $start, measurements: ["CPU_USAGE", "MEMORY_USAGE_GB"]}')

${CLAUDE_PLUGIN_ROOT}/skills/lib/railway-api.sh
'query metrics($environmentId: String!, $serviceId: String, $startDate: DateTime!, $measurements: [MetricMeasurement!]!) { metrics(environmentId: $environmentId, serviceId: $serviceId, startDate: $startDate, measurements: $measurements) { measurement tags { deploymentId region serviceId } values { ts value } } }'
"$VARS" SCRIPT

Example: All Services in Environment

Omit serviceId and use groupBy to get metrics for all services:

bash <<'SCRIPT' START_DATE=$(date -u -v-1H +"%Y-%m-%dT%H:%M:%SZ" 2>/dev/null || date -u -d "1 hour ago" +"%Y-%m-%dT%H:%M:%SZ") ENV_ID="your-environment-id"

VARS=$(jq -n
--arg env "$ENV_ID"
--arg start "$START_DATE"
'{environmentId: $env, startDate: $start, measurements: ["CPU_USAGE", "MEMORY_USAGE_GB"], groupBy: ["SERVICE_ID"]}')

${CLAUDE_PLUGIN_ROOT}/skills/lib/railway-api.sh
'query metrics($environmentId: String!, $startDate: DateTime!, $measurements: [MetricMeasurement!]!, $groupBy: [MetricTag!]) { metrics(environmentId: $environmentId, startDate: $startDate, measurements: $measurements, groupBy: $groupBy) { measurement tags { serviceId region } values { ts value } } }'
"$VARS" SCRIPT

Time Parameters

Parameter Description

startDate Required. ISO 8601 format (e.g., 2024-01-01T00:00:00Z )

endDate Optional. Defaults to now

sampleRateSeconds Sample interval (e.g., 60 for 1-minute samples)

averagingWindowSeconds Averaging window for smoothing

Tip: For last hour, calculate startDate as now - 1 hour in ISO format.

Output Interpretation

{ "data": { "metrics": [ { "measurement": "CPU_USAGE", "tags": { "deploymentId": "...", "serviceId": "...", "region": "us-west1" }, "values": [ { "ts": "2024-01-01T00:00:00Z", "value": 0.25 }, { "ts": "2024-01-01T00:01:00Z", "value": 0.30 } ] } ] } }

  • ts

  • timestamp in ISO format

  • value

  • metric value (cores for CPU, GB for memory/disk/network)

Composability

  • Get IDs: Use railway-status skill or railway status --json

  • Check service health: Use railway-service skill for deployment status

  • View logs: Use railway-deployment skill if metrics show issues

  • Scale service: Use railway-environment skill to adjust resources

Error Handling

Empty/Null Metrics

Services without active deployments return empty metrics arrays. When processing with jq, handle nulls:

Safe iteration - skip nulls

jq -r '.data.metrics[]? | select(.values != null and (.values | length) > 0) | ...'

Check if metrics exist before processing

jq -e '.data.metrics | length > 0' response.json && echo "has metrics"

No Metrics Data

Service may be new or have no traffic. Check:

  • Service has active deployment (stopped services have no metrics)

  • Time range includes deployment period

Invalid Service/Environment ID

Verify IDs with railway status --json .

Permission Denied

User needs access to the project to query metrics.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

senior-data-scientist

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

senior-backend

No summary provided by upstream source.

Repository SourceNeeds Review
-1.2K
davila7
Coding

senior-frontend

No summary provided by upstream source.

Repository SourceNeeds Review