agentplat▸control runs deployments agents metering + agent
← runs

run_99077c096f03ce8e

SUCCEEDED retrigger →
workload-health v1 · workload-health-k8s · owner wstuckey@mozilla.com (web-user) · via cli · cloud-engineering

input

{
  "request": "Evaluate the workload health of the provided app_code + component_code in its dev / nonprod environment ",
  "references": [
    "app_code:mzcld-demo",
    "component_code:agentplat",
    "project_id:moz-fx-mzcld-demo-nonprod"
  ],
  "sourceContext": {}
}

summary

Unable to evaluate workload health for mzcld-demo/agentplat in the nonprod environment (project moz-fx-mzcld-demo-nonprod). Tenant context was successfully read and confirms the action envelope (min_replicas=1, max_replicas=3, restart_budget_per_hour=2), but every subsequent read call needed to correlate signals failed with permission errors: the Kubernetes API rejected the workload read (403, service account mzcld-demo-dev/mzcld-demo lacks 'get' on deployments in namespace mzcld-demo), the Prometheus/Cloud Monitoring API rejected all metrics queries (403, missing monitoring.timeSeries.list on the nonprod project), and Cloud Logging rejected the log query (403, no accessible log views). Because none of the required traffic, resource, or current-state signals could be retrieved, and the alert's failure pattern (if any) could not be confirmed via logs, no action can be responsibly proposed. Recommend fixing the service account/IAM bindings (deployments get/list in mzcld-demo namespace, monitoring.timeSeries.list on moz-fx-mzcld-demo-nonprod, and log view access) before this alert can be properly triaged.

findings

  • Tenant context read succeeded and defines the action envelope for agentplat.
  • Kubernetes workload read failed with 403 Forbidden; cannot confirm current replicas, resource requests/limits, HPA bounds, or restart count.
  • All metrics queries (request rate, p95 latency, error rate, CPU, memory) failed with 403 Permission Denied on the monitoring API for the nonprod project.
  • Log query failed with 403 Permission Denied on all log views, so any failure pattern (OOM, crashloop, error spike) cannot be confirmed.

proposed actions

none

tool calls

