--- apiVersion: v1 kind: ConfigMap metadata: name: otel-agent-conf namespace: tracing labels: app: opentelemetry component: otel-agent-conf data: otel-agent-config: | receivers: otlp: protocols: grpc: http: exporters: otlp: endpoint: "otel-collector.tracing:4317" tls: insecure: true sending_queue: num_consumers: 20 queue_size: 10000 retry_on_failure: enabled: true loadbalancing: protocol: otlp: # all options from the OTLP exporter are supported # except the endpoint tls: insecure: true sending_queue: num_consumers: 20 queue_size: 10000 retry_on_failure: enabled: true resolver: dns: hostname: otel-collector.tracing port: 4317 processors: resource: attributes: - key: k8s.cluster.region value: "region-name" action: insert - key: k8s.cluster.name value: "cluster-name" action: insert - key: k8s.cluster.env value: "environment-name" action: insert # The resource detector injects the pod IP # to every metric so that the k8sattributes can # fetch information afterwards. resourcedetection: detectors: ["eks"] timeout: 5s override: true memory_limiter: check_interval: 1s limit_percentage: 50 spike_limit_percentage: 30 extensions: memory_ballast: size_in_percentage: 20 service: pipelines: traces/1: receivers: [otlp] processors: [memory_limiter, batch, resourcedetection, resource] exporters: [loadbalancing] --- apiVersion: apps/v1 kind: DaemonSet metadata: name: otel-agent namespace: tracing labels: app: opentelemetry component: otel-agent spec: selector: matchLabels: app: opentelemetry component: otel-agent template: metadata: annotations: prometheus.io/scrape: "true" prometheus.io/port: "8888" prometheus.io/path: "/metrics" labels: app: opentelemetry component: otel-agent spec: containers: - command: - "/otelcontribcol" - "--config=/conf/otel-agent-config.yaml" image: otel/opentelemetry-collector-contrib:0.37.1 name: otel-agent env: - name: POD_IP valueFrom: fieldRef: fieldPath: status.podIP # This is picked up by the resource detector - name: OTEL_RESOURCE value: "k8s.pod.ip=$(POD_IP)" resources: limits: cpu: 500m #TODO - adjust this to your own requirements memory: 500Mi #TODO - adjust this to your own requirements requests: cpu: 100m #TODO - adjust this to your own requirements memory: 100Mi #TODO - adjust this to your own requirements ports: - containerPort: 55680 # Default OpenTelemetry receiver port. hostPort: 55680 - containerPort: 4317 # New OpenTelemetry receiver port. hostPort: 4317 volumeMounts: - name: otel-agent-config-vol mountPath: /conf livenessProbe: httpGet: path: / port: 13133 # Health Check extension default port. readinessProbe: httpGet: path: / port: 13133 # Health Check extension default port. volumes: - configMap: name: otel-agent-conf items: - key: otel-agent-config path: otel-agent-config.yaml name: otel-agent-config-vol ---