Skip to content

Toolbox of recipes, samples, and guides for using the OpenTelemetry Operator on Google Cloud

License

Notifications You must be signed in to change notification settings

GoogleCloudPlatform/opentelemetry-operator-sample

Repository files navigation

OpenTelemetry Operator Sample

This repo hosts samples for working with the OpenTelemetry Operator on GCP.

Running the Operator

Prerequisites

For GKE Autopilot, install cert-manager with the following Helm commands:

helm repo add jetstack https://charts.jetstack.io
helm repo update
helm install \
  --create-namespace \
  --namespace cert-manager \
  --set installCRDs=true \
  --set global.leaderElection.namespace=cert-manager \
  --set extraArgs={--issuer-ambient-credentials=true} \
  cert-manager jetstack/cert-manager

Firewall rules

By default, private GKE clusters may not allow the necessary ports for cert-manager to work, resulting in an error like the following:

Error from server (InternalError): error when creating "collector-config.yaml": Internal error occurred: failed calling webhook "mopentelemetrycollector.kb.io": failed to call webhook: Post "https://opentelemetry-operator-webhook-service.opentelemetry-operator-system.svc:443/mutate-opentelemetry-io-v1alpha1-opentelemetrycollector?timeout=10s": context deadline exceeded

To fix this, create a firewall rule for your cluster with the following command:

gcloud compute firewall-rules create cert-manager-9443 \
  --source-ranges ${GKE_MASTER_CIDR} \
  --target-tags ${GKE_MASTER_TAG}  \
  --allow TCP:9443

$GKE_MASTER_CIDR and $GKE_MASTER_TAG can be found by following the steps in the firewall docs listed above.

Installing the OpenTelemetry Operator

Install the the Operator with:

kubectl apply -f https://github.com/open-telemetry/opentelemetry-operator/releases/download/v0.112.0/opentelemetry-operator.yaml

Starting the Collector

Set up an instance of the OpenTelemetry Collector by creating an OpenTelemetryCollector object. The one in this repo sets up a basic OTLP receiver and logging exporter:

kubectl apply -f collector-config.yaml

Auto-instrumenting Applications

The Operator offers auto-instrumentation of application pods by adding an annotation to the Pod spec.

First, create an Instrumentation Custom Resource that contains the settings for the instrumentation. We have provided a sample resource in instrumentation.yaml:

kubectl apply -f instrumentation.yaml

With a Collector and auto-instrumentation set up, you can experiment with it using one of the sample applications, or skip right to the recipes if you already have an application running.

Sample Applications

The sample-apps/ folder contains basic apps to demonstrate collecting traces with the operator in various languages:

Each of these sample apps works well with the recipes listed below.

Recipes

The recipes directory holds different sample use cases for working with the operator and auto-instrumentation along with setup guides for each recipe. Currently there are:

Contributing

See CONTRIBUTING.md for details.

License

Apache 2.0; see LICENSE for details.

About

Toolbox of recipes, samples, and guides for using the OpenTelemetry Operator on Google Cloud

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published