viktorvia opened a new issue #20804:
URL: https://github.com/apache/airflow/issues/20804


   ### Apache Airflow version
   
   2.2.2
   
   ### What happened
   
   When Airflow reports timing stats it uses either a `timedelta` or a direct 
value. When using `timedelta` it is converted automatically to the correct 
units of measurement but when using a direct value it is accepted to already be 
in the correct units.
   
   Unfortunately the Stats class, either being statsd.StatsClient or a stub, 
expects *milliseconds* while the Airflow code passes the value in *seconds*.
   
   The result is two of the timing metrics are wrong by a magnitude of 1000.
   
   This affects `dag_processing.last_duration.<dag_file>` and 
`smart_sensor_operator.loop_duration`.
   
   The rest either pass `timedelta` or use a `Stats.timer` which calculates 
timing on its own and is not affected.
   
   ### What you expected to happen
   
   All timing metrics to be in the correct unit of measurement.
   
   ### How to reproduce
   
   Run a statsd-exporter and a prometheus to collect the metrics and compare to 
the logs.
   
   For the dag processing metric, the scheduler logs the amounts and can be 
directly compared to the gathered metric.
   
   ### Operating System
   
   Linux
   
   ### Versions of Apache Airflow Providers
   
   _No response_
   
   ### Deployment
   
   Docker-Compose
   
   ### Deployment details
   
   Using these two with the configs below to process the metrics. The metrics 
can be viewed in the prometheus UI on `localhost:9090`.
   
   ```
      prometheus:
           image: prom/prometheus:v2.32.1
           command:
               - --config.file=/etc/prometheus/config.yml
               - --web.console.libraries=/usr/share/prometheus/console_libraries
               - --web.console.templates=/usr/share/prometheus/consoles
           ports:
               - 9090:9090
           volumes:
               - ./prometheus:/etc/prometheus
       
       statsd-exporter:
           image: prom/statsd-exporter:v0.22.4
           command:
               - --statsd.mapping-config=/tmp/statsd_mapping.yml
           ports:
               - 9102:9102
               - 9125:9125
               - 9125:9125/udp
           volumes:
               - ./prometheus/statsd_mapping.yml:/tmp/statsd_mapping.yml
   ```
   
   The prometheus config is:
   ```
   global:
     scrape_interval: 15s
   
   scrape_configs:
     - job_name: airflow_statsd
       scrape_interval: 1m
       scrape_timeout: 30s 
       static_configs:
         - targets:
           - statsd-exporter:9102
   ```
   
   The metrics mapping for statsd-exporter is:
   ```
   mappings:
     - match: "airflow.dag_processing.last_duration.*"
       name: "airflow_dag_processing_last_duration"
       labels:
         dag_file: "$1"
   
     - match: "airflow.collect_db_tags"
       name: "airflow_collect_db_tags"
       labels: {}
   
     - match: "airflow.scheduler.critical_section_duration"
       name: "airflow_scheduler_critical_section_duration"
       labels: {}
   
     - match: "airflow.dagrun.schedule_delay.*"
       name: "airflow_dagrun_schedule_delay"
       labels:
         dag_id: "$1"
   
     - match: "airflow.dag_processing.total_parse_time"
       name: "airflow_dag_processing_total_parse_time"
       labels: {}
   
     - match: "airflow.dag_processing.last_run.seconds_ago.*"
       name: "airflow_dag_processing_last_run_seconds_ago"
       labels:
         dag_file: "$1"
   ```
   
   
   ### Anything else
   
   _No response_
   
   ### Are you willing to submit PR?
   
   - [X] Yes I am willing to submit a PR!
   
   ### Code of Conduct
   
   - [X] I agree to follow this project's [Code of 
Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to