--- apiVersion: opentelemetry.io/v1beta1 kind: OpenTelemetryCollector metadata: name: otel-collector-logs namespace: otel-lgtm-stack spec: config: exporters: debug: verbosity: detailed otlp: endpoint: http://lgtm-stack.otel-lgtm-stack.svc.cluster.local:4317 tls: insecure: true otlphttp/ops-loki: auth: authenticator: basicauth/loki-tenant endpoint: http://otel-collector-log-proxy.headscale.svc.cluster.local:80/otlp headers: X-Scope-OrgID: loki-tenant-cluster-name tls: insecure: true extensions: basicauth/loki-tenant: client_auth: password: loki-tenant-demo-password username: loki_tenant_demo processors: attributes: actions: - action: insert key: k8s_cluster_name value: cluster-name batch: send_batch_size: 2000 timeout: 10s k8sattributes: auth_type: serviceAccount extract: labels: - from: pod key: app.kubernetes.io/name tag_name: service.name - from: pod key: k8s-app tag_name: service.name - from: pod key: app.kubernetes.io/instance tag_name: k8s.app.instance - from: pod key: app.kubernetes.io/version tag_name: service.version - from: pod key: app.kubernetes.io/component tag_name: k8s.app.component - from: pod key: airm.silogen.ai/component-id tag_name: component.id - from: pod key: airm.silogen.ai/workload-id tag_name: workload.id metadata: - k8s.namespace.name - k8s.pod.name - k8s.pod.uid - k8s.node.name - k8s.pod.start_time - k8s.deployment.name - k8s.replicaset.name - k8s.replicaset.uid - k8s.daemonset.name - k8s.daemonset.uid - k8s.job.name - k8s.job.uid - k8s.container.name - k8s.cronjob.name - k8s.statefulset.name - k8s.statefulset.uid - container.image.tag - container.image.name - k8s.cluster.uid passthrough: false pod_association: - sources: - from: resource_attribute name: k8s.pod.uid - sources: - from: resource_attribute name: k8s.pod.name - from: resource_attribute name: k8s.namespace.name - from: resource_attribute name: k8s.node.name - sources: - from: resource_attribute name: k8s.pod.ip - sources: - from: resource_attribute name: k8s.pod.name - from: resource_attribute name: k8s.namespace.name - sources: - from: connection resourcedetection: detectors: - env override: true timeout: 2s transform: error_mode: ignore log_statements: - context: log statements: - set(resource.attributes["k8s.cluster.name"], attributes["k8s.cluster.name"]) - set(resource.attributes["component.id"], attributes["component.id"]) - set(resource.attributes["workload.id"], attributes["workload.id"]) receivers: filelog/std: exclude: - /var/log/pods/*/otel-collector/*.log - /var/log/pods/*/otc-container/*.log - /var/log/pods/*/openobserve-ingester/*.log include: - /var/log/pods/*/*/*.log include_file_name: false include_file_path: true operators: - id: get-format routes: - expr: body matches "^\\{" output: parser-docker - expr: body matches "^[^ Z]+ " output: parser-crio - expr: body matches "^[^ Z]+Z" output: parser-containerd type: router - id: parser-crio output: extract_metadata_from_filepath regex: ^(?P