GitHub user pavelekshin added a comment to the discussion: Airflow 2.10.X and standalone OpenTelemetry Collector integration
I get packet capture, and it's seems like airflow send binary protobuf body with application/json header, and reicive 400 bad request on this body. it's should be application/x-protobuf, but content type is hardcoded https://github.com/apache/airflow/blob/2.10.5/airflow/metrics/otel_logger.py#L410 ```logs POST /v1/metrics HTTP/1.1 Host: otel-collector:4318 User-Agent: OTel-OTLP-Exporter-Python/1.40.0 Accept-Encoding: gzip, deflate Accept: */* Connection: keep-alive Content-Type: application/json Content-Length: 3275 .. .. " .telemetry.sdk.language.. .python % .telemetry.sdk.name.. opentelemetry ! .telemetry.sdk.version.. .1.40.0 . host.name.. .96fb917f9fba . .service.name. .Airflow... . .airflow.metrics.otel_logger.6 .airflow.job_start:! .. &.NK....z..Ag...1.............X 3airflow.dag_processing.file_path_queue_update_count:! ..,/.WK....z..Ag...1.............. airflow.dag_processing.processes:. ~.<..WK....z..Ag...1........:N file_path.A ?/usr/local/ECO/airflow/dags/maintenance/temp_cleanup_logs.py:. .action.. .start y..ZRXK....z..Ag...1........:I file_path.< :/usr/local/ECO/airflow/dags/maintenance/cleanup_logs.py:. .action.. .start t..=.YK....z..Ag...1........:D file_path.7 5/usr/local/ECO/airflow/dags/maintenance/migrate.py:. .action.. .start .....gZK....z..Ag...1........:Q file_path.D B/usr/local/ECO/airflow/dags/maintenance/cleanup_target_group.py:. .action.. .start ..vw.]K....z..Ag...1........:N file_path.A ?/usr/local/ECO/airflow/dags/maintenance/temp_cleanup_logs.py:. .action.. .finish {..%.]K....z..Ag...1........:K file_path.> </usr/local/ECO/airflow/dags/maintenance/load_variables.py:. .action.. .start z....^K....z..Ag...1........:I file_path.< :/usr/local/ECO/airflow/dags/maintenance/cleanup_logs.py:. .action.. .finish u..]R^K....z..Ag...1........:D file_path.7 5/usr/local/ECO/airflow/dags/maintenance/migrate.py:. .action.. .finish |.._.bK....z..Ag...1........:K file_path.> </usr/local/ECO/airflow/dags/maintenance/load_variables.py:. .action.. .finish .....%bK....z..Ag...1........:Q file_path.D B/usr/local/ECO/airflow/dags/maintenance/cleanup_target_group.py:. .action.. .finish...6 .airflow.serde.load_serializers*. ..z..Ag...!.....oR?.C +airflow.dag_processing.file_path_queue_size*. ..z..Ag...!.........W ?airflow.dag_processing.last_num_of_db_queries.temp_cleanup_logs*. ..z..Ag...1.........R :airflow.dag_processing.last_num_of_db_queries.cleanup_logs*. ..z..Ag...1.........M 5airflow.dag_processing.last_num_of_db_queries.migrate*. ..z..Ag...1 ........W ?airflow.dag_processing.last_num_of_db_queries.cleanup_target_gr*. ..z..Ag...1.........T <airflow.dag_processing.last_num_of_db_queries.load_variables*. ..z..Ag...1 ........N 6airflow.dag_processing.last_duration.temp_cleanup_logs*. ..z..Ag...!.J..h..?.^ $airflow.dag_processing.last_duration*6 4.z..Ag...!.J..h..?: file_name.. .temp_cleanup_logs.I 1airflow.dag_processing.last_duration.cleanup_logs*. ..z..Ag...!J ..z..?.? 'airflow.dag_processing.total_parse_time*. ..z..Ag...!..`.b..?.+ .airflow.dagbag_size*. ..z..Ag...1.........< $airflow.dag_processing.import_errors*. ..z..Ag...!.........D ,airflow.dag_processing.last_duration.migrate*. ..z..Ag...!.. ..=.?.K 3airflow.dag_processing.last_duration.load_variables*. ..z..Ag...!..!r.z.?.Q 9airflow.dag_processing.last_duration.cleanup_target_group*. ..z..Ag...![.a/...?.U =airflow.dag_processing.last_run.seconds_ago.temp_cleanup_logs*. ..z..Ag...!.X..C-"@.P 8airflow.dag_processing.last_run.seconds_ago.cleanup_logs*. ..z..Ag...!...K.*"@.K 3airflow.dag_processing.last_run.seconds_ago.migrate*. ..z..Ag...!.U.q70"@.W ?airflow.dag_processing.last_run.seconds_ago.cleanup_target_grou*. ..z..Ag...!.f...&"@.R :airflow.dag_processing.last_run.seconds_ago.load_variables*. ..z..Ag...!S..c$."@HTTP/1.1 400 Bad Request Content-Type: application/json Date: Tue, 17 Mar 2026 15:08:09 GMT Content-Length: 276 {"code":3,"message":"ReadObjectCB: expect { or n, but found \ufffd, error found in #2 byte of ...|\n\ufffd\u0019\n\ufffd\u0001\n\"\n\u0016te|..., bigger context ...|\n\ufffd\u0019\n\ufffd\u0001\n\"\n\u0016telemetry.sdk.language\u0012\u0008\n\u0006python\n%\n\u0012teleme|..."}POST /v1/metrics HTTP/1.1 Host: otel-collector:4318 User-Agent: OTel-OTLP-Exporter-Python/1.40.0 Accept-Encoding: gzip, deflate Accept: */* Connection: keep-alive Content-Type: application/json Content-Length: 3275 GitHub link: https://github.com/apache/airflow/discussions/63808#discussioncomment-16179931 ---- This is an automatically sent email for [email protected]. To unsubscribe, please send an email to: [email protected]
