# 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](https://opentelemetry.io/docs/kubernetes/helm/collector/).

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. |

```console
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
```

Copied!

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](https://docs.kloudfuse.com/platform/3.5.0/protocol-configure/).

Add any `tolerations` and `affinity` as required by your deployment.

```yaml
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.

```console
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
helm repo update
```

Copied!

2. Install the `otel` collector.

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

Copied!
