python-micrometer-gcp-cloud-monitoring

📁 dawiddutoit/custom-claude 📅 Jan 23, 2026
4
总安装量
4
周安装量
#51924
全站排名
安装命令
npx skills add https://github.com/dawiddutoit/custom-claude --skill python-micrometer-gcp-cloud-monitoring

Agent 安装分布

opencode 4
gemini-cli 4
claude-code 4
codex 4
mcpjam 3
kilo 3

Skill 文档

Micrometer GCP Cloud Monitoring Integration

Quick Start

Export metrics to Cloud Monitoring in 3 steps:

1. Add dependencies:

<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-stackdriver</artifactId>
</dependency>
<dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>spring-cloud-gcp-starter-metrics</artifactId>
</dependency>

2. Configure export:

management:
  metrics:
    export:
      stackdriver:
        enabled: true
        project-id: ${GCP_PROJECT_ID}
        resource-type: k8s_container
        step: 1m
        resource-labels:
          cluster_name: ${GKE_CLUSTER_NAME}
          namespace_name: ${NAMESPACE}
          pod_name: ${POD_NAME}

3. Grant IAM permission:

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="serviceAccount:SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com" \
  --role="roles/monitoring.metricWriter"

See references/workload-identity-setup.md for complete Workload Identity setup.

Table of Contents

  1. When to Use
  2. Configuration
  3. Testing
  4. Supporting Files
  5. Requirements
  6. Anti-Patterns

When to Use

Use this skill when you need to:

  • Export metrics to GCP Cloud Monitoring for GKE deployments
  • Configure Workload Identity for secure pod authentication
  • Set resource labels for filtering in Cloud Console
  • Correlate metrics with GKE, Pub/Sub, Cloud SQL services
  • Create dashboards and alerts in Cloud Monitoring

When NOT to use:

  • Prometheus-only environments (use Prometheus registry)
  • Before basic Micrometer setup (use python-micrometer-metrics-setup)
  • Local development (use Prometheus locally)
  • Without Workload Identity (requires GKE 1.12+)

Configuration

Basic Configuration

# application.yml
management:
  metrics:
    export:
      stackdriver:
        enabled: ${STACKDRIVER_ENABLED:true}
        project-id: ${GCP_PROJECT_ID}
        step: 1m  # Export frequency
        resource-type: k8s_container  # GKE resource type

        # Resource labels (appear on every metric)
        resource-labels:
          cluster_name: ${GKE_CLUSTER_NAME}
          namespace_name: ${NAMESPACE}
          pod_name: ${POD_NAME}
          container_name: ${CONTAINER_NAME:app}
          environment: ${ENVIRONMENT:production}
          region: ${GCP_REGION:europe-west2}

    # Common tags (filterable in queries)
    tags:
      application: ${spring.application.name}
      version: ${BUILD_VERSION:unknown}

    # Histogram buckets for latency metrics
    distribution:
      percentiles-histogram:
        http.server.requests: true
      slo:
        http.server.requests: 10ms,50ms,100ms,200ms,500ms,1s,2s,5s

Kubernetes Deployment Environment Variables

# deployment.yaml
env:
  - name: GCP_PROJECT_ID
    value: "my-project"
  - name: GKE_CLUSTER_NAME
    value: "my-cluster"
  - name: NAMESPACE
    valueFrom:
      fieldRef:
        fieldPath: metadata.namespace
  - name: POD_NAME
    valueFrom:
      fieldRef:
        fieldPath: metadata.name
  - name: CONTAINER_NAME
    value: "app"

Custom Metric Configuration

@Configuration
public class CloudMonitoringConfig {

    @Bean
    public MeterRegistryCustomizer<MeterRegistry> commonTags() {
        return registry -> registry.config().commonTags(
            "service", "my-api",
            "component", "backend"
        );
    }
}

Testing

Verify Export in Logs

# Check pod logs for metric export success
kubectl logs -f deployment/my-api -n my-namespace

# Look for: "Successfully published X metrics to Stackdriver"

Query Metrics via CLI

# List exported metrics
gcloud monitoring metrics-descriptors list \
  --filter="metric.type:custom.googleapis.com"

View in Cloud Console

  1. Open GCP Console → Cloud Monitoring → Metrics Explorer
  2. Select resource: “Kubernetes Container”
  3. Filter by cluster
  4. View metric: custom.googleapis.com/…

Supporting Files

File Purpose
references/workload-identity-setup.md Complete Workload Identity configuration guide
references/dashboards-and-alerting.md Create dashboards and alert policies with Terraform

Requirements

  • Spring Boot 2.1+ with Actuator
  • micrometer-registry-stackdriver dependency
  • GCP Project with Cloud Monitoring API enabled
  • GKE cluster with Workload Identity enabled
  • IAM role: roles/monitoring.metricWriter
  • Java 11+

Anti-Patterns

# ❌ Missing resource labels (hard to filter)
resource-labels:
  environment: production

# ✅ Complete resource labels
resource-labels:
  cluster_name: my-cluster
  namespace_name: my-namespace
  pod_name: ${POD_NAME}

# ❌ High cardinality resource labels (memory issues)
resource-labels:
  pod_ip: ${POD_IP}       # Changes constantly
  user_id: ${USER_ID}     # Unbounded

# ✅ Stable, bounded labels
resource-labels:
  cluster_name: my-cluster
  environment: production

See Also