Airflow integration metrics

The official Datadog integration for monitoring Airflow. It collects 97 metrics.

Official summary

Tracks metrics related to DAGs, tasks, pools, executors, etc

Metric types

  • count (occurrences in the interval): 49
  • gauge (value at a point in time): 48

Metrics

Descriptions are the official definitions, unedited.

MetricTypeUnit
airflow.can_connect1 if can connect to Airflow, otherwise 0count-
airflow.celery.execute_command.failureNumber of non-zero exit code from Celery task.count-
airflow.celery.task_timeout_errorNumber of AirflowTaskTimeout errors raised when publishing Task to Celery Broker.counterror
airflow.collect_db_dagsMilliseconds taken for fetching all Serialized Dags from DBgaugemillisecond
airflow.dag.callback_exceptionsNumber of exceptions raised from DAG callbacks. When this happens, it means DAG callback is not workingcounterror
airflow.dag.loading_durationDAG loading duration in seconds (deprecated)gaugesecond
airflow.dag.queue_durationMilliseconds a task spends in the queue (deprecated, use queued_duration).gaugemillisecond
airflow.dag.queued_durationMilliseconds a task spends in the Queued state, before being Running.gaugemillisecond
airflow.dag.scheduled_durationMilliseconds a task spends in the Scheduled state, before being Queued.gaugemillisecond
airflow.dag.task.durationMilliseconds taken to finish a taskgaugemillisecond
airflow.dag.task.ongoing_durationCurrent duration for ongoing DAG tasksgaugesecond
airflow.dag.task.total_runningTotal number of running tasksgauge-
airflow.dag.task_removedTasks removed from DAGgaugesecond
airflow.dag.task_restoredTasks restored to DAGgaugesecond
airflow.dag_file_processor_timeouts(DEPRECATED) same behavior as dag_processing.processor_timeoutsgauge-
airflow.dag_file_refresh_errorNumber of failures loading any DAG filescounterror
airflow.dag_processing.file_path_queue_sizeNumber of DAG files to be considered for the next scan.gauge-
airflow.dag_processing.file_path_queue_update_countNumber of times we've scanned the filesystem and queued all existing dags.count-
airflow.dag_processing.import_errorsNumber of errors from trying to parse DAG filesgaugeerror
airflow.dag_processing.last_durationMilliseconds taken to load the given DAG filegaugemillisecond
airflow.dag_processing.last_num_of_db_queriesNumber of queries to Airflow database during parsing per dag_file.gauge-
airflow.dag_processing.last_run.seconds_agoSeconds since <dag_file> was last processedgaugesecond
airflow.dag_processing.last_runtimeSeconds spent processing <dag_file> (in most recent iteration)gaugesecond
airflow.dag_processing.manager_stallsNumber of stalled DagFileProcessorManagercount-
airflow.dag_processing.other_callback_countNumber of non-SLA callbacks received.count-
airflow.dag_processing.processesNumber of currently running DAG parsing processescount-
airflow.dag_processing.processor_timeoutsNumber of file processors that have been killed due to taking too longgauge-
airflow.dag_processing.sla_callback_countNumber of SLA callbacks received.count-
airflow.dag_processing.total_parse_timeSeconds taken to scan and import all DAG files oncegaugesecond
airflow.dagbag_sizeDAG bag sizegauge-
airflow.dagrun.dependency_checkMilliseconds taken to check DAG dependenciesgaugemillisecond
airflow.dagrun.duration.failedMilliseconds taken for a DagRun to reach failed stategaugemillisecond
airflow.dagrun.duration.successMilliseconds taken for a DagRun to reach success stategaugemillisecond
airflow.dagrun.first_task_scheduling_delayMilliseconds elapsed between first task start_date and dagrun expected startgaugemillisecond
airflow.dagrun.schedule_delayMilliseconds of delay between the scheduled DagRun start date and the actual DagRun start dategaugemillisecond
airflow.dataset.orphanedNumber of datasets marked as orphans because they are no longer referenced in DAG.gauge-
airflow.dataset.triggered_dagrunsNumber of DAG runs triggered by a dataset update.count-
airflow.dataset.updatesNumber of updated datasets.count-
airflow.executor.open_slotsNumber of open slots on executorgauge-
airflow.executor.queued_tasksNumber of queued tasks on executorgaugetask
airflow.executor.running_tasksNumber of running tasks on executorgaugetask
airflow.healthy1 if Airflow is healthy, otherwise 0count-
airflow.job.endNumber of ended <job_name> job, ex. SchedulerJob, LocalTaskJobcountjob
airflow.job.heartbeat.failureNumber of failed Heartbeats for a <job_name> job, ex. SchedulerJob, LocalTaskJobcounterror
airflow.job.startNumber of started <job_name> job, ex. SchedulerJob, LocalTaskJobcountjob
airflow.kubernetes_executor.adopt_task_instances.durationMilliseconds taken to adopt the task instances in Kubernetes Executor.gaugemillisecond
airflow.kubernetes_executor.clear_not_launched_queued_tasks.durationMilliseconds taken for clearing not launched queued tasks in Kubernetes Executor.gaugemillisecond
airflow.local_task_job.task_exitNumber of LocalTaskJob terminations with a return_code.count-
airflow.operator_failuresOperator <operator_name> failurescount-
airflow.operator_successesOperator <operator_name> successescount-
airflow.pool.deferred_slotsNumber of deferred slots in the pool.gauge-
airflow.pool.open_slotsNumber of open slots in the poolgauge-
airflow.pool.queued_slotsNumber of queued slots in the poolgauge-
airflow.pool.running_slotsNumber of running slots in the poolgauge-
airflow.pool.scheduled_slotsNumber of scheduled slots in the pool.gauge-
airflow.pool.starving_tasksNumber of starving tasks in the poolgaugetask
airflow.pool.used_slotsNumber of used slots in the poolgauge-
airflow.previously_succeededNumber of previously succeeded task instancescounttask
airflow.scheduler.critical_section_busyCount of times a scheduler process tried to get a lock on the critical section (needed to send tasks to the executor) and found it locked by another process.countoperation
airflow.scheduler.critical_section_durationMilliseconds spent in the critical section of scheduler loop -- only a single scheduler can enter this loop at a timegaugemillisecond
airflow.scheduler.critical_section_query_durationMilliseconds spent running the critical section task instance query.gaugemillisecond
airflow.scheduler.orphaned_tasks.adoptedNumber of Orphaned tasks adopted by the Schedulercounttask
airflow.scheduler.orphaned_tasks.clearedNumber of Orphaned tasks cleared by the Schedulercounttask
airflow.scheduler.scheduler_loop_durationMilliseconds spent running one scheduler loop.gaugemillisecond
airflow.scheduler.tasks.executableNumber of tasks that are ready for execution (set to queued) with respect to pool limits, dag concurrency, executor state, and priority.counttask
airflow.scheduler.tasks.killed_externallyNumber of tasks killed externallycounttask
airflow.scheduler.tasks.runningNumber of tasks running in executorcounttask
airflow.scheduler.tasks.starvingNumber of tasks that cannot be scheduled because of no open slot in poolcounttask
airflow.scheduler.tasks.without_dagrunNumber of tasks without DagRuns or with DagRuns not in Running statecounttask
airflow.scheduler_heartbeatScheduler heartbeatscount-
airflow.sla_callback_notification_failureNumber of failed SLA miss callback notification attempts.count-
airflow.sla_email_notification_failureNumber of failed SLA miss email notification attemptscounttask
airflow.sla_missedNumber of SLA misses.count-
airflow.smart_sensor_operator.exception_failuresNumber of failures caused by exception in the previous smart sensor poking loopcounterror
airflow.smart_sensor_operator.infra_failuresNumber of infrastructure failures in the previous smart sensor poking loopcounterror
airflow.smart_sensor_operator.poked_exceptionNumber of exceptions in the previous smart sensor poking loopcounterror
airflow.smart_sensor_operator.poked_successNumber of newly succeeded tasks poked by the smart sensor in the previous poking loopcounttask
airflow.smart_sensor_operator.poked_tasksNumber of tasks poked by the smart sensor in the previous poking loopcounttask
airflow.task.cpu_usagePercentage of CPU used by a task.gaugepercent
airflow.task.durationMilliseconds taken to run a task.gaugemillisecond
airflow.task.instance_createdTask instances createdgaugesecond
airflow.task.mem_usagePercentage of memory used by a task.gaugepercent
airflow.task.queued_durationMilliseconds a task spends in the Queued state, before being Running.gaugemillisecond
airflow.task.scheduled_durationMilliseconds a task spends in the Scheduled state, before being Queued.gaugemillisecond
airflow.task_instance_createdNumber of tasks instances created for a given Operatorcounttask
airflow.task_removed_from_dagNumber of tasks removed for a given dag (i.e. task no longer exists in DAG)counttask
airflow.task_restored_to_dagNumber of tasks restored for a given dag (i.e. task instance which was previously in REMOVED state in the DB is added to DAG file)counttask
airflow.ti.finishNumber of completed task in a given dag.counttask
airflow.ti.startNumber of started task in a given dag.counttask
airflow.ti_failuresOverall task instances failurescounttask
airflow.ti_successesOverall task instances successescounttask
airflow.triggerer_heartbeatTriggerer heartbeats.count-
airflow.triggers.blocked_main_threadNumber of triggers that blocked the main thread (likely due to not being async).count-
airflow.triggers.failedNumber of triggers that errored before they could fire an event.count-
airflow.triggers.runningNumber of triggers currently running for a triggerer (described by hostname).gauge-
airflow.triggers.succeededNumber of triggers that have fired at least one event.count-
airflow.zombies_killedZombie tasks killedcounttask

Official documentation

Official documentation for the Airflow integration

Metric names and descriptions are the official Datadog integration definitions (Copyright Datadog, Inc., BSD-3-Clause), reproduced unedited. The full license terms are on the About page.