python-micrometer-gcp-cloud-monitoring
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
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
- Open GCP Console â Cloud Monitoring â Metrics Explorer
- Select resource: “Kubernetes Container”
- Filter by cluster
- 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-stackdriverdependency- 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
- python-micrometer-cardinality-control – Manage metric cardinality
- python-micrometer-business-metrics – Create business metrics
- python-micrometer-metrics-setup – Initial Micrometer setup