Query App Metrics
queryAppMetricsRun an instant PromQL query against an app’s own metrics to inspect resource usage, replicas, uptime, requests, and alerts, returning Prometheus’s result unchanged.
Instructions
Runs a PromQL query at one instant against the app's own metrics, kept for 62 days, and returns Prometheus's answer unchanged. Only the app's series are visible, whatever the query selects. Every series carries namespace, the app's (getWorkspace returns each app's), and most carry container, the compose service, and pod. Resources: container_cpu_usage_seconds_total, container_spec_cpu_quota / container_spec_cpu_period (the CPU limit), container_memory_working_set_bytes, container_spec_memory_limit_bytes, container_fs_reads_bytes_total, container_fs_writes_bytes_total, container_oom_events_total, and container_network_receive_bytes_total / container_network_transmit_bytes_total, which carry only pod, so match them as pod=~"<service>-[a-z0-9]+-[a-z0-9]+". Replicas: kube_pod_container_status_ready, kube_pod_container_status_restarts_total, kube_pod_container_status_waiting_reason and kube_pod_container_status_last_terminated_reason (reason), and kube_deployment_spec_replicas / kube_deployment_status_replicas_available, whose deployment is the service. Volumes: kubelet_volume_stats_used_bytes and kubelet_volume_stats_capacity_bytes, whose persistentvolumeclaim is the compose volume (each service's volumes in getWorkspace). Requests to the service the app's address routes to: traefik_service_requests_total (code, method, protocol) and traefik_service_request_duration_seconds_bucket (le). Uptime checks are method="HEAD", so leave them out with method!="HEAD", and a scale-to-zero function reports as container="<service>-fn". Uptime: cloady:probe_success:serving (kind="auto" is the check of the app's address) and cloady:service_up:serving, each service's availability from 0 to 1. Spans, once the app sends OpenTelemetry traces: traces_spanmetrics_calls_total and traces_spanmetrics_latency_bucket (span_name, span_kind, status_code, http_status). RabbitMQ: rabbitmq_detailed_queue_messages_ready. Alert rules: ALERTS (alertname, alertstate, container, cloady_metric), whose alertstate="firing" samples are the app's incident history. queryAppMetricsRange runs a query over a range. A query the store refuses comes back with the store's own status and error. The path is the store's own, so a Grafana data source can point here too.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"workspaceSlug": "<workspaceSlug>",
"appSlug": "<appSlug>",
"query": "<query>"
},
"name": "queryAppMetrics"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| env | No | ||
| time | No | When to evaluate the query, as Unix seconds or RFC 3339; now when absent | |
| query | Yes | A PromQL expression | |
| region | No | ||
| appSlug | Yes | ||
| workspaceSlug | Yes |