Skip to content

Files

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Apr 7, 2025
Mar 26, 2025
Feb 13, 2025
Jul 3, 2024
Mar 1, 2024
Jul 3, 2024
Jul 3, 2024
Jul 3, 2024
Jul 3, 2024
Apr 7, 2025
Apr 7, 2025
May 17, 2024
Mar 6, 2025
Dec 13, 2024

GCP Resource detector

The GCP resource detector supports detecting resources on:

  • Google Compute Engine (GCE)
  • Google Kubernetes Engine (GKE)
  • Google App Engine (GAE)
  • Cloud Run
  • Cloud Run jobs
  • Cloud Functions

Usage

ctx := context.Background()
// Detect your resources
res, err := resource.New(ctx,
    // Use the GCP resource detector!
    resource.WithDetectors(gcp.NewDetector()),
    // Keep the default detectors
    resource.WithTelemetrySDK(),
    // Add your own custom attributes to identify your application
    resource.WithAttributes(
        semconv.ServiceNameKey.String("my-application"),
        semconv.ServiceNamespaceKey.String("my-company-frontend-team"),
    ),
)
if err != nil {
    // Handle err
}
// Use the resource in your tracerprovider (or meterprovider)
tp := trace.NewTracerProvider(
    // ... other options
    trace.WithResource(res),
)

Setting Kubernetes attributes

Previous iterations of GCP resource detection attempted to detect container.name, k8s.pod.name and k8s.namespace.name. When using this detector, you should use this in your Pod Spec to set these using OTEL_RESOURCE_ATTRIBUTES:

env:
- name: POD_NAME
  valueFrom:
    fieldRef:
      fieldPath: metadata.name
- name: NAMESPACE_NAME
  valueFrom:
    fieldRef:
      fieldPath: metadata.namespace
- name: CONTAINER_NAME
  value: my-container-name
- name: OTEL_RESOURCE_ATTRIBUTES
  value: k8s.pod.name=$(POD_NAME),k8s.namespace.name=$(NAMESPACE_NAME),k8s.container.name=$(CONTAINER_NAME)

To have a detector unpack the OTEL_RESOURCE_ATTRIBUTES envvar, use the WithFromEnv option:

...
// Detect your resources
res, err := resource.New(ctx,
    resource.WithDetectors(gcp.NewDetector()),
    resource.WithTelemetrySDK(),
    resource.WithFromEnv(), // unpacks OTEL_RESOURCE_ATTRIBUTES
    // Add your own custom attributes to identify your application
    resource.WithAttributes(
        semconv.ServiceNameKey.String("my-application"),
        semconv.ServiceNamespaceKey.String("my-company-frontend-team"),
    ),
)
...