extensions: health_check: endpoint: 0.0.0.0:13133 file_storage: directory: /var/lib/otelcol/queue timeout: 10s receivers: otlp: protocols: grpc: {endpoint: 0.0.0.0:4317} http: {endpoint: 0.0.0.0:4318} prometheus: config: scrape_configs: - job_name: otel-collector static_configs: - targets: ["127.0.0.1:8888"] - job_name: sms-service scrape_interval: 15s scrape_timeout: 10s metrics_path: /metrics static_configs: - targets: ["sms-service:8080"] labels: {service_name: sms-service} - job_name: sms-worker scrape_interval: 15s scrape_timeout: 10s metrics_path: /metrics static_configs: - targets: ["sms-worker:9464"] labels: {service_name: sms-worker} - job_name: keycloak scrape_interval: 30s scrape_timeout: 15s metrics_path: /auth/metrics static_configs: - targets: ["keycloak:9000"] labels: {service_name: keycloak} metric_relabel_configs: - action: keep source_labels: [__name__] regex: "(keycloak_.*|jvm_.*|process_.*|system_.*|agroal_.*)" - action: labeldrop regex: "(client_id|uri|session_id|user_id|phone|email)" processors: memory_limiter: check_interval: 1s limit_mib: 384 spike_limit_mib: 96 resource/common: attributes: - {key: service.namespace, value: han-chat, action: upsert} - {key: deployment.environment, value: "${env:APP_ENV}", action: upsert} - {key: service.version, value: "${env:RELEASE_VERSION}", action: upsert} attributes/redact: actions: - {key: http.request.header.authorization, action: delete} - {key: http.request.header.cookie, action: delete} - {key: http.response.header.set-cookie, action: delete} - {key: url.query, action: delete} - {key: url.full, action: delete} - {key: http.target, action: delete} - {key: http.request.body, action: delete} - {key: db.statement, action: delete} - {key: db.query.text, action: delete} - {key: enduser.id, action: delete} - {key: user.phone, action: delete} - {key: user.email, action: delete} - {key: messaging.message.body, action: delete} - {key: aws.s3.key, action: delete} - {key: s3.object.key, action: delete} filter/noise: error_mode: ignore traces: span: - 'attributes["http.route"] == "/health/live"' - 'attributes["http.route"] == "/nginx-health/live"' tail_sampling: decision_wait: 10s num_traces: 10000 expected_new_traces_per_sec: 50 policies: - name: errors type: status_code status_code: {status_codes: [ERROR]} - name: slow type: latency latency: {threshold_ms: 2000} - name: successful-sample type: probabilistic probabilistic: {sampling_percentage: 10} batch: timeout: 5s send_batch_size: 1024 send_batch_max_size: 2048 exporters: otlp/remote: endpoint: "${env:OTEL_REMOTE_ENDPOINT}" headers: authorization: ${file:/run/secrets/otel_remote_auth_header} tls: insecure: "${env:OTEL_REMOTE_TLS_INSECURE}" sending_queue: enabled: true num_consumers: 4 queue_size: 10000 storage: file_storage retry_on_failure: enabled: true initial_interval: 5s max_interval: 30s max_elapsed_time: 0s service: extensions: [health_check, file_storage] pipelines: traces: receivers: [otlp] processors: [memory_limiter, resource/common, attributes/redact, filter/noise, tail_sampling, batch] exporters: [otlp/remote] metrics: receivers: [otlp, prometheus] processors: [memory_limiter, resource/common, attributes/redact, batch] exporters: [otlp/remote] logs: receivers: [otlp] processors: [memory_limiter, resource/common, attributes/redact, batch] exporters: [otlp/remote] telemetry: metrics: address: 0.0.0.0:8888 level: normal