OpenTelemetry Traces Integration

Helm Installation

These instructions install the trace collector in daemonset mode.

For additional modes and more configuration options, see OpenTelemetry documentation for OpenTelemetry Collector Chart.

  1. Get the IP for the Kloudfuse endpoint.

    If the Kloudfuse stack installs with a DNS or VPC endpoint, use that address instead of the IP address.

    kubectl get svc -n kfuse | grep kfuse-ingress-nginx-controller-internal
    kfuse-ingress-nginx-controller-internal   LoadBalancer   10.53.250.80    10.53.232.3   80:32716/TCP,443:30767/TCP   125m
  2. Create a file otel-values.yaml that contains the following code.

    Use the IP address from the previous step. Note that tls.insecure is true, which is default. Replace the endpoint, and ensure that you use https or http correctly, depending on Kloudfuse stack TLS protocol settings. See Configure HTTPS and TLS on Kloudfuse.

    Add any tolerations and affinity as required by your deployment.

image:
  repository: "otel/opentelemetry-collector-contrib"

command:
  name: "otelcol-contrib"

config:
  exporters:
    logging:
      verbosity: basic
    otlphttp:
      tls:
        insecure: true # add only if you're using insecure communication
      metrics_endpoint: https://<REPLACE KFUSE ADDRESS>/ingester/otlp/metrics
      traces_endpoint: https://<REPLACE KFUSE ADDRESS>/ingester/otlp/traces
  extensions:
    health_check: {}
    memory_ballast:
      size_in_percentage: 40
  processors:
    batch:
      timeout: 10s
    memory_limiter:
      check_interval: 5s
      limit_percentage: 80
      spike_limit_percentage: 25
    resourcedetection:
      detectors:
        - env
        - eks
        - ec2
        - gcp
        - aks
        - azure
      override: false
      timeout: 2s
  receivers:
    otlp:
      protocols:
        grpc:
          endpoint: ${env:MY_POD_IP}:4317
        http:
          cors:
            allowed_origins:
              - http://*
              - https://*
          endpoint: 0.0.0.0:4318
  service:
    extensions:
      - health_check
      - memory_ballast
    pipelines:
      metrics:
        exporters:
          - logging
          - otlphttp
        processors:
          - memory_limiter
          - batch
          - resourcedetection
        receivers:
          - otlp
      traces:
        exporters:
          - otlphttp
        processors:
          - batch
          - resourcedetection
        receivers:
          - otlp
    telemetry:
      metrics:
        address: ${MY_POD_IP}:8888
mode: daemonset
nameOverride: otelcol
ports:
  metrics:
    enabled: true
  otlp:
    enabled: true
  otlp-http:
    enabled: true
presets:
  kubernetesAttributes:
    enabled: true
  1. Add otel repo, and update it.

    helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
    helm repo update
  2. Install the otel collector.

    helm install my-opentelemetry-collector open-telemetry/opentelemetry-collector -f otel-values.yaml