mcpField
R
railway-metrics

railway-metrics

github.com/davila7クラウド・DevOps33.0k275 回インストール1 日前に更新
リポジトリ

railway-metrics について

Railway Service Metricsは、RailwayサービスのCPU、メモリ、ネットワーク、ディスク、バックアップの使用量を調べるスキルです。リソースの推移確認やパフォーマンス調査に役立ちます。

主な機能

  1. 01CPUとメモリ使用量の取得
  2. 02ネットワークとディスク指標の確認
  3. 03時間範囲による絞り込み
  4. 04サービス、デプロイ、インスタンス、リージョン別の集計
  5. 05空の指標結果への対応

活用シーン

  1. 01リソース使用量の急増調査
  2. 02サービスの通信量とディスク使用量の確認
  3. 03複数サービスの指標確認
  4. 04デプロイ情報を踏まえた性能調査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/davila7/claude-code-templates --skill railway-metrics

インストール後、Claude Code で/railway-metricsを入力して読み込まれたか確認します。

詳細

Railway サービスメトリクス

Railway サービスのリソース使用量メトリクスを照会します。

使用するタイミング

  • ユーザーが「サービスはどれだけメモリを使っていますか?」と尋ねたとき
  • ユーザーが CPU 使用率、ネットワークトラフィック、ディスク使用量について尋ねたとき
  • ユーザーがパフォーマンスの問題をデバッグしたいとき
  • ユーザーが「サービスは正常ですか?」と尋ねたとき(railway-service スキルと組み合わせる)

前提条件

リンクされたプロジェクトから environmentId と serviceId を取得します:

railway status --json

次の値を抽出します:

  • environment.id → environmentId
  • service.id → serviceId(任意。省略するとすべてのサービスのメトリクスを取得します)

MetricMeasurement の値

Measurement説明
CPU_USAGECPU 使用率(コア数)
CPU_LIMITCPU 上限(コア数)
MEMORY_USAGE_GBメモリ使用量(GB)
MEMORY_LIMIT_GBメモリ上限(GB)
NETWORK_RX_GB受信ネットワークトラフィック(GB)
NETWORK_TX_GB送信ネットワークトラフィック(GB)
DISK_USAGE_GBディスク使用量(GB)
EPHEMERAL_DISK_USAGE_GBエフェメラルディスク使用量(GB)
BACKUP_USAGE_GBバックアップ使用量(GB)

MetricTag の値(groupBy 用)

Tag説明
DEPLOYMENT_IDデプロイメントごとにグループ化
DEPLOYMENT_INSTANCE_IDインスタンスごとにグループ化
REGIONリージョンごとにグループ化
SERVICE_IDサービスごとにグループ化

クエリ

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
    }
  }
}

例: 直近 1 時間の CPU とメモリ

シェルのエスケープ問題を避けるため、ヒアドキュメントを使用します:

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

例: 環境内のすべてのサービス

serviceId を省略し、groupBy を使用してすべてのサービスのメトリクスを取得します:

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

時間パラメータ

Parameter説明
startDate必須。ISO 8601 形式(例: 2024-01-01T00:00:00Z)
endDate任意。デフォルトは現在時刻
sampleRateSecondsサンプリング間隔(例: 1 分サンプルの場合は 60)
averagingWindowSeconds平滑化のための平均化ウィンドウ

ヒント: 直近 1 時間を指定する場合は、startDate を now - 1 hour を ISO 形式に変換した値として計算します。

出力の解釈

{
  "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 - ISO 形式のタイムスタンプ
  • value - メトリクス値(CPU はコア数、メモリ/ディスク/ネットワークは GB)

他のスキルとの連携

  • ID の取得: railway-status スキルまたは railway status --json を使用
  • サービスの正常性確認: デプロイメントの状態については railway-service スキルを使用
  • ログの確認: メトリクスに問題が見られる場合は railway-deployment スキルを使用
  • サービスのスケール: リソースを調整するには railway-environment スキルを使用

エラーハンドリング

空/null のメトリクス

アクティブなデプロイメントがないサービスでは、空のメトリクス配列が返されます。jq で処理する場合は null を考慮してください:

# 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"
メトリクスデータがない

サービスが新しいか、トラフィックがない可能性があります。次を確認してください:

  • サービスにアクティブなデプロイメントがあること(停止中のサービスにはメトリクスがありません)
  • 時間範囲がデプロイメント期間を含んでいること
無効なサービス/環境 ID

railway status --json で ID を確認してください。

アクセス拒否

メトリクスを照会するには、ユーザーがプロジェクトへのアクセス権を持っている必要があります。

コメント