{{- if .Values.logIngest.enabled }} apiVersion: opentelemetry.io/v1beta1 kind: OpenTelemetryCollector metadata: name: {{ .Release.Name }}-opentelemetry-collector namespace: {{ .Release.Namespace }} spec: mode: sidecar image: ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-contrib:latest serviceAccount: "{{ .Release.Name }}-otel-collector" volumeMounts: - name: app-logs mountPath: {{ .Values.logIngest.logPath }} securityContext: allowPrivilegeEscalation: true privileged: true runAsUser: 0 runAsGroup: 0 env: - name: KUBE_META_POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: KUBE_META_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: KUBE_META_NODE_NAME valueFrom: fieldRef: fieldPath: spec.nodeName - name: KUBE_META_POD_IP valueFrom: fieldRef: fieldPath: status.podIP - name: KUBE_META_POD_UID valueFrom: fieldRef: fieldPath: metadata.uid - name: KUBE_META_OBJECT_NAME valueFrom: fieldRef: fieldPath: metadata.labels['app.kubernetes.io/instance'] config: receivers: filelog: include: - {{ .Values.logIngest.logPathPattern }} start_at: end include_file_path: false include_file_name: false operators: [] processors: resource: attributes: - action: insert key: k8s.node.name value: ${KUBE_META_NODE_NAME} - action: insert key: k8s.pod.name value: ${KUBE_META_POD_NAME} - action: insert key: k8s.pod.ip value: ${KUBE_META_POD_IP} - action: insert key: k8s.pod.uid value: ${KUBE_META_POD_UID} - action: insert key: k8s.namespace.name value: ${KUBE_META_NAMESPACE} - action: insert key: k8s.deployment.name value: ${KUBE_META_OBJECT_NAME} transform: log_statements: - context: log statements: - set(resource.attributes["application"], log.attributes["context"]["app"]) - set(resource.attributes["environment"], log.attributes["context"]["env"]) - set(resource.attributes["kubernetes_node_name"], resource.attributes["k8s.node.name"]) - set(resource.attributes["kubernetes_pod_name"], resource.attributes["k8s.pod.name"]) - set(resource.attributes["kubernetes_pod_ip"], resource.attributes["k8s.pod.ip"]) - set(resource.attributes["kubernetes_deployment_name"], resource.attributes["k8s.deployment.name"]) - set(resource.attributes["kubernetes_namespace"], resource.attributes["k8s.namespace.name"]) batch: send_batch_size: 5 timeout: 10s exporters: otlphttp/logs: endpoint: {{ .Values.logIngest.lokiEndpoint }}/otlp tls: insecure: true service: telemetry: logs: level: info pipelines: logs: receivers: [filelog] processors: [resource, transform, batch] exporters: [otlphttp/logs] {{- end }}