[
  {
    "capability": "tenant.context.read",
    "args": {
      "tenant": "mzcld-demo"
    },
    "result": {
      "tenant": "mzcld-demo",
      "function": "webservices",
      "risk_level": "low",
      "owners": [
        "workgroups/mzcld-demo"
      ],
      "namespaces": [
        "mzcld-demo"
      ],
      "projects": [
        "moz-fx-mzcld-demo-nonprod",
        "moz-fx-mzcld-demo-prod"
      ],
      "workloads": {
        "agentplat": {
          "kind": "Deployment",
          "min_replicas": 1,
          "max_replicas": 3,
          "restart_budget_per_hour": 2
        },
        "mzcld-demo": {
          "kind": "Deployment",
          "min_replicas": 1,
          "max_replicas": 3,
          "restart_budget_per_hour": 2
        }
      },
      "source": "https://github.com/mozilla/global-platform-admin/blob/main/tenants/mzcld-demo.yaml"
    }
  },
  {
    "capability": "k8s.workload.read",
    "args": {
      "namespace": "mzcld-demo",
      "workload": "agentplat"
    },
    "result": {
      "error": "k8s read mzcld-demo/agentplat failed: (403)\nReason: Forbidden\nHTTP response headers: HTTPHeaderDict({'Audit-Id': '50443bc6-4906-4e7a-9a9b-ec4683f2960b', 'Cache-Control': 'no-cache, private', 'Content-Type': 'application/json', 'X-Content-Type-Options': 'nosniff', 'X-Kubernetes-Pf-Flowschema-Uid': 'eab5f5d9-a9f6-4d1f-b07b-109061dd4ab6', 'X-Kubernetes-Pf-Prioritylevel-Uid': '77a566ac-7891-469e-a894-87edbc1d0f8e', 'Date': 'Thu, 23 Jul 2026 20:23:17 GMT', 'Content-Length': '372'})\nHTTP response body: {\"kind\":\"Status\",\"apiVersion\":\"v1\",\"metadata\":{},\"status\":\"Failure\",\"message\":\"deployments.apps \\\"agentplat\\\" is forbidden: User \\\"system:serviceaccount:mzcld-demo-dev:mzcld-demo\\\" cannot get resource \\\"deployments\\\" in API group \\\"apps\\\" in the namespace \\\"mzcld-demo\\\"\",\"reason\":\"Forbidden\",\"details\":{\"name\":\"agentplat\",\"group\":\"apps\",\"kind\":\"deployments\"},\"code\":403}\n\n"
    }
  },
  {
    "capability": "metrics.query",
    "args": {
      "metric": "request_rate",
      "resource": "agentplat",
      "project": "moz-fx-mzcld-demo-nonprod",
      "namespace": "mzcld-demo",
      "window": "30m"
    },
    "result": {
      "error": "prometheus query failed: 403 Forbidden {\n  \"error\": {\n    \"code\": 403,\n    \"message\": \"Permission 'monitoring.timeSeries.list' denied on resource 'projects/867614357840' (or it may not exist)\",\n    \"status\": \"PERMISSION_DENIED\"\n  }\n}"
    }
  },
  {
    "capability": "metrics.query",
    "args": {
      "metric": "p95_latency",
      "resource": "agentplat",
      "project": "moz-fx-mzcld-demo-nonprod",
      "namespace": "mzcld-demo",
      "window": "30m"
    },
    "result": {
      "error": "prometheus query failed: 403 Forbidden {\n  \"error\": {\n    \"code\": 403,\n    \"message\": \"Permission 'monitoring.timeSeries.list' denied on resource 'projects/867614357840' (or it may not exist)\",\n    \"status\": \"PERMISSION_DENIED\"\n  }\n}"
    }
  },
  {
    "capability": "metrics.query",
    "args": {
      "metric": "error_rate",
      "resource": "agentplat",
      "project": "moz-fx-mzcld-demo-nonprod",
      "namespace": "mzcld-demo",
      "window": "30m"
    },
    "result": {
      "error": "prometheus query failed: 403 Forbidden {\n  \"error\": {\n    \"code\": 403,\n    \"message\": \"Permission 'monitoring.timeSeries.list' denied on resource 'projects/867614357840' (or it may not exist)\",\n    \"status\": \"PERMISSION_DENIED\"\n  }\n}"
    }
  },
  {
    "capability": "metrics.query",
    "args": {
      "metric": "container_cpu_usage_seconds_total",
      "resource": "agentplat",
      "project": "moz-fx-mzcld-demo-nonprod",
      "namespace": "mzcld-demo",
      "window": "30m"
    },
    "result": {
      "error": "prometheus query failed: 403 Forbidden {\n  \"error\": {\n    \"code\": 403,\n    \"message\": \"Permission 'monitoring.timeSeries.list' denied on resource 'projects/867614357840' (or it may not exist)\",\n    \"status\": \"PERMISSION_DENIED\"\n  }\n}"
    }
  },
  {
    "capability": "metrics.query",
    "args": {
      "metric": "container_memory_working_set_bytes",
      "resource": "agentplat",
      "project": "moz-fx-mzcld-demo-nonprod",
      "namespace": "mzcld-demo",
      "window": "30m"
    },
    "result": {
      "error": "prometheus query failed: 403 Forbidden {\n  \"error\": {\n    \"code\": 403,\n    \"message\": \"Permission 'monitoring.timeSeries.list' denied on resource 'projects/867614357840' (or it may not exist)\",\n    \"status\": \"PERMISSION_DENIED\"\n  }\n}"
    }
  },
  {
    "capability": "logs.query",
    "args": {
      "resource": "agentplat",
      "project": "moz-fx-mzcld-demo-nonprod",
      "namespace": "mzcld-demo",
      "window": "30m"
    },
    "result": {
      "error": "cloud logging query failed: 403 Permission denied for all log views"
    }
  }
]

usage

{
  "model": "claude-sonnet-5",
  "input_tokens": 17132,
  "output_tokens": 2422,
  "estimated_cost_usd": 0.087726
}

approvals

[]

log

launched k8s job run-run-99077c096f03ce8e in ns/mzcld-demo-dev image=us-docker.pkg.dev/moz-fx-mzcld-demo-prod/mzcld-demo-prod/agentplat:latest
runner started
live reasoning model=claude-sonnet-5