open-telemetry/opentelemetry-operator

Kubernetes Operator for OpenTelemetry Collector

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 34 minutes ago
Added to GitGenius on April 2nd, 2023
Created on December 18th, 2019
Open Issues & Pull Requests: 317 (-1)
Number of forks: 651
Total Stargazers: 1,747 (+0)
Total Subscribers: 29 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 41.0 hours
Mean response time: 85.5 days
90th percentile: 358.8 days
Tracked items: 823

How this project is maintained

Around half of the issues opened in the past year never receive a reply. 83% of open issues come from outside the core team, so the backlog reflects real-world use rather than internal planning. 45% of tracked open issues have had no activity in three months. Only 5% of issues opened in the past year have been closed. Three people close 77% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 248
New in 7 days: 7
Closed in 7 days: 5
Avg open age: 485 days
Stale 30+ days: 226
Stale 90+ days: 204

Recent activity

Opened in 7 days: 7
Closed in 7 days: 5
Comments in 7 days: 18
Events in 7 days: 47

Top labels

  • bug (309)
  • enhancement (278)
  • needs triage (242)
  • area:collector (144)
  • area:target-allocator (122)
  • area:auto-instrumentation (120)
  • help wanted (57)
  • question (56)

Detailed Description

The OpenTelemetry Operator is a Kubernetes Operator implementation written in Go that manages OpenTelemetry Collector deployments and auto-instrumentation of workloads within Kubernetes clusters. It extends Kubernetes functionality to provide native support for observability infrastructure, enabling organizations to collect, process, and export telemetry data from their containerized applications.

The operator's primary responsibilities include managing OpenTelemetry Collector instances and handling automatic instrumentation of workloads using OpenTelemetry instrumentation libraries. The operator examines configuration files to discover configured receivers and their ports, automatically creating Kubernetes services to expose those ports within the cluster. It also manages observability features by creating Service and ServiceMonitor or PodMonitor resources when metrics collection is enabled through the spec.observability.metrics.enableMetrics setting.

The operator supports multiple deployment modes for the OpenTelemetry Collector, allowing users to run collectors as DaemonSets, Sidecars, StatefulSets, or Deployments depending on their infrastructure requirements. For sidecar injection, users can annotate pods or namespaces with sidecar.opentelemetry.io/inject to automatically inject collector sidecars, with the annotation supporting concrete instance names, namespace-scoped defaults, and cross-namespace references. When using sidecar mode, the operator automatically sets the OTEL_RESOURCE_ATTRIBUTES environment variable with Kubernetes resource attributes for consumption by resource detection processors.

Auto-instrumentation support extends across multiple programming languages and platforms, including Apache HTTPD, DotNet, Go, Java, Nginx, NodeJS, and Python. Users configure an Instrumentation custom resource with SDK and instrumentation settings, which the operator then injects into workloads. The operator automatically manages propagators and sampler configuration through environment variables, following OpenTelemetry specifications for OTEL_PROPAGATORS, OTEL_TRACES_SAMPLER, and OTEL_TRACES_SAMPLER_ARG.

The operator includes upgrade management capabilities, allowing users to control whether OpenTelemetryCollector resources should be automatically upgraded or remain static. This is particularly useful when resources use custom images where users prefer manual configuration management. The default upgrade strategy is automatic, with an alternative none strategy available on a per-resource basis.

Installation is facilitated through Helm Charts available in the opentelemetry-helm-charts repository, with cert-manager as a prerequisite dependency. The operator requires specific firewall configuration for private GKE clusters, necessitating access to port 9443/tcp on worker nodes for master node communication.

The most active labels are bug with 278 items, enhancement with 248 items, and needs triage with 205 items. The repository shares contributors with github/gh-aw, solo-io/gloo, and longhorn/longhorn, indicating cross-project collaboration within the cloud-native ecosystem.