[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-google-cloud-gke-observability":3,"mdc-3uxtmf-key":34,"related-org-google-cloud-gke-observability":922,"related-repo-google-cloud-gke-observability":1111},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":24,"repoUrl":25,"updatedAt":26,"license":27,"forks":28,"topics":29,"repo":30,"sourceUrl":32,"mdContent":33},"gke-observability","audit GKE observability and monitoring","Workflows for setting up and auditing observability (logging, monitoring, tracing) on GKE.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"google-cloud","Google Cloud","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fgoogle-cloud.png","GoogleCloudPlatform",[13,17,20,23],{"name":14,"slug":15,"type":16},"Observability","observability","tag",{"name":18,"slug":19,"type":16},"Monitoring","monitoring",{"name":21,"slug":22,"type":16},"Kubernetes","kubernetes",{"name":9,"slug":8,"type":16},161,"https:\u002F\u002Fgithub.com\u002FGoogleCloudPlatform\u002Fgke-mcp","2026-07-12T07:40:00.933076",null,78,[],{"repoUrl":25,"stars":24,"forks":28,"topics":31,"description":27},[],"https:\u002F\u002Fgithub.com\u002FGoogleCloudPlatform\u002Fgke-mcp\u002Ftree\u002FHEAD\u002Fskills\u002Fgke-observability","---\nname: gke-observability\ndescription: Workflows for setting up and auditing observability (logging, monitoring, tracing) on GKE.\n---\n\n# GKE Observability Skill\n\nThis skill provides workflows for ensuring your GKE cluster and workloads have adequate observability for production use.\n\n## Workflows\n\n### 1. Audit Cluster Observability\n\nCheck if Cloud Logging and Cloud Monitoring are enabled on the cluster.\n\n**Command:**\n\n```bash\ngcloud container clusters describe \u003Ccluster-name> --region \u003Cregion> --project \u003Cproject-id> --format=\"json(loggingConfig, monitoringConfig)\"\n```\n\nLook for `loggingService` and `monitoringService` to be set to something other than `none` (usually `logging.googleapis.com\u002Fkubernetes` and `monitoring.googleapis.com\u002Fkubernetes`).\n\n### 2. Enable Managed Service for Prometheus\n\nGoogle Cloud Managed Service for Prometheus is the recommended way to collect metrics from your applications.\n\n**Command to enable:**\n\n```bash\ngcloud container clusters update \u003Ccluster-name> \\\n    --enable-managed-prometheus \\\n    --region \u003Cregion>\n```\n\n**Verify installation:**\n\n```bash\nkubectl get pods -n gmp-system\n```\n\n### 3. Workload Logging Verification\n\nEnsure your workloads are logging to standard output, which Cloud Logging collects automatically.\n\n**Check workload logs:**\n\n```bash\nkubectl logs \u003Cpod-name> -n \u003Cnamespace>\n```\n\nEnsure logs are in a structured format (like JSON) if possible, for easier querying.\n\n### 4. Dashboards and Alerts\n\nRecommend creating dashboards in Cloud Monitoring for key metrics:\n\n- CPU Utilization\n- Memory Utilization\n- Request Latency\n- Error Rate\n\nSet up alerting policies for critical thresholds.\n\n### 5. Distributed Tracing\n\nEnable distributed tracing to track requests across microservices.\n\n- **Action**: Recommend using **OpenTelemetry** in the application to send traces to **Cloud Trace**.\n- **Benefit**: Helps identify latency bottlenecks in distributed systems.\n\n### 6. Continuous Profiling\n\nUse continuous profiling to analyze application performance in production with low overhead.\n\n- **Action**: Recommend integrating the **Cloud Profiler** agent in your application code.\n- **Benefit**: Helps identify CPU and memory-consuming functions in production.\n\n### 7. Querying Logs with LQL\n\nUse Logging Query Language (LQL) in Cloud Logging to find specific logs.\n\n**Example LQL Queries:**\n\n- Find error logs for a specific container:\n  ```text\n  resource.type=\"k8s_container\"\n  resource.labels.container_name=\"my-app\"\n  severity>=ERROR\n  ```\n- Find logs with a specific message:\n  ```text\n  resource.type=\"k8s_container\"\n  textPayload:\"connection refused\"\n  ```\n\n### 8. Enable Control Plane Metrics\n\nFor Standard clusters, you can enable collection of metrics from the Kubernetes API server, scheduler, and controller manager.\n\n**Command:**\n\n```bash\ngcloud container clusters update \u003Ccluster-name> \\\n    --monitoring=SYSTEM,API_SERVER,SCHEDULER,CONTROLLER_MANAGER \\\n    --region \u003Cregion>\n```\n\n### 9. Enable Dataplane V2 Observability\n\nIf using GKE Dataplane V2, you can enable advanced L4 observability.\n\n**Command:**\n\n```bash\ngcloud container clusters update \u003Ccluster-name> \\\n    --enable-dataplane-v2-observability \\\n    --region \u003Cregion>\n```\n\nThis allows you to observe traffic flows and network metrics.\n\n## Best Practices\n\n1. **Structured Logging**: Use JSON logging in your applications to make it easier to search and analyze logs in Cloud Logging.\n2. **Custom Metrics**: Use Managed Service for Prometheus to expose and collect custom application metrics.\n3. **Full Pillars of Observability**: Implement Tracing and Profiling in addition to Logs and Metrics for complete visibility.\n4. **Control Plane Metrics**: Enable control plane metrics (if using Standard) to monitor the health of the API server and scheduler.\n",{"data":35,"body":36},{"name":4,"description":6},{"type":37,"children":38},"root",[39,48,54,61,68,73,82,210,254,260,265,273,360,368,403,409,414,422,479,484,490,495,520,525,531,536,573,579,584,612,618,623,631,663,669,674,681,762,768,773,780,861,866,872,916],{"type":40,"tag":41,"props":42,"children":44},"element","h1",{"id":43},"gke-observability-skill",[45],{"type":46,"value":47},"text","GKE Observability Skill",{"type":40,"tag":49,"props":50,"children":51},"p",{},[52],{"type":46,"value":53},"This skill provides workflows for ensuring your GKE cluster and workloads have adequate observability for production use.",{"type":40,"tag":55,"props":56,"children":58},"h2",{"id":57},"workflows",[59],{"type":46,"value":60},"Workflows",{"type":40,"tag":62,"props":63,"children":65},"h3",{"id":64},"_1-audit-cluster-observability",[66],{"type":46,"value":67},"1. Audit Cluster Observability",{"type":40,"tag":49,"props":69,"children":70},{},[71],{"type":46,"value":72},"Check if Cloud Logging and Cloud Monitoring are enabled on the cluster.",{"type":40,"tag":49,"props":74,"children":75},{},[76],{"type":40,"tag":77,"props":78,"children":79},"strong",{},[80],{"type":46,"value":81},"Command:",{"type":40,"tag":83,"props":84,"children":89},"pre",{"className":85,"code":86,"language":87,"meta":88,"style":88},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","gcloud container clusters describe \u003Ccluster-name> --region \u003Cregion> --project \u003Cproject-id> --format=\"json(loggingConfig, monitoringConfig)\"\n","bash","",[90],{"type":40,"tag":91,"props":92,"children":93},"code",{"__ignoreMap":88},[94],{"type":40,"tag":95,"props":96,"children":99},"span",{"class":97,"line":98},"line",1,[100,106,112,117,122,128,133,139,144,149,153,158,163,167,172,176,181,186,190,195,200,205],{"type":40,"tag":95,"props":101,"children":103},{"style":102},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[104],{"type":46,"value":105},"gcloud",{"type":40,"tag":95,"props":107,"children":109},{"style":108},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[110],{"type":46,"value":111}," container",{"type":40,"tag":95,"props":113,"children":114},{"style":108},[115],{"type":46,"value":116}," clusters",{"type":40,"tag":95,"props":118,"children":119},{"style":108},[120],{"type":46,"value":121}," describe",{"type":40,"tag":95,"props":123,"children":125},{"style":124},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[126],{"type":46,"value":127}," \u003C",{"type":40,"tag":95,"props":129,"children":130},{"style":108},[131],{"type":46,"value":132},"cluster-nam",{"type":40,"tag":95,"props":134,"children":136},{"style":135},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[137],{"type":46,"value":138},"e",{"type":40,"tag":95,"props":140,"children":141},{"style":124},[142],{"type":46,"value":143},">",{"type":40,"tag":95,"props":145,"children":146},{"style":108},[147],{"type":46,"value":148}," --region",{"type":40,"tag":95,"props":150,"children":151},{"style":124},[152],{"type":46,"value":127},{"type":40,"tag":95,"props":154,"children":155},{"style":108},[156],{"type":46,"value":157},"regio",{"type":40,"tag":95,"props":159,"children":160},{"style":135},[161],{"type":46,"value":162},"n",{"type":40,"tag":95,"props":164,"children":165},{"style":124},[166],{"type":46,"value":143},{"type":40,"tag":95,"props":168,"children":169},{"style":108},[170],{"type":46,"value":171}," --project",{"type":40,"tag":95,"props":173,"children":174},{"style":124},[175],{"type":46,"value":127},{"type":40,"tag":95,"props":177,"children":178},{"style":108},[179],{"type":46,"value":180},"project-i",{"type":40,"tag":95,"props":182,"children":183},{"style":135},[184],{"type":46,"value":185},"d",{"type":40,"tag":95,"props":187,"children":188},{"style":124},[189],{"type":46,"value":143},{"type":40,"tag":95,"props":191,"children":192},{"style":108},[193],{"type":46,"value":194}," --format=",{"type":40,"tag":95,"props":196,"children":197},{"style":124},[198],{"type":46,"value":199},"\"",{"type":40,"tag":95,"props":201,"children":202},{"style":108},[203],{"type":46,"value":204},"json(loggingConfig, monitoringConfig)",{"type":40,"tag":95,"props":206,"children":207},{"style":124},[208],{"type":46,"value":209},"\"\n",{"type":40,"tag":49,"props":211,"children":212},{},[213,215,221,223,229,231,237,239,245,246,252],{"type":46,"value":214},"Look for ",{"type":40,"tag":91,"props":216,"children":218},{"className":217},[],[219],{"type":46,"value":220},"loggingService",{"type":46,"value":222}," and ",{"type":40,"tag":91,"props":224,"children":226},{"className":225},[],[227],{"type":46,"value":228},"monitoringService",{"type":46,"value":230}," to be set to something other than ",{"type":40,"tag":91,"props":232,"children":234},{"className":233},[],[235],{"type":46,"value":236},"none",{"type":46,"value":238}," (usually ",{"type":40,"tag":91,"props":240,"children":242},{"className":241},[],[243],{"type":46,"value":244},"logging.googleapis.com\u002Fkubernetes",{"type":46,"value":222},{"type":40,"tag":91,"props":247,"children":249},{"className":248},[],[250],{"type":46,"value":251},"monitoring.googleapis.com\u002Fkubernetes",{"type":46,"value":253},").",{"type":40,"tag":62,"props":255,"children":257},{"id":256},"_2-enable-managed-service-for-prometheus",[258],{"type":46,"value":259},"2. Enable Managed Service for Prometheus",{"type":40,"tag":49,"props":261,"children":262},{},[263],{"type":46,"value":264},"Google Cloud Managed Service for Prometheus is the recommended way to collect metrics from your applications.",{"type":40,"tag":49,"props":266,"children":267},{},[268],{"type":40,"tag":77,"props":269,"children":270},{},[271],{"type":46,"value":272},"Command to enable:",{"type":40,"tag":83,"props":274,"children":276},{"className":85,"code":275,"language":87,"meta":88,"style":88},"gcloud container clusters update \u003Ccluster-name> \\\n    --enable-managed-prometheus \\\n    --region \u003Cregion>\n",[277],{"type":40,"tag":91,"props":278,"children":279},{"__ignoreMap":88},[280,321,334],{"type":40,"tag":95,"props":281,"children":282},{"class":97,"line":98},[283,287,291,295,300,304,308,312,316],{"type":40,"tag":95,"props":284,"children":285},{"style":102},[286],{"type":46,"value":105},{"type":40,"tag":95,"props":288,"children":289},{"style":108},[290],{"type":46,"value":111},{"type":40,"tag":95,"props":292,"children":293},{"style":108},[294],{"type":46,"value":116},{"type":40,"tag":95,"props":296,"children":297},{"style":108},[298],{"type":46,"value":299}," update",{"type":40,"tag":95,"props":301,"children":302},{"style":124},[303],{"type":46,"value":127},{"type":40,"tag":95,"props":305,"children":306},{"style":108},[307],{"type":46,"value":132},{"type":40,"tag":95,"props":309,"children":310},{"style":135},[311],{"type":46,"value":138},{"type":40,"tag":95,"props":313,"children":314},{"style":124},[315],{"type":46,"value":143},{"type":40,"tag":95,"props":317,"children":318},{"style":135},[319],{"type":46,"value":320}," \\\n",{"type":40,"tag":95,"props":322,"children":324},{"class":97,"line":323},2,[325,330],{"type":40,"tag":95,"props":326,"children":327},{"style":108},[328],{"type":46,"value":329},"    --enable-managed-prometheus",{"type":40,"tag":95,"props":331,"children":332},{"style":135},[333],{"type":46,"value":320},{"type":40,"tag":95,"props":335,"children":337},{"class":97,"line":336},3,[338,343,347,351,355],{"type":40,"tag":95,"props":339,"children":340},{"style":108},[341],{"type":46,"value":342},"    --region",{"type":40,"tag":95,"props":344,"children":345},{"style":124},[346],{"type":46,"value":127},{"type":40,"tag":95,"props":348,"children":349},{"style":108},[350],{"type":46,"value":157},{"type":40,"tag":95,"props":352,"children":353},{"style":135},[354],{"type":46,"value":162},{"type":40,"tag":95,"props":356,"children":357},{"style":124},[358],{"type":46,"value":359},">\n",{"type":40,"tag":49,"props":361,"children":362},{},[363],{"type":40,"tag":77,"props":364,"children":365},{},[366],{"type":46,"value":367},"Verify installation:",{"type":40,"tag":83,"props":369,"children":371},{"className":85,"code":370,"language":87,"meta":88,"style":88},"kubectl get pods -n gmp-system\n",[372],{"type":40,"tag":91,"props":373,"children":374},{"__ignoreMap":88},[375],{"type":40,"tag":95,"props":376,"children":377},{"class":97,"line":98},[378,383,388,393,398],{"type":40,"tag":95,"props":379,"children":380},{"style":102},[381],{"type":46,"value":382},"kubectl",{"type":40,"tag":95,"props":384,"children":385},{"style":108},[386],{"type":46,"value":387}," get",{"type":40,"tag":95,"props":389,"children":390},{"style":108},[391],{"type":46,"value":392}," pods",{"type":40,"tag":95,"props":394,"children":395},{"style":108},[396],{"type":46,"value":397}," -n",{"type":40,"tag":95,"props":399,"children":400},{"style":108},[401],{"type":46,"value":402}," gmp-system\n",{"type":40,"tag":62,"props":404,"children":406},{"id":405},"_3-workload-logging-verification",[407],{"type":46,"value":408},"3. Workload Logging Verification",{"type":40,"tag":49,"props":410,"children":411},{},[412],{"type":46,"value":413},"Ensure your workloads are logging to standard output, which Cloud Logging collects automatically.",{"type":40,"tag":49,"props":415,"children":416},{},[417],{"type":40,"tag":77,"props":418,"children":419},{},[420],{"type":46,"value":421},"Check workload logs:",{"type":40,"tag":83,"props":423,"children":425},{"className":85,"code":424,"language":87,"meta":88,"style":88},"kubectl logs \u003Cpod-name> -n \u003Cnamespace>\n",[426],{"type":40,"tag":91,"props":427,"children":428},{"__ignoreMap":88},[429],{"type":40,"tag":95,"props":430,"children":431},{"class":97,"line":98},[432,436,441,445,450,454,458,462,466,471,475],{"type":40,"tag":95,"props":433,"children":434},{"style":102},[435],{"type":46,"value":382},{"type":40,"tag":95,"props":437,"children":438},{"style":108},[439],{"type":46,"value":440}," logs",{"type":40,"tag":95,"props":442,"children":443},{"style":124},[444],{"type":46,"value":127},{"type":40,"tag":95,"props":446,"children":447},{"style":108},[448],{"type":46,"value":449},"pod-nam",{"type":40,"tag":95,"props":451,"children":452},{"style":135},[453],{"type":46,"value":138},{"type":40,"tag":95,"props":455,"children":456},{"style":124},[457],{"type":46,"value":143},{"type":40,"tag":95,"props":459,"children":460},{"style":108},[461],{"type":46,"value":397},{"type":40,"tag":95,"props":463,"children":464},{"style":124},[465],{"type":46,"value":127},{"type":40,"tag":95,"props":467,"children":468},{"style":108},[469],{"type":46,"value":470},"namespac",{"type":40,"tag":95,"props":472,"children":473},{"style":135},[474],{"type":46,"value":138},{"type":40,"tag":95,"props":476,"children":477},{"style":124},[478],{"type":46,"value":359},{"type":40,"tag":49,"props":480,"children":481},{},[482],{"type":46,"value":483},"Ensure logs are in a structured format (like JSON) if possible, for easier querying.",{"type":40,"tag":62,"props":485,"children":487},{"id":486},"_4-dashboards-and-alerts",[488],{"type":46,"value":489},"4. Dashboards and Alerts",{"type":40,"tag":49,"props":491,"children":492},{},[493],{"type":46,"value":494},"Recommend creating dashboards in Cloud Monitoring for key metrics:",{"type":40,"tag":496,"props":497,"children":498},"ul",{},[499,505,510,515],{"type":40,"tag":500,"props":501,"children":502},"li",{},[503],{"type":46,"value":504},"CPU Utilization",{"type":40,"tag":500,"props":506,"children":507},{},[508],{"type":46,"value":509},"Memory Utilization",{"type":40,"tag":500,"props":511,"children":512},{},[513],{"type":46,"value":514},"Request Latency",{"type":40,"tag":500,"props":516,"children":517},{},[518],{"type":46,"value":519},"Error Rate",{"type":40,"tag":49,"props":521,"children":522},{},[523],{"type":46,"value":524},"Set up alerting policies for critical thresholds.",{"type":40,"tag":62,"props":526,"children":528},{"id":527},"_5-distributed-tracing",[529],{"type":46,"value":530},"5. Distributed Tracing",{"type":40,"tag":49,"props":532,"children":533},{},[534],{"type":46,"value":535},"Enable distributed tracing to track requests across microservices.",{"type":40,"tag":496,"props":537,"children":538},{},[539,563],{"type":40,"tag":500,"props":540,"children":541},{},[542,547,549,554,556,561],{"type":40,"tag":77,"props":543,"children":544},{},[545],{"type":46,"value":546},"Action",{"type":46,"value":548},": Recommend using ",{"type":40,"tag":77,"props":550,"children":551},{},[552],{"type":46,"value":553},"OpenTelemetry",{"type":46,"value":555}," in the application to send traces to ",{"type":40,"tag":77,"props":557,"children":558},{},[559],{"type":46,"value":560},"Cloud Trace",{"type":46,"value":562},".",{"type":40,"tag":500,"props":564,"children":565},{},[566,571],{"type":40,"tag":77,"props":567,"children":568},{},[569],{"type":46,"value":570},"Benefit",{"type":46,"value":572},": Helps identify latency bottlenecks in distributed systems.",{"type":40,"tag":62,"props":574,"children":576},{"id":575},"_6-continuous-profiling",[577],{"type":46,"value":578},"6. Continuous Profiling",{"type":40,"tag":49,"props":580,"children":581},{},[582],{"type":46,"value":583},"Use continuous profiling to analyze application performance in production with low overhead.",{"type":40,"tag":496,"props":585,"children":586},{},[587,603],{"type":40,"tag":500,"props":588,"children":589},{},[590,594,596,601],{"type":40,"tag":77,"props":591,"children":592},{},[593],{"type":46,"value":546},{"type":46,"value":595},": Recommend integrating the ",{"type":40,"tag":77,"props":597,"children":598},{},[599],{"type":46,"value":600},"Cloud Profiler",{"type":46,"value":602}," agent in your application code.",{"type":40,"tag":500,"props":604,"children":605},{},[606,610],{"type":40,"tag":77,"props":607,"children":608},{},[609],{"type":46,"value":570},{"type":46,"value":611},": Helps identify CPU and memory-consuming functions in production.",{"type":40,"tag":62,"props":613,"children":615},{"id":614},"_7-querying-logs-with-lql",[616],{"type":46,"value":617},"7. Querying Logs with LQL",{"type":40,"tag":49,"props":619,"children":620},{},[621],{"type":46,"value":622},"Use Logging Query Language (LQL) in Cloud Logging to find specific logs.",{"type":40,"tag":49,"props":624,"children":625},{},[626],{"type":40,"tag":77,"props":627,"children":628},{},[629],{"type":46,"value":630},"Example LQL Queries:",{"type":40,"tag":496,"props":632,"children":633},{},[634,649],{"type":40,"tag":500,"props":635,"children":636},{},[637,639],{"type":46,"value":638},"Find error logs for a specific container:\n",{"type":40,"tag":83,"props":640,"children":644},{"className":641,"code":643,"language":46,"meta":88},[642],"language-text","resource.type=\"k8s_container\"\nresource.labels.container_name=\"my-app\"\nseverity>=ERROR\n",[645],{"type":40,"tag":91,"props":646,"children":647},{"__ignoreMap":88},[648],{"type":46,"value":643},{"type":40,"tag":500,"props":650,"children":651},{},[652,654],{"type":46,"value":653},"Find logs with a specific message:\n",{"type":40,"tag":83,"props":655,"children":658},{"className":656,"code":657,"language":46,"meta":88},[642],"resource.type=\"k8s_container\"\ntextPayload:\"connection refused\"\n",[659],{"type":40,"tag":91,"props":660,"children":661},{"__ignoreMap":88},[662],{"type":46,"value":657},{"type":40,"tag":62,"props":664,"children":666},{"id":665},"_8-enable-control-plane-metrics",[667],{"type":46,"value":668},"8. Enable Control Plane Metrics",{"type":40,"tag":49,"props":670,"children":671},{},[672],{"type":46,"value":673},"For Standard clusters, you can enable collection of metrics from the Kubernetes API server, scheduler, and controller manager.",{"type":40,"tag":49,"props":675,"children":676},{},[677],{"type":40,"tag":77,"props":678,"children":679},{},[680],{"type":46,"value":81},{"type":40,"tag":83,"props":682,"children":684},{"className":85,"code":683,"language":87,"meta":88,"style":88},"gcloud container clusters update \u003Ccluster-name> \\\n    --monitoring=SYSTEM,API_SERVER,SCHEDULER,CONTROLLER_MANAGER \\\n    --region \u003Cregion>\n",[685],{"type":40,"tag":91,"props":686,"children":687},{"__ignoreMap":88},[688,727,739],{"type":40,"tag":95,"props":689,"children":690},{"class":97,"line":98},[691,695,699,703,707,711,715,719,723],{"type":40,"tag":95,"props":692,"children":693},{"style":102},[694],{"type":46,"value":105},{"type":40,"tag":95,"props":696,"children":697},{"style":108},[698],{"type":46,"value":111},{"type":40,"tag":95,"props":700,"children":701},{"style":108},[702],{"type":46,"value":116},{"type":40,"tag":95,"props":704,"children":705},{"style":108},[706],{"type":46,"value":299},{"type":40,"tag":95,"props":708,"children":709},{"style":124},[710],{"type":46,"value":127},{"type":40,"tag":95,"props":712,"children":713},{"style":108},[714],{"type":46,"value":132},{"type":40,"tag":95,"props":716,"children":717},{"style":135},[718],{"type":46,"value":138},{"type":40,"tag":95,"props":720,"children":721},{"style":124},[722],{"type":46,"value":143},{"type":40,"tag":95,"props":724,"children":725},{"style":135},[726],{"type":46,"value":320},{"type":40,"tag":95,"props":728,"children":729},{"class":97,"line":323},[730,735],{"type":40,"tag":95,"props":731,"children":732},{"style":108},[733],{"type":46,"value":734},"    --monitoring=SYSTEM,API_SERVER,SCHEDULER,CONTROLLER_MANAGER",{"type":40,"tag":95,"props":736,"children":737},{"style":135},[738],{"type":46,"value":320},{"type":40,"tag":95,"props":740,"children":741},{"class":97,"line":336},[742,746,750,754,758],{"type":40,"tag":95,"props":743,"children":744},{"style":108},[745],{"type":46,"value":342},{"type":40,"tag":95,"props":747,"children":748},{"style":124},[749],{"type":46,"value":127},{"type":40,"tag":95,"props":751,"children":752},{"style":108},[753],{"type":46,"value":157},{"type":40,"tag":95,"props":755,"children":756},{"style":135},[757],{"type":46,"value":162},{"type":40,"tag":95,"props":759,"children":760},{"style":124},[761],{"type":46,"value":359},{"type":40,"tag":62,"props":763,"children":765},{"id":764},"_9-enable-dataplane-v2-observability",[766],{"type":46,"value":767},"9. Enable Dataplane V2 Observability",{"type":40,"tag":49,"props":769,"children":770},{},[771],{"type":46,"value":772},"If using GKE Dataplane V2, you can enable advanced L4 observability.",{"type":40,"tag":49,"props":774,"children":775},{},[776],{"type":40,"tag":77,"props":777,"children":778},{},[779],{"type":46,"value":81},{"type":40,"tag":83,"props":781,"children":783},{"className":85,"code":782,"language":87,"meta":88,"style":88},"gcloud container clusters update \u003Ccluster-name> \\\n    --enable-dataplane-v2-observability \\\n    --region \u003Cregion>\n",[784],{"type":40,"tag":91,"props":785,"children":786},{"__ignoreMap":88},[787,826,838],{"type":40,"tag":95,"props":788,"children":789},{"class":97,"line":98},[790,794,798,802,806,810,814,818,822],{"type":40,"tag":95,"props":791,"children":792},{"style":102},[793],{"type":46,"value":105},{"type":40,"tag":95,"props":795,"children":796},{"style":108},[797],{"type":46,"value":111},{"type":40,"tag":95,"props":799,"children":800},{"style":108},[801],{"type":46,"value":116},{"type":40,"tag":95,"props":803,"children":804},{"style":108},[805],{"type":46,"value":299},{"type":40,"tag":95,"props":807,"children":808},{"style":124},[809],{"type":46,"value":127},{"type":40,"tag":95,"props":811,"children":812},{"style":108},[813],{"type":46,"value":132},{"type":40,"tag":95,"props":815,"children":816},{"style":135},[817],{"type":46,"value":138},{"type":40,"tag":95,"props":819,"children":820},{"style":124},[821],{"type":46,"value":143},{"type":40,"tag":95,"props":823,"children":824},{"style":135},[825],{"type":46,"value":320},{"type":40,"tag":95,"props":827,"children":828},{"class":97,"line":323},[829,834],{"type":40,"tag":95,"props":830,"children":831},{"style":108},[832],{"type":46,"value":833},"    --enable-dataplane-v2-observability",{"type":40,"tag":95,"props":835,"children":836},{"style":135},[837],{"type":46,"value":320},{"type":40,"tag":95,"props":839,"children":840},{"class":97,"line":336},[841,845,849,853,857],{"type":40,"tag":95,"props":842,"children":843},{"style":108},[844],{"type":46,"value":342},{"type":40,"tag":95,"props":846,"children":847},{"style":124},[848],{"type":46,"value":127},{"type":40,"tag":95,"props":850,"children":851},{"style":108},[852],{"type":46,"value":157},{"type":40,"tag":95,"props":854,"children":855},{"style":135},[856],{"type":46,"value":162},{"type":40,"tag":95,"props":858,"children":859},{"style":124},[860],{"type":46,"value":359},{"type":40,"tag":49,"props":862,"children":863},{},[864],{"type":46,"value":865},"This allows you to observe traffic flows and network metrics.",{"type":40,"tag":55,"props":867,"children":869},{"id":868},"best-practices",[870],{"type":46,"value":871},"Best Practices",{"type":40,"tag":873,"props":874,"children":875},"ol",{},[876,886,896,906],{"type":40,"tag":500,"props":877,"children":878},{},[879,884],{"type":40,"tag":77,"props":880,"children":881},{},[882],{"type":46,"value":883},"Structured Logging",{"type":46,"value":885},": Use JSON logging in your applications to make it easier to search and analyze logs in Cloud Logging.",{"type":40,"tag":500,"props":887,"children":888},{},[889,894],{"type":40,"tag":77,"props":890,"children":891},{},[892],{"type":46,"value":893},"Custom Metrics",{"type":46,"value":895},": Use Managed Service for Prometheus to expose and collect custom application metrics.",{"type":40,"tag":500,"props":897,"children":898},{},[899,904],{"type":40,"tag":77,"props":900,"children":901},{},[902],{"type":46,"value":903},"Full Pillars of Observability",{"type":46,"value":905},": Implement Tracing and Profiling in addition to Logs and Metrics for complete visibility.",{"type":40,"tag":500,"props":907,"children":908},{},[909,914],{"type":40,"tag":77,"props":910,"children":911},{},[912],{"type":46,"value":913},"Control Plane Metrics",{"type":46,"value":915},": Enable control plane metrics (if using Standard) to monitor the health of the API server and scheduler.",{"type":40,"tag":917,"props":918,"children":919},"style",{},[920],{"type":46,"value":921},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":923,"total":1110},[924,942,958,980,994,1005,1019,1036,1053,1066,1082,1092],{"slug":925,"name":925,"fn":926,"description":927,"org":928,"tags":929,"stars":939,"repoUrl":940,"updatedAt":941},"kb-search","search and extract local knowledge base documents","Allows listing, searching and extracting information from local knowledge base documents for information about tables\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[930,933,936],{"name":931,"slug":932,"type":16},"Documentation","documentation",{"name":934,"slug":935,"type":16},"Knowledge Base","knowledge-base",{"name":937,"slug":938,"type":16},"Search","search",6749,"https:\u002F\u002Fgithub.com\u002FGoogleCloudPlatform\u002Fknowledge-catalog","2026-07-12T07:38:52.157375",{"slug":943,"name":944,"fn":945,"description":946,"org":947,"tags":948,"stars":939,"repoUrl":940,"updatedAt":957},"knowledgecatalogdiscoveryagent","knowledge_catalog_discovery_agent","search and rank Knowledge Catalog data entries","Analyzes user queries, extracts relevant predicates, and utilizes Knowledge Catalog Search to find and rank the most relevant data entries. Engages with the user throughout the process.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[949,952,953,956],{"name":950,"slug":951,"type":16},"Data Analysis","data-analysis",{"name":9,"slug":8,"type":16},{"name":954,"slug":955,"type":16},"Knowledge Management","knowledge-management",{"name":937,"slug":938,"type":16},"2026-07-12T07:38:22.196851",{"slug":959,"name":959,"fn":960,"description":961,"org":962,"tags":963,"stars":977,"repoUrl":978,"updatedAt":979},"contributing","contribute to Cloud Foundation Fabric","End-to-end workflow for contributing to Cloud Foundation Fabric: triaging GitHub issues, proactive feature development, validating with tests and Policy Troubleshooter, and submitting sanitized Pull Requests. Use when addressing a Fabric GitHub issue, developing a module or FAST stage change, or preparing a branch for a pull request.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[964,967,970,973,974],{"name":965,"slug":966,"type":16},"Automation","automation",{"name":968,"slug":969,"type":16},"Engineering","engineering",{"name":971,"slug":972,"type":16},"GitHub","github",{"name":9,"slug":8,"type":16},{"name":975,"slug":976,"type":16},"Pull Requests","pull-requests",2062,"https:\u002F\u002Fgithub.com\u002FGoogleCloudPlatform\u002Fcloud-foundation-fabric","2026-07-31T06:23:36.935005",{"slug":981,"name":981,"fn":982,"description":983,"org":984,"tags":985,"stars":977,"repoUrl":978,"updatedAt":993},"fabric-builder","generate Terraform code for Google Cloud","Generates idiomatic Cloud Foundation Fabric (CFF) Terraform code using CFF modules. Use when users ask to create GCP resources, use Fabric modules, or generate Terraform code for Google Cloud.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[986,987,990],{"name":9,"slug":8,"type":16},{"name":988,"slug":989,"type":16},"Infrastructure as Code","infrastructure-as-code",{"name":991,"slug":992,"type":16},"Terraform","terraform","2026-07-12T07:38:23.514555",{"slug":995,"name":995,"fn":996,"description":997,"org":998,"tags":999,"stars":977,"repoUrl":978,"updatedAt":1004},"fast-0-org-setup-prereqs","prepare prerequisites for FAST 0-org-setup","Guides the user step-by-step through the prerequisites for the FAST 0-org-setup stage, supporting both Standard GCP and Google Cloud Dedicated (GCD) environments. Use when a user asks to prepare or run prerequisites for 0-org-setup or bootstrap the FAST landing zone.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1000,1001],{"name":9,"slug":8,"type":16},{"name":1002,"slug":1003,"type":16},"Operations","operations","2026-07-12T07:38:28.127148",{"slug":1006,"name":1006,"fn":1007,"description":1008,"org":1009,"tags":1010,"stars":1016,"repoUrl":1017,"updatedAt":1018},"agent-aware-cli","design agent-aware command-line interfaces","Guide for designing and implementing command-line interfaces (CLIs) that are equally usable by human developers and automated coding agents. Use when the user wants to build a CLI, apply CLI best practices, or use Go with Cobra and Viper.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1011,1014,1015],{"name":1012,"slug":1013,"type":16},"CLI","cli",{"name":968,"slug":969,"type":16},{"name":9,"slug":8,"type":16},1150,"https:\u002F\u002Fgithub.com\u002FGoogleCloudPlatform\u002Fvertex-ai-creative-studio","2026-07-12T07:39:08.41406",{"slug":1020,"name":1020,"fn":1021,"description":1022,"org":1023,"tags":1024,"stars":1016,"repoUrl":1017,"updatedAt":1035},"build-mcp-genmedia","build and configure GenAI MCP servers","Builds the mcp-genmedia Go MCP servers (nanobanana, veo, lyria, gemini-multimodal, chirp3-hd, avtool) from source and wires them into settings.json. Use this skill whenever the MCP tools are missing or broken — typically at the start of a new session, after a container restart, or when \u002Ftmp has been wiped. The prebuilt binaries in \u002Fworkspace\u002F.local\u002Fbin\u002F have no exec bit and live on a noexec mount; this skill compiles fresh executables into \u002Ftmp\u002Fbin\u002F where execution is allowed.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1025,1028,1029,1032],{"name":1026,"slug":1027,"type":16},"API Development","api-development",{"name":9,"slug":8,"type":16},{"name":1030,"slug":1031,"type":16},"LLM","llm",{"name":1033,"slug":1034,"type":16},"MCP","mcp","2026-07-12T07:39:10.911302",{"slug":1037,"name":1037,"fn":1038,"description":1039,"org":1040,"tags":1041,"stars":1016,"repoUrl":1017,"updatedAt":1052},"genmedia-audio-engineer","synthesize and mix audio content","Expert in audio synthesis, music generation, and mixing. Use when creating podcasts, background scores, or multi-track audio layering using mcp-chirp3-go, mcp-lyria-go, mcp-gemini-go, mcp-nanobanana-go, and mcp-avtool-go.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1042,1045,1048,1049],{"name":1043,"slug":1044,"type":16},"Audio","audio",{"name":1046,"slug":1047,"type":16},"Creative","creative",{"name":9,"slug":8,"type":16},{"name":1050,"slug":1051,"type":16},"Vertex AI","vertex-ai","2026-07-12T07:39:16.623879",{"slug":1054,"name":1054,"fn":1055,"description":1056,"org":1057,"tags":1058,"stars":1016,"repoUrl":1017,"updatedAt":1065},"genmedia-image-artist","generate and edit AI images","Expert in AI image generation and editing. Use when the user needs high-quality textures, character-consistent visuals, or image-to-image editing using mcp-nanobanana-go.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1059,1060,1061,1064],{"name":1046,"slug":1047,"type":16},{"name":9,"slug":8,"type":16},{"name":1062,"slug":1063,"type":16},"Image Generation","image-generation",{"name":1050,"slug":1051,"type":16},"2026-07-12T07:39:15.372822",{"slug":1067,"name":1067,"fn":1068,"description":1069,"org":1070,"tags":1071,"stars":1016,"repoUrl":1017,"updatedAt":1081},"genmedia-producer","produce multi-step media content","Expert media production assistant. Use when requested to help with storyboarding, podcast creation, audio assembly, or complex multi-step media workflows using the GenMedia MCP servers (Veo, Lyria, Gemini TTS, NanoBanana).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1072,1073,1074,1075,1078],{"name":1043,"slug":1044,"type":16},{"name":1046,"slug":1047,"type":16},{"name":9,"slug":8,"type":16},{"name":1076,"slug":1077,"type":16},"Media","media",{"name":1079,"slug":1080,"type":16},"Video","video","2026-07-12T07:39:09.672849",{"slug":1083,"name":1083,"fn":1084,"description":1085,"org":1086,"tags":1087,"stars":1016,"repoUrl":1017,"updatedAt":1091},"genmedia-video-editor","edit and compose video content","Expert in video composition, editing, and format conversion. Use when the user wants to generate high-quality video, overlay images on video, concatenate clips, create GIFs, or sync audio to video using mcp-avtool-go and mcp-veo-go.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1088,1089,1090],{"name":1046,"slug":1047,"type":16},{"name":9,"slug":8,"type":16},{"name":1079,"slug":1080,"type":16},"2026-07-12T07:39:13.749081",{"slug":1093,"name":1093,"fn":1094,"description":1095,"org":1096,"tags":1097,"stars":1016,"repoUrl":1017,"updatedAt":1109},"genmedia-voice-director","generate expressive text-to-speech with Gemini","Expert in casting, directing, and generating expressive text-to-speech using Gemini TTS. Use this when the user needs virtual voice actor personas, expressive speech generation, or multiple variations of a voiceover (like \"take 3 on the bounce\").",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1098,1099,1100,1103,1106],{"name":1043,"slug":1044,"type":16},{"name":1046,"slug":1047,"type":16},{"name":1101,"slug":1102,"type":16},"Gemini","gemini",{"name":1104,"slug":1105,"type":16},"Speech","speech",{"name":1107,"slug":1108,"type":16},"Text-to-Speech","text-to-speech","2026-07-12T07:39:17.86673",80,{"items":1112,"total":1202},[1113,1125,1140,1151,1164,1175,1191],{"slug":1114,"name":1114,"fn":1115,"description":1116,"org":1117,"tags":1118,"stars":24,"repoUrl":25,"updatedAt":1124},"custom-golden-image-discovery","discover golden base images for GKE nodes","Expert at discovering golden base images for GKE custom nodes using technical specs or context clues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1119,1122,1123],{"name":1120,"slug":1121,"type":16},"Deployment","deployment",{"name":9,"slug":8,"type":16},{"name":21,"slug":22,"type":16},"2026-07-12T07:39:30.888879",{"slug":1126,"name":1126,"fn":1127,"description":1128,"org":1129,"tags":1130,"stars":24,"repoUrl":25,"updatedAt":1139},"gke-ai-troubleshooting-handle-disruption-gpu-tpu","diagnose GPU and TPU workload disruptions","Diagnose and predict node disruption during Compute Engine host maintenance for GPU and TPU workloads.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1131,1134,1135,1136],{"name":1132,"slug":1133,"type":16},"Debugging","debugging",{"name":9,"slug":8,"type":16},{"name":21,"slug":22,"type":16},{"name":1137,"slug":1138,"type":16},"Performance","performance","2026-07-28T05:34:18.149515",{"slug":1141,"name":1141,"fn":1142,"description":1143,"org":1144,"tags":1145,"stars":24,"repoUrl":25,"updatedAt":1150},"gke-ai-troubleshooting-jobset-interruption","diagnose GKE JobSet interruptions","Systematically diagnose GKE JobSet interruptions, restarts, and preemptions for AI\u002FML training workloads. Identifies preemption events, maintenance interruptions, bad host VMs, unhealthy pods, and coordinator worker failures.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1146,1147,1148,1149],{"name":1132,"slug":1133,"type":16},{"name":9,"slug":8,"type":16},{"name":21,"slug":22,"type":16},{"name":14,"slug":15,"type":16},"2026-07-12T07:40:04.511878",{"slug":1152,"name":1152,"fn":1153,"description":1154,"org":1155,"tags":1156,"stars":24,"repoUrl":25,"updatedAt":1163},"gke-ai-troubleshooting-skill-creation-guide","create GKE troubleshooting skill bundles","Expert instructions for building high-quality GKE troubleshooting skills. Codifies Step 0 context rules, zero-hallucination signatures, and explicit LQL\u002FPromQL query requirements.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1157,1158,1159,1160],{"name":931,"slug":932,"type":16},{"name":968,"slug":969,"type":16},{"name":9,"slug":8,"type":16},{"name":1161,"slug":1162,"type":16},"Technical Writing","technical-writing","2026-07-12T07:39:50.73484",{"slug":1165,"name":1165,"fn":1166,"description":1167,"org":1168,"tags":1169,"stars":24,"repoUrl":25,"updatedAt":1174},"gke-ai-troubleshooting-tpu-connection-failure-vbar-oom","diagnose GKE TPU connection failures","Diagnose and prevent `vbar_control_agent` segfaults and OOMs caused by race conditions during TPU device resets and frequent metrics collection (e.g. every 3s). Use when TPU slice initialization fails or `vbar_control_agent` crashes on TPU v6e nodes.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1170,1171,1172,1173],{"name":1132,"slug":1133,"type":16},{"name":9,"slug":8,"type":16},{"name":21,"slug":22,"type":16},{"name":1137,"slug":1138,"type":16},"2026-07-12T07:39:49.482979",{"slug":1176,"name":1176,"fn":1177,"description":1178,"org":1179,"tags":1180,"stars":24,"repoUrl":25,"updatedAt":1190},"gke-app-onboarding","containerize and deploy apps to GKE","Workflows for containerizing and deploying applications to GKE for the first time.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1181,1184,1185,1186,1187],{"name":1182,"slug":1183,"type":16},"Containers","containers",{"name":1120,"slug":1121,"type":16},{"name":9,"slug":8,"type":16},{"name":21,"slug":22,"type":16},{"name":1188,"slug":1189,"type":16},"Onboarding","onboarding","2026-07-12T07:39:41.935837",{"slug":1192,"name":1192,"fn":1193,"description":1194,"org":1195,"tags":1196,"stars":24,"repoUrl":25,"updatedAt":1201},"gke-backup-dr","configure GKE backup and disaster recovery","Workflows for configuring Backup for GKE and disaster recovery.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1197,1198,1199,1200],{"name":1120,"slug":1121,"type":16},{"name":9,"slug":8,"type":16},{"name":21,"slug":22,"type":16},{"name":1002,"slug":1003,"type":16},"2026-07-12T07:39:34.806995",25]