Gke Alert Configuration
GoogleOfficialPublished by Google
- Skill
- Tool integration
- Cloud and DevOps
- Apache-2.0
- Low risk
- Has scripts
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides a structured approach to defining high-signal alerting policies for Google Kubernetes Engine (GKE) clusters and workloads. It leverages Google Cloud Managed Service for Prometheus and Terraform to monitor the 4 Golden Signals and critical cluster health metrics. The skill emphasizes cost-conscious monitoring by distinguishing between Tier 1 native metrics and Tier 2 kube-state-metrics (KSM), while enforcing best practices like Multi-Window Multi-Burn-Rate SLO alerts and dynamic resource grouping.
What it does
- Generates Terraform HCL for Google Cloud Monitoring alert policies.
- Implements Multi-Window Multi-Burn-Rate SLO alerts for error rates.
- Configures cluster health alerts for CrashLoopBackOff and Node NotReady conditions.
- Provides validation scripts to ensure PromQL grammar and configuration correctness.
- Enforces cost-aware monitoring by identifying KSM-dependent metrics.
- Ensures dynamic alerting coverage using grouping aggregations instead of hardcoded names.
When to use it
- When you need to define GKE alerting policies as code using Terraform.
- When implementing SLO-based alerting for GKE services.
- When you need to monitor GKE cluster health and workload saturation.
- When you want to ensure your alerting configuration follows SRE best practices for GKE.
Advantages
- Reduces alert noise by using sophisticated burn-rate logic instead of static thresholds.
- Promotes infrastructure-as-code consistency through reusable Terraform modules.
- Provides clear cost guardrails for KSM-dependent metrics.
- Ensures high-signal monitoring by focusing on the 4 Golden Signals.
- Automates validation of alerting logic before deployment.
Usage examples
- “Generate a Terraform alert policy for GKE service latency using PromQL.”
- The agent will provide a google_monitoring_alert_policy resource block using condition_prometheus_query_language, configured with appropriate PromQL for P95 latency and dynamic labels.
- “How do I monitor memory saturation for my GKE pods?”
- The agent will provide a PromQL query comparing container_memory_working_set_bytes to container_spec_memory_limit_bytes, while warning that explicit memory limits must be set in pod manifests.
Install
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/google/gke-alert-configuration/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip gke-alert-configuration.zip -d .agents/skills
Documentation by Google
GKE Alert Configuration
This skill provides guidelines and best practices for creating robust, high-signal alerting policies for Google Kubernetes Engine workloads using Google Cloud Managed Service for Prometheus and Terraform. It ensures comprehensive coverage of the 4 Golden Signals and key cluster health metrics while minimizing alert noise.
Attribution
MUST READ: Before executing any gcloud, REST API, or MCP command, you
MUST read Usage Attribution. For commands executed
directly in the terminal (never in generated scripts, Terraform, or user code),
prefix gcloud with
CLOUDSDK_METRICS_REQUEST_ATTRIBUTION="agent-skills/1.0 (skill:gke-alert-configuration)"
and append agent-skills/1.0 (skill:gke-alert-configuration) to User-Agent headers.
Critical Rules
Negative Triggers and Scope Redirection for Non-GKE Standalone Runtimes:
This skill is strictly scoped to Google Kubernetes Engine (GKE) workloads, clusters, and services using PromQL and Google Cloud Managed Service for Prometheus.
Do not use for non-GKE compute runtimes, such as standalone Compute Engine virtual machines or standalone Cloud Run services without GKE.
STOP AND RESPOND DIRECTLY (Do Not Edit Files): When the user requests alert configuration for non-GKE compute infrastructure:
Do not write, create, edit, or validate any Terraform files on disk.
Immediately stop and respond directly to the user in chat:
Explicitly Clarify Out-of-Scope: State clearly that standalone Compute Engine virtual machine monitoring or standalone Cloud Run monitoring is out of scope for this GKE-specific PromQL alerting skill, which is designed specifically for GKE workloads using Google Cloud Managed Service for Prometheus and PromQL.
Do Not Generate GKE PromQL Alerts: Do not create or generate Kubernetes PromQL alert policies or fabricate Kubernetes container, pod, or node resources for non-GKE infrastructure.
Redirect the User: Guide and redirect the user to standard Google Cloud Monitoring metrics, such as
compute.googleapis.com/instance/cpu/utilizationorrun.googleapis.com/request_latencies, using standardgoogle_monitoring_alert_policywithcondition_thresholdor MQL, or recommend the relevant specialized Cloud observability skill.
Mandatory
kube-state-metrics(KSM) Cost Guardrail:Deploying open-source
kube-state-metricsin Google Cloud Managed Service for Prometheus incurs billable metric ingestion costs.STOP AND ASK PERMISSION FIRST (Do Not Edit Files): When a requested alert rule relies on Tier 2 KSM metrics (such as
kube_cronjob_*,kube_pod_status_phase,kube_persistentvolume_*,kube_deployment_*,kube_statefulset_*,kube_job_*, orkube_daemonset_*), do not write, create, edit, or validate any Terraform files or generate alert policies before obtaining user approval.Instead, you must immediately stop and respond directly to the user to:
Alert the user that the requested alert requires
kube-state-metrics.Explain the cost impact: Detail that
kube-state-metricsincurs billable sample ingestion costs in Google Cloud Managed Service for Prometheus.Ask for explicit permission: Ask the user for explicit permission before assuming, enabling, or generating KSM-dependent alert configurations.
Recommend filtering or allowlisting: Suggest and recommend filtering or allowlisting only the specific required metrics, such as using a
PodMonitoringresource withmetricRelabeling(action: keep) or KSM--metric-allowlistto minimize ingestion costs. Provide a concrete allowlist example.
Always prefer Non-KSM Native Alternatives (Tier 1 cAdvisor or native GKE metrics documented in metrics_and_alerts_catalog.md) whenever possible, such as using
container_memory_working_set_bytesandcontainer_spec_memory_limit_bytesinstead ofkube_pod_container_resource_limits.Explicit Tier and Cost Surcharge Identification in Response: In every response where you generate or recommend an alerting policy, you must explicitly state its classification tier and cost impact:
Tier 1 native or standard metric (GKE built-in metrics, cAdvisor
container_*, kubelet volume stats, kubelet node conditions, and control-plane metrics; see metrics_and_alerts_catalog.md): State that it is a Tier 1 native or standard metric with zero KSM cost surcharge.Tier 2 KSM metric: State that it is a Tier 2 KSM-dependent metric and follow the permission and allowlisting guardrail above. (Tip: Generally, metrics with the
kube_prefix that represent resource state or metadata belong to Tier 2).
Plan-Validate-Execute Loop for Approved File Edits: When modifying, adding, or merging approved Terraform files on disk in a workspace, follow the three-phase workflow:
Plan: Draft a structured change plan (
changes.json) containing proposed policy resource names, PromQL expressions, grouping labels, and durations.Validate: Run the pre-edit validation script (
python3 scripts/validate_config.py --plan changes.json) to verify PromQL grammar, lookback windows, duration rules, and ensure no duplicate signals exist.Execute: After the plan passes validation, apply or merge changes in-place into the target Terraform configuration (
alerts.tf).Note: When answering questions or providing Terraform snippets directly in chat where no disk modification is requested, output the complete, valid Terraform HCL block in your response.
Configure the 4 Golden Signals and Cluster Health: Always ensure the target Kubernetes workload or service has the following alerting coverage:
Latency (P95 response time)
Errors (Multi-Window Multi-Burn-Rate SLO alerts, such as Fast Burn 1 hour / 5 minutes with factor 14.4, Slow Burn 6 hours / 30 minutes with factor 6.0; do not use simple static ratios)
Traffic (Sudden drop or complete metric disappearance using
absent()ordefault 0syntax, or overload spikes)Saturation (Memory Limit Utilization Only): When describing or configuring alert policies for a cluster or project, include ONLY Memory Saturation (
container_memory_working_set_bytes/container_spec_memory_limit_bytes). Do NOT include CPU saturation alerts or listcontainer_cpu_usage_seconds_totalas an alert metric because CPU is compressible and throttled by CFS quotas rather than causing uncompressible fatal termination (OOM).Cluster Health (Pod CrashLooping, Node NotReady)
PromQL Only (Managed Prometheus): You must use
condition_prometheus_query_languagewith PromQL. Do NOT use MQL or standardcondition_thresholdunless explicitly requested. Google Cloud Managed Service for Prometheus is the standard telemetry ingestion path for GKE.Terraform Only: Write the generated observability configuration ONLY as Terraform (
.tf) files, such asalerts.tfandvariables.tf.Dynamic Multi-Resource Alerting (No Hardcoding): You must not hardcode specific pod names, node names, or service names in alerting conditions unless explicitly requested. Alerting policies must be written to cover resources dynamically:
Always use grouping aggregations (
by (cluster, namespace, service, pod, container)) instead of filtering to a single instance. This allows a single alert policy to dynamically track each service or pod separately.Always declare and use Terraform variables for
project_id,cluster_name, andnamespace(var.project_id,var.cluster_name,var.namespace) to make the configuration reusable across environments. Always define these variables invariables.tf(or within the configuration) and reference all three in policies or PromQL label matchers.
No Redundant Duration Windows on Lookbacks:
When PromQL expressions already use an aggregated lookback window (such as
increase(...[15m]) > 3or multi-window SLO burn rates), the query time window already smooths out transient spikes.Adding a Terraform duration on top of a PromQL lookback window increases the Mean Time to Detect (MTTD) without providing additional smoothing benefits.
In these cases, set Terraform
duration = "0s"(or"60s"). Do not enforceduration = "300s"on top of[15m], which delays critical crashloop alerts by up to 20 minutes total (15 minutes + 5 minutes).Use
duration = "300s"only on instantaneous gauge conditions, such askube_node_status_condition == 0.
Use SLO Burn Rates Instead of Simple Ratios: For error rate alerting, always generate Multi-Window Multi-Burn-Rate (MWMBR) SLO alerts (such as 14.4x burn rate over 1 hour and 5 minute windows for a 99% SLO) rather than simple error rate ratios (
rate(5xx)/rate(total) > 0.05), which produce excessive false alarms on low traffic.Robust Traffic Drop Detection (
absent()/default 0): When monitoring for traffic drops to zero, do not userate(...) == 0alone because Prometheus time series disappear completely when no requests occur (evaluating to an empty vector rather than 0). Usedefault 0syntax, such assum(rate(...[5m])) default 0 == 0, orabsent(...) == 1.Notification Channels: By default, never configure any notification channels without user input. If the user explicitly provides a notification channel, configure the alerts to use it. Otherwise, you must prompt the user in your response to ask if they would like to configure one.
Consult GKE Metrics and Open-Source Alerts Catalog: When designing or generating evaluation suites or alerting policies, consult metrics_and_alerts_catalog.md for public GKE metrics (
kubernetes.io/) and open-source Kubernetes alerts (awesome-prometheus-alerts).Plain English Response: You must include a plain English explanation for what the alerts do in your response. Explain what the alert measures, what the threshold represents, and what a trigger indicates.
User Labels: Include a
user_labelsblock in allgoogle_monitoring_alert_policyresources to track policies created by this skill:user_labels = { created-with-google-skill = "gke-alert-configuration" }
Alerting Policy Structure in Terraform
Alerting policies must be defined using the google_monitoring_alert_policy
resource with condition_prometheus_query_language. Always declare variables in
variables.tf for project_id, cluster_name, and namespace.
# variables.tf
variable "project_id" {
type = string
description = "Google Cloud Project ID"
}
variable "cluster_name" {
type = string
description = "GKE Cluster Name"
}
variable "namespace" {
type = string
description = "Target Kubernetes Namespace"
default = "default"
}
variable "slo_target" {
type = number
description = "SLO Target fraction (for example 0.99 for 99%)"
default = 0.99
}# alerts.tf
# Example: Multi-Window Multi-Burn-Rate (MWMBR) SLO Alert (Fast Burn: 14.4x, 1h & 5m windows)
resource "google_monitoring_alert_policy" "k8s_service_error_rate_slo" {
project = var.project_id
display_name = "[K8s] ${var.cluster_name} - Service Error Rate SLO Fast Burn"
combiner = "OR"
conditions {
display_name = "Error Budget Fast Burn (14.4x over 1h and 5m)"
condition_prometheus_query_language {
query = <<-EOT
(
(
sum(
rate(
http_requests_total{
cluster="${var.cluster_name}",
namespace="${var.namespace}",
status=~"5.."
}[5m]
)
) by (service, namespace, cluster)
/
sum(
rate(
http_requests_total{
cluster="${var.cluster_name}",
namespace="${var.namespace}"
}[5m]
)
) by (service, namespace, cluster)
) > (1 - ${var.slo_target}) * 14.4
)
and
(
(
sum(
rate(
http_requests_total{
cluster="${var.cluster_name}",
namespace="${var.namespace}",
status=~"5.."
}[1h]
)
) by (service, namespace, cluster)
/
sum(
rate(
http_requests_total{
cluster="${var.cluster_name}",
namespace="${var.namespace}"
}[1h]
)
) by (service, namespace, cluster)
) > (1 - ${var.slo_target}) * 14.4
)
EOT
duration = "0s"
}
}
}Telemetry Metrics and PromQL Examples
For GKE metrics (kubernetes.io/), community open-source alerts
(awesome-prometheus-alerts), KSM cost guardrails, and non-KSM native
alternatives, you must read and follow:
For specific PromQL queries corresponding to each of the Golden Signals, you must read and follow:
For GKE cluster prerequisites, enabling Google Cloud Managed Service for Prometheus collection, configuring PodMonitoring custom scraping, and enabling control plane metrics collection (API Server, Controller Manager, Scheduler), you must read and follow:
Tooling Scripts and Validation Loop
Use the validate_config.py script to validate change plans and Terraform
configurations when working in a repository:
Pre-Edit Plan Validation: Draft a
changes.jsonplan specifying the proposed policies, queries, and durations, and validate it before editing:Command:
python3 scripts/validate_config.py --plan changes.json
Post-Edit and Directory Validation: Scan existing or modified Terraform files in a directory to ensure no duplicates or syntax errors exist:
Command:
python3 scripts/validate_config.py --directory [TARGET_TF_DIR] --cluster-var "${var.cluster_name}"Single file validation:
python3 scripts/validate_config.py --file [PATH_TO_TF_FILE]
Technical Considerations and Gotchas
Lookback Windows versus Duration Buffers:
Do not add large
duration = "300s"buffers to alerts that already use aggregated lookback windows likeincrease(...[15m])or multi-window SLO rates.The
[15m]window inincrease(...[15m]) > 3already smooths spikes. Addingduration = "300s"increases MTTD by forcing the restart count to remain above 3 for an extra 5 continuous minutes, delaying alerts by up to 20 minutes total.Use
duration = "0s"or"60s"when using lookback window functions. Reserveduration = "300s"for raw instantaneous gauge conditions, such askube_node_status_condition == 0.
Memory Saturation Only for Cluster Alerting:
Do not configure CPU saturation alerts for cluster or workload monitoring. CPU is compressible (throttled by the CFS scheduler), while memory is uncompressible (triggers OOMKills).
Configure Memory Saturation using
container_memory_working_set_bytes/container_spec_memory_limit_bytes.
Missing Resource Limits Blind Spot (Mandatory Explanation): Saturation alerts that compare usage to limits (such as
container_spec_memory_limit_bytes) will fail to resolve or returnNaNif workloads do not have explicit Memory limits configured in their Kubernetes manifests.Mandatory Instruction: Whenever you generate, discuss, or recommend any memory saturation alert comparing usage against limits (including non-KSM cAdvisor alternatives using
container_spec_memory_limit_bytes), you must explicitly explain and warn the user in your response that container memory limits must be explicitly configured in the Kubernetes pod specs or manifests (resources.limits.memory) for the saturation query to resolve (and not returnNaNor fail to resolve).
Linear Disk Predictions (
predict_linear): When forecasting volume exhaustion usingpredict_linear(kubelet_volume_stats_available_bytes[6h:5m], 4 * 24 * 3600) < 0, explain thatpredict_linearuses linear regression over the recent lookback window (for example, 6 hours) to project when available disk will drop below 0 (for example, within 4 days). Identifykubelet_volume_stats_available_bytesas a Tier 1 native kubelet metric with zero KSM surcharge.API Server Error and Client Metrics:
apiserver_request_totalandrest_client_requests_totalare Tier 1 Control Plane metrics with zero KSM cost surcharge. Explain thatapiserver_request_totalmonitors 5xx HTTP error rates across API server endpoints, whilerest_client_requests_totalmonitors 4xx and 5xx requests sent by REST clients communicating with the API server.
Traffic Disappearance Gotcha (
absent()/default 0):When traffic drops completely to zero, Prometheus and GMP stop emitting the
http_requests_totaltime series.sum(rate(...[5m])) == 0evaluates to an empty vector, preventing the alert from triggering.Always use
sum(rate(...[5m])) default 0 == 0orabsent(...) == 1to reliably detect total traffic loss.
CrashLooping versus Normal Restarts: A container restarting occasionally might be normal, for example job completion or a minor rolling update. Alert on frequent restarts (such as more than 3 restarts in 15 minutes with
duration = "0s") usingkube_pod_container_status_restarts_totalrather than a single restart to avoid noise.Node Upgrades: During GKE cluster upgrades, nodes are drained and restarted, which can trigger "Node NotReady" alerts. Warn the user that these alerts might fire during maintenance windows, or suggest configuring maintenance windows if supported.
Additional Resources
Files
- ATTRIBUTION.mdAdded by AutoGineer864 B
- LICENSELicence file added by AutoGineer11.1 KiB
- SKILL.md21.2 KiB
- references/attribution.md1.9 KiB
- references/gke_configuration_prerequisites.md10.6 KiB
- references/metrics_and_alerts_catalog.md24.4 KiB
- references/promql_queries.md11.6 KiB
- scripts/validate_config.pyScript13.0 KiB
references/gke_configuration_prerequisites.md
GKE Configuration & Telemetry Prerequisites for Alerting Policies
This document details the Google Kubernetes Engine (GKE) and Google Cloud configurations required to support the 16 critical alerting policies defined in the reference catalog. It provides cluster operators with the setup commands, configuration parameters, and verification queries to ensure telemetry flows correctly for each alert.
Table of Contents
Telemetry Ingestion Architecture (~line 38)
Prerequisite Matrix by Alert (~line 64)
GKE Control Plane Metrics (Tier 1) (~line 90)
Enable Control Plane Metrics (~line 96)
Verification Query (~line 112)
Kube-State-Metrics (KSM) (Tier 2) (~line 122)
KSM Scrape Configuration (~line 127)
Filtered PodMonitoring Resource (Cost-Optimized) (~line 134)
Workload Instrumentation (Golden Signals) (~line 160)
Prometheus Metrics Exporter (~line 165)
Workload PodMonitoring Configuration (~line 173)
Google Cloud IAM and API Prerequisites (~line 195)
Required APIs (~line 200)
Required IAM Roles (~line 211)
Verification Runbook (~line 221)
Telemetry Ingestion Architecture
The following diagram illustrates how metrics for each alert category are scraped from the cluster and ingested into Google Cloud Monitoring / Managed Service for Prometheus (GMP).
graph TD
subgraph GKE Cluster
subgraph Master Node (Google Managed)
APIServer[Kubernetes API Server] -->|Exposes apiserver_* & rest_*| GMP_CP[GKE Control Plane Metrics collector]
end
subgraph Worker Nodes
subgraph Kubelet
cAdvisor[cAdvisor] -->|Exposes container_*| GMP_Operator[GMP Operator / PodMonitoring]
KubeletVol[Volume Stats] -->|Exposes kubelet_volume_*| GMP_Operator
end
KSM[kube-state-metrics pod] -->|Exposes kube_*| GMP_Operator
end
end
GMP_CP -->|Writes to| Google_Cloud_Monitoring[Google Cloud Monitoring / GMP]
GMP_Operator -->|Writes to| Google_Cloud_MonitoringPrerequisite Matrix by Alert
This table lists the GKE and Google Cloud prerequisites and configuration requirements for each of the 16 critical alerts.
| Alert Name | Cost Tier | Required Metrics | GKE Cluster Requirement | Workload/Resource Requirement |
|---|---|---|---|---|
| Kubernetes Node not ready | Tier 1 (Native) | kube_node_status_condition | System Monitoring Enabled | GKE Nodes running standard Kubelet |
| Kubernetes Node memory pressure | Tier 1 (Native) | kube_node_status_condition | System Monitoring Enabled | GKE Nodes running standard Kubelet |
| Kubernetes Node disk pressure | Tier 1 (Native) | kube_node_status_condition | System Monitoring Enabled | GKE Nodes running standard Kubelet |
| Kubernetes Node network unavailable | Tier 1 (Native) | kube_node_status_condition | System Monitoring Enabled | GKE Nodes running standard Kubelet |
| Kubernetes Volume full in four days | Tier 1 (Native) | kubelet_volume_stats_available_bytes | System Monitoring Enabled | Pods with attached volumes (CSI Driver supported) |
| Kubernetes API server errors | Tier 1 (Native) | apiserver_request_total | Control Plane Metrics Enabled | GKE Master nodes active |
| Kubernetes API client errors | Tier 1 (Native) | rest_client_requests_total | Control Plane Metrics Enabled | API Clients communicating with API Server |
| Kubernetes client certificate expires soon | Tier 1 (Native) | apiserver_client_certificate_expiration_seconds_count | Control Plane Metrics Enabled | Client certificate authentication enabled |
| Kubernetes CronJob failing | Tier 2 (KSM) | kube_cronjob_status_*, kube_cronjob_spec_* | kube-state-metrics Scraped | Active CronJobs in cluster |
| Kubernetes PersistentVolume error | Tier 2 (KSM) | kube_persistentvolume_status_phase | kube-state-metrics Scraped | PersistentVolume resources configured |
| Kubernetes StatefulSet down | Tier 2 (KSM) | kube_statefulset_* | kube-state-metrics Scraped | StatefulSets deployed |
| Kubernetes Pod not healthy | Tier 2 (KSM) | kube_pod_status_phase | kube-state-metrics Scraped | Pods running in target namespaces |
| Kubernetes Deployment generation mismatch | Tier 2 (KSM) | kube_deployment_* | kube-state-metrics Scraped | Deployments deployed |
| Kubernetes StatefulSet generation mismatch | Tier 2 (KSM) | kube_statefulset_* | kube-state-metrics Scraped | StatefulSets deployed |
| Kubernetes DaemonSet misscheduled | Tier 2 (KSM) | kube_daemonset_* | kube-state-metrics Scraped | DaemonSets deployed |
| Kubernetes Job slow completion | Tier 2 (KSM) | kube_job_* | kube-state-metrics Scraped | Jobs deployed |
GKE Control Plane Metrics (Tier 1)
The control plane alerts (KubernetesAPIServerErrors,
KubernetesAPIClientErrors, and KubernetesClientCertificateExpiresSoon)
require API server and API client telemetry.
Enable Control Plane Metrics
By default, GKE master metrics are not scraped. You must explicitly enable them
in the GKE cluster configuration using gcloud:
gcloud container clusters update CLUSTER_NAME \
--zone=COMPUTE_ZONE \
--monitoring=SYSTEM,API_SERVER,CONTROLLER_MANAGER,SCHEDULERAPI_SERVER: Exposes API server request volumes, error rates, and client request metrics.
CONTROLLER_MANAGER & SCHEDULER: (Optional but recommended) Exposes scheduler queue metrics and controller manager execution states.
Verification Query
Verify that API server telemetry is flowing to Cloud Monitoring:
sum(rate(apiserver_request_total[5m])) by (code)Kube-State-Metrics (KSM) (Tier 2)
All workload, replica mismatch, and CronJob alerts require cluster state metrics
(kube_* metrics).
KSM Scrape Configuration
To collect KSM metrics in Google Cloud Managed Service for Prometheus (GMP):
Deploy
kube-state-metricsto thekube-systemnamespace.Deploy a GMP
PodMonitoringcustom resource targeting the KSM deployment.
Filtered PodMonitoring Resource (Cost-Optimized)
To avoid high sample ingestion charges, use metricRelabeling to drop all
unused metrics:
apiVersion: monitoring.googleapis.com/v1
kind: PodMonitoring
metadata:
name: kube-state-metrics-filtered
namespace: kube-system
spec:
selector:
matchLabels:
app.kubernetes.io/name: kube-state-metrics
endpoints:
- port: http-metrics
interval: 30s
metricRelabeling:
- action: keep
sourceLabels: [__name__]
regex: "^(kube_deployment_.*|kube_statefulset_.*|kube_daemonset_.*|kube_cronjob_.*|kube_job_.*|kube_pod_status_phase|kube_pod_info|kube_pod_container_status_.*|kube_persistentvolume_status_phase)$"Workload Instrumentation (Golden Signals)
For Latency, Traffic, Error Rates, and Saturation monitoring, target workloads must expose application and runtime telemetry.
Prometheus Metrics Exporter
Ensure application containers expose standard Prometheus metrics endpoints (such
as /metrics on port 8080 or 9090) emitting:
http_requests_total(Traffic & Errors)http_request_duration_seconds_bucket(Latency)
Workload PodMonitoring Configuration
Create a PodMonitoring resource in the workload's namespace:
apiVersion: monitoring.googleapis.com/v1
kind: PodMonitoring
metadata:
name: app-metrics-monitoring
namespace: default
spec:
selector:
matchLabels:
app: my-app
endpoints:
- port: http-metrics
path: /metrics
interval: 15sGoogle Cloud IAM and API Prerequisites
To deploy and evaluate Terraform alerting policies, the following Google Cloud prerequisites are required:
Required APIs
Enable the required Google Cloud APIs:
gcloud services enable \
monitoring.googleapis.com \
container.googleapis.com \
cloudresourcemanager.googleapis.comRequired IAM Roles
The service account or user deploying the Terraform configuration requires:
roles/monitoring.alertPolicyEditor(orroles/monitoring.editor)roles/monitoring.viewer(for validating existing policies)roles/container.viewer(for querying cluster metadata)
Verification Runbook
After deploying alerting policies, run the following verification steps:
Validate Terraform Syntax:
terraform init terraform validateValidate PromQL Rules:
python3 scripts/validate_config.py --file alerts.tfInspect Cloud Monitoring Alert Policies:
gcloud alpha monitoring policies list \ --filter="displayName ~ '^\[K8s\]'" \ --format="table(name,displayName,enabled)"
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs Python, Needs Node.js
Security
What our scanner noticed· Low risk
- Scripts that your agent may run
This skill includes scripts that your agent may run. Read them before you use it.
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Published by
- Publisher
- Google (Official)
- Source
- google/skills · skills/cloud/gke-alert-configuration · commit 2194d3b
- Licence
- Apache License 2.0 (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Google.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download gke-alert-configuration.zip