MCP HubMCP Hub
スキル一覧に戻る

railway-metrics

davila7
更新日 Today
312 閲覧
18,478
1,685
18,478
GitHubで表示
その他RailwayMetricsMonitoringPerformanceCPUMemoryResourcesAnalytics

について

このスキルは、パフォーマンスの監視と問題のデバッグのために、CPU、メモリ、ネットワーク、ディスク使用率を含むRailwayサービスのメトリクスを照会します。開発者がリソース使用率やサービスパフォーマンスについて質問したときにトリガーされ、Railway CLIから環境IDとサービスIDが必要です。このスキルは、リアルタイム分析データを取得するBashコマンドを通じて、実用的な洞察を提供します。

クイックインストール

Claude Code

推奨
プラグインコマンド推奨
/plugin add https://github.com/davila7/claude-code-templates
Git クローン代替
git 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 → environmentId
  • service.id → serviceId (optional - omit to get all services)

MetricMeasurement Values

MeasurementDescription
CPU_USAGECPU usage (cores)
CPU_LIMITCPU limit (cores)
MEMORY_USAGE_GBMemory usage in GB
MEMORY_LIMIT_GBMemory limit in GB
NETWORK_RX_GBNetwork received in GB
NETWORK_TX_GBNetwork transmitted in GB
DISK_USAGE_GBDisk usage in GB
EPHEMERAL_DISK_USAGE_GBEphemeral disk usage in GB
BACKUP_USAGE_GBBackup usage in GB

MetricTag Values (for groupBy)

TagDescription
DEPLOYMENT_IDGroup by deployment
DEPLOYMENT_INSTANCE_IDGroup by instance
REGIONGroup by region
SERVICE_IDGroup 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

ParameterDescription
startDateRequired. ISO 8601 format (e.g., 2024-01-01T00:00:00Z)
endDateOptional. Defaults to now
sampleRateSecondsSample interval (e.g., 60 for 1-minute samples)
averagingWindowSecondsAveraging 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.

GitHub リポジトリ

davila7/claude-code-templates
パス: cli-tool/components/skills/railway/metrics
anthropicanthropic-claudeclaudeclaude-code

関連スキル