From c9ccd77e392315b6ee8448238d1e2b4a2a766aa8 Mon Sep 17 00:00:00 2001 From: fmercadop Date: Wed, 6 May 2026 14:44:45 -0700 Subject: [PATCH 1/5] docs: add Airflow billing reference page --- docs/reference/airflow/airflow-billing.md | 84 ++++++++++++++++++ .../execution-timeline-and-billing-logic.png | Bin 0 -> 74501 bytes 2 files changed, 84 insertions(+) create mode 100644 docs/reference/airflow/airflow-billing.md create mode 100644 docs/reference/airflow/assets/execution-timeline-and-billing-logic.png diff --git a/docs/reference/airflow/airflow-billing.md b/docs/reference/airflow/airflow-billing.md new file mode 100644 index 00000000..91803dad --- /dev/null +++ b/docs/reference/airflow/airflow-billing.md @@ -0,0 +1,84 @@ +--- +title: Airflow Billing +--- + +# How Datacoves Billing Works + +This page explains how Datacoves measures and bills Airflow worker usage, what is and isn't included in billed minutes, and how billed usage relates to Airflow's own metadata. + +## Overview + +Datacoves bills Airflow usage based on **worker pod running time**. Each Airflow task runs inside a dedicated Kubernetes pod, and billing is based on how long that pod is alive in the cluster. This is different from the task durations shown in the Airflow UI, which only reflect when task code itself was running. + +Billing is derived from the Prometheus metric: + +``` +kube_pod_container_status_running +``` + +This metric captures the time each worker pod container spends in the `Running` state. The total is summed across all pods in your environment to produce your monthly billed minutes. + +## Task execution timeline + +A typical task goes through eight stages from the moment it is enqueued to the moment its pod is decommissioned. Only some of these stages are billed. + +| # | Stage | Description | Billed | +|---|---|---|---| +| 1 | Task Enqueued | `queued_dttm`: task is in the scheduler queue; no pod exists yet. | No | +| 2 | Pod Creation | Pod is created in `Pending` state; includes image pulling. | No | +| 3 | Init Container | `git-sync` runs to clone or sync the repository. | **Yes** | +| 4 | Main Container Start | Pod transitions to `Running` state. | **Yes** | +| 5 | Airflow Bootstrap | The worker process initializes and loads the environment. | **Yes** | +| 6 | Task Execution | `start_date`: the actual task / DAG code begins running. | **Yes** | +| 7 | Task Completion | `end_date`: the task code finishes its execution. | **Yes** | +| 8 | Pod Termination | The container stops and the pod is decommissioned. | No | + +----------- + +![Task Execution Timeline and Billing Logic](./assets/execution-timeline-and-billing-logic.png) + +Billing starts when the main container reaches `Running` and ends when the pod terminates. Queue time, pod creation, and image pulls are not billed. + +## How this maps to Airflow metadata + +The `task_instance` table in the Airflow metadata database has three timestamp columns relevant here: + +| Column | Description | +|---|---| +| `queued_dttm` | When the task was placed in the queue | +| `start_date` | When the task code actually started executing | +| `end_date` | When the task code finished executing | + +Comparing those columns to billed time: + +| Calculation | What it captures | Relation to billing | +|---|---|---| +| `end_date - queued_dttm` | Queue time + pod init + bootstrap + execution | Overestimates billed minutes | +| `end_date - start_date` | Task code execution only | Underestimates billed minutes | +| Billed (pod running) | Init container + Main container start + bootstrap + execution + completion | Actual billed value | + +Neither Airflow column on its own matches the billed value exactly. The billed value sits between the two. + +## Querying the Airflow `task_instance` table + +To estimate usage directly from Airflow metadata: + +* `queued_dttm` to `end_date` (`queued_plus_execution_time`) overestimates billed minutes. +* `start_date` to `end_date` (`execution_time`) underestimates billed minutes. + +The actual billed figure falls inside that range. + +Example query: + +```sql +SELECT + dag_id, + task_id, + SUM(EXTRACT(EPOCH FROM (end_date - queued_dttm)) / 60) AS upper_bound_minutes, + SUM(EXTRACT(EPOCH FROM (end_date - start_date)) / 60) AS lower_bound_minutes +FROM task_instance +WHERE end_date >= date_trunc('month', CURRENT_DATE) + AND state = 'success' +GROUP BY dag_id, task_id +ORDER BY upper_bound_minutes DESC; +``` \ No newline at end of file diff --git a/docs/reference/airflow/assets/execution-timeline-and-billing-logic.png b/docs/reference/airflow/assets/execution-timeline-and-billing-logic.png new file mode 100644 index 0000000000000000000000000000000000000000..a014d4e5483ea087faec8e3a6885fde54d9f1995 GIT binary patch literal 74501 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¥kvl3FXh-8+T$=N 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 Date: Thu, 7 May 2026 13:41:47 -0700 Subject: [PATCH 2/5] Revise SQL query for airflow billing documentation Updated SQL example query for billing calculations to reflect daily task execution and queue times. --- docs/reference/airflow/airflow-billing.md | 27 +++++++++++++---------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/docs/reference/airflow/airflow-billing.md b/docs/reference/airflow/airflow-billing.md index 91803dad..a7a8ca7b 100644 --- a/docs/reference/airflow/airflow-billing.md +++ b/docs/reference/airflow/airflow-billing.md @@ -70,15 +70,18 @@ The actual billed figure falls inside that range. Example query: -```sql -SELECT - dag_id, - task_id, - SUM(EXTRACT(EPOCH FROM (end_date - queued_dttm)) / 60) AS upper_bound_minutes, - SUM(EXTRACT(EPOCH FROM (end_date - start_date)) / 60) AS lower_bound_minutes -FROM task_instance -WHERE end_date >= date_trunc('month', CURRENT_DATE) - AND state = 'success' -GROUP BY dag_id, task_id -ORDER BY upper_bound_minutes DESC; -``` \ No newline at end of file +```SELECT + date_trunc('day', ti.start_date) AS day, + count(*) AS tasks, + round(sum(EXTRACT(EPOCH FROM (ti.end_date - ti.queued_dttm)) / 60)::numeric, 1) AS queued_plus_execution_time, + round(sum(EXTRACT(EPOCH FROM (ti.end_date - ti.start_date)) / 60)::numeric, 1) AS execution_time, + round(sum(EXTRACT(EPOCH FROM (ti.start_date - ti.queued_dttm)) / 60)::numeric, 1) AS queue_time_min +FROM task_instance ti +WHERE ti.state = 'success' + AND ti.start_date >= '2026-03-01 00:00:00+00' + AND ti.start_date < '2026-04-01 00:00:00+00' + AND ti.queued_dttm IS NOT NULL + AND ti.end_date IS NOT NULL +GROUP BY 1 +ORDER BY 1; +``` From f60fcd55de08cbf4ef8f49c86b03da4b9c81aa75 Mon Sep 17 00:00:00 2001 From: fmercadop <90359057+fmercadop@users.noreply.github.com> Date: Thu, 7 May 2026 14:17:35 -0700 Subject: [PATCH 3/5] Fix SQL formatting in airflow-billing.md Updated SQL example query formatting in airflow-billing.md --- docs/reference/airflow/airflow-billing.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/reference/airflow/airflow-billing.md b/docs/reference/airflow/airflow-billing.md index a7a8ca7b..35453806 100644 --- a/docs/reference/airflow/airflow-billing.md +++ b/docs/reference/airflow/airflow-billing.md @@ -70,7 +70,8 @@ The actual billed figure falls inside that range. Example query: -```SELECT +```sql +SELECT date_trunc('day', ti.start_date) AS day, count(*) AS tasks, round(sum(EXTRACT(EPOCH FROM (ti.end_date - ti.queued_dttm)) / 60)::numeric, 1) AS queued_plus_execution_time, From 44ac676f5878156040a7c0e110d1a7e6dba7fd75 Mon Sep 17 00:00:00 2001 From: fmercadop Date: Thu, 7 May 2026 15:52:11 -0700 Subject: [PATCH 4/5] docs: clarify Azure DevOps SSH key setup instructions --- docs/how-tos/vs-code/initial.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/how-tos/vs-code/initial.mdx b/docs/how-tos/vs-code/initial.mdx index a1826cfc..f72f77d7 100644 --- a/docs/how-tos/vs-code/initial.mdx +++ b/docs/how-tos/vs-code/initial.mdx @@ -64,7 +64,7 @@ Click the _Copy_ button and follow the instructions to configure the public key [Bitbucket SSH Key Configuration Instructions](https://dev.to/jorge_rockr/configuring-ssh-key-for-bitbucket-repositories-2925) -[Azure DevOps SSH Key Configuration Instructions](https://learn.microsoft.com/en-us/azure/devops/repos/git/use-ssh-keys-to-authenticate#step-2-add-the-public-key-to-azure-devops) +[Azure DevOps SSH Key Configuration Instructions](https://learn.microsoft.com/en-us/azure/devops/repos/git/use-ssh-keys-to-authenticate#step-2-add-the-public-key-to-azure-devops). Follow only **Step 2: Add the public key to Azure DevOps**, substeps 1–4. Paste the public key you copied from Datacoves into the **Public Key Data** field. You can skip substeps 5–7. Once your public SSH key has been added to your git server, test your connection. From c731b01bc7b725164e8603df34922f501c8e469b Mon Sep 17 00:00:00 2001 From: fmercadop <90359057+fmercadop@users.noreply.github.com> Date: Thu, 7 May 2026 18:19:52 -0700 Subject: [PATCH 5/5] Fix grammar in Airflow billing documentation Corrected grammatical error in the explanation of task durations. --- docs/reference/airflow/airflow-billing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/airflow/airflow-billing.md b/docs/reference/airflow/airflow-billing.md index 35453806..ba214cea 100644 --- a/docs/reference/airflow/airflow-billing.md +++ b/docs/reference/airflow/airflow-billing.md @@ -8,7 +8,7 @@ This page explains how Datacoves measures and bills Airflow worker usage, what i ## Overview -Datacoves bills Airflow usage based on **worker pod running time**. Each Airflow task runs inside a dedicated Kubernetes pod, and billing is based on how long that pod is alive in the cluster. This is different from the task durations shown in the Airflow UI, which only reflect when task code itself was running. +Datacoves bills Airflow usage based on **worker pod running time**. Each Airflow task runs inside a dedicated Kubernetes pod, and billing is based on how long that pod is alive in the cluster. This is different from the task durations shown in the Airflow UI, which only reflects when task code itself was running. Billing is derived from the Prometheus metric: