metrics by railwayapp/railway-skills
npx skills add https://github.com/railwayapp/railway-skills --skill metrics查询 Railway 服务的资源使用指标。
service 技能结合使用)从关联的项目中获取 environmentId 和 serviceId:
railway status --json
提取:
environment.id → environmentIdservice.id → serviceId(可选 - 省略此项以获取所有服务的指标)| 测量项 | 描述 |
|---|---|
| CPU_USAGE | CPU 使用率(核心数) |
| CPU_LIMIT | CPU 限制(核心数) |
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
| 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) |
| 标签 | 描述 |
|---|---|
| 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
}
}
}
使用 heredoc 避免 shell 转义问题:
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"]}')
scripts/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"]}')
scripts/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
| 参数 | 描述 |
|---|---|
| startDate | 必需。ISO 8601 格式(例如 2024-01-01T00:00:00Z) |
| endDate | 可选。默认为当前时间 |
| sampleRateSeconds | 采样间隔(例如,60 表示 1 分钟采样) |
| averagingWindowSeconds | 用于平滑数据的平均窗口 |
提示: 要获取最近一小时的指标,请将 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)status 技能或 railway status --jsonservice 技能查看部署状态deployment 技能environment 技能调整资源没有活动部署的服务会返回空的指标数组。使用 jq 处理时,请处理空值:
# 安全迭代 - 跳过空值
jq -r '.data.metrics[]? | select(.values != null and (.values | length) > 0) | ...'
# 在处理前检查指标是否存在
jq -e '.data.metrics | length > 0' response.json && echo "has metrics"
服务可能是新的或没有流量。请检查:
使用 railway status --json 验证 ID。
用户需要访问项目的权限才能查询指标。
每周安装次数
794
仓库
GitHub 星标数
209
首次出现
Jan 20, 2026
安全审计
安装于
opencode665
codex650
gemini-cli619
claude-code593
github-copilot589
amp537
Query resource usage metrics for Railway services.
service skill)Get environmentId and serviceId from linked project:
railway status --json
Extract:
environment.id → environmentIdservice.id → serviceId (optional - omit to get all services)| 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 |
| Tag | Description |
|---|---|
| DEPLOYMENT_ID | Group by deployment |
| DEPLOYMENT_INSTANCE_ID | Group by instance |
| REGION | Group by region |
| SERVICE_ID | Group by service |
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
}
}
}
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"]}')
scripts/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
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"]}')
scripts/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 | 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.
{
"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)status skill or railway status --jsonservice skill for deployment statusdeployment skill if metrics show issuesenvironment skill to adjust resourcesServices 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"
Service may be new or have no traffic. Check:
Verify IDs with railway status --json.
User needs access to the project to query metrics.
Weekly Installs
794
Repository
GitHub Stars
209
First Seen
Jan 20, 2026
Security Audits
Gen Agent Trust HubFailSocketPassSnykPass
Installed on
opencode665
codex650
gemini-cli619
claude-code593
github-copilot589
amp537
Azure 升级评估与自动化工具 - 轻松迁移 Functions 计划、托管层级和 SKU
64,099 周安装