railway-metrics
について
このスキルは、パフォーマンスの監視と問題のデバッグのために、CPU、メモリ、ネットワーク、ディスク使用率を含むRailwayサービスのメトリクスを照会します。開発者がリソース使用率やサービスパフォーマンスについて質問したときにトリガーされ、Railway CLIから環境IDとサービスIDが必要です。このスキルは、リアルタイム分析データを取得するBashコマンドを通じて、実用的な洞察を提供します。
クイックインストール
Claude Code
推奨/plugin add https://github.com/davila7/claude-code-templatesgit clone https://github.com/davila7/claude-code-templates.git ~/.claude/skills/railway-metricsこのコマンドをClaude Codeにコピー&ペーストしてスキルをインストールします
ドキュメント
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→ environmentIdservice.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 formatvalue- 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.
GitHub リポジトリ
関連スキル
railway-new
メタThis skill creates and configures Railway projects and services, handling both initial setup and adding services to existing projects. It triggers when users mention deployment, initialization, or GitHub linking to Railway. Use it for infrastructure scaffolding, but employ a separate skill specifically for database creation.
railway-database
メタThis skill adds official Railway database services (Postgres, Redis, MySQL, MongoDB) with pre-configured volumes and connection variables. Use it when developers request to add, connect, or wire up databases in their Railway projects. It specifically handles database services while directing other templates to the separate railway-templates skill.
railway-deployment
メタThis Claude Skill manages Railway deployments for lifecycle operations and troubleshooting. It enables developers to view logs, redeploy, restart, or remove deployments through Railway CLI commands. Use it for deployment visibility and debugging, but note that deleting services requires the railway-environment skill instead.
railway-status
メタThis skill checks the current deployment status and uptime of Railway projects in the current directory. It's triggered by queries like "railway status," "what's deployed," or questions about deployment status and uptime. Use the separate railway-environment skill for configuration or variable queries instead.
