[ PROMPT_NODE_26140 ]
railway-metrics
[ SKILL_DOCUMENTATION ]
# Railway 服务指标
查询 Railway 服务的资源使用指标。
## 何时使用
- 用户询问“我的服务使用了多少内存?”
- 用户询问 CPU 使用率、网络流量、磁盘使用情况
- 用户想要调试性能问题
- 用户询问“我的服务健康吗?”(结合 railway-service 智能体使用)
## 前置条件
从已链接的项目中获取 environmentId 和 serviceId:
bash
railway status --json
提取:
- `environment.id` → environmentId
- `service.id` → serviceId(可选 - 省略则获取所有服务)
## MetricMeasurement 值
| 度量指标 | 描述 |
|-------------|-------------|
| CPU_USAGE | CPU 使用率(核) |
| CPU_LIMIT | CPU 限制(核) |
| 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)
| 标签 | 描述 |
|-----|-------------|
| DEPLOYMENT_ID | 按部署分组 |
| DEPLOYMENT_INSTANCE_ID | 按实例分组 |
| REGION | 按区域分组 |
| SERVICE_ID | 按服务分组 |
## 查询
graphql
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
}
}
}
## 示例:过去一小时的 CPU 和内存
使用 heredoc 避免 shell 转义问题:
bash
bash </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!, $servic