Metrics - DagRun Schedule Delay
- Dominant language
- Python
- Stars
- 46.9k
- Forks
- 17.8k
- Avg merge
- 2d 7h
- Merged PRs (30d)
- 484
Description
### Apache Airflow version
2.6.2
### What happened
The timers `airflow_dagrun..first_task_scheduling_delay` and `airflow_dagrun.schedule_delay.` both get emitted correctly in StatsD but not in OTel.
I am submitting this as an Issue since I will be a little distracted for the next bit and figured someone may be able to have a look in the meantime. Please do not assign it to me, I'll get it when I can is nobody else does.
### What you think should happen instead
Behavior should be consistent.
### How to reproduce
To reproduce, you can run Breeze with the statsd or the otel integration (for example breeze start-airflow --integration otel) and run the following DAG, then open the [OTel](http://localhost:28889/metrics) or [StatsD](http://localhost:29102/metrics) raw data view to verify.
```
from airflow import DAG
from airflow.decorators import task
from airflow.utils.timezone import datetime
@task
def task1():
return 'Hello'
@task
def task2():
return 'World!'
@task
def task3(in1, in2):
print(f'{in1} {in2}')
with DAG(
dag_id='taskflow_demo',
start_date=datetime(2021, 1, 1),
schedule=None,
catchup=False
) as dag:
task3(task1(), task2())
```
You will see that OTel does emit `airflow_dagrun_first_task_scheduling_delay` and `airflow_dagrun_schedule_delay`with tags containing the dag_id, but it does not get the version of the matric which contains the embedded dag_id.
This MIGHT be due to the name length restrictions in OTel but if that is the case then it should be emitting a truncated name, not dropping/ignoring it.
### Operating System
ubuntu
### Versions of Apache Airflow Providers
_No response_
### Deployment
Docker-Compose
### Deployment details
_No response_
### 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)
Contributor guide
Research direction
Start by running the provided DAG with Breeze using the StatsD and OTel integrations, then inspect the raw metrics at the two linked local endpoints. Compare the metrics containing the embedded dag_id with those carrying it as a tag; done means both integrations expose equivalent schedule-delay metrics without silently dropping the embedded-name variants.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- docker-compose, python
- Domain
- observability
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100