---
title: AWS Glue
description: >-
  A managed ETL service that categorizes, cleans, enriches, and moves data
  between different data stores.
breadcrumbs: Docs > Integrations > AWS Glue
---

> For the complete documentation index, see [llms.txt](https://docs.datadoghq.com/llms.txt).

# AWS Glue
Integration version1.0.1
{% callout %}
# Important note for users on the following Datadog sites: us2.ddog-gov.com

{% alert level="info" %}
To find out if this integration is available in your organization, see your [Datadog Integrations](https://app.datadoghq.com/integrations) page or ask your organization administrator.

To initiate an exception request to enable this integration for your organization, email [support@ddog-gov.com](mailto:support@ddog-gov.com).
{% /alert %}

{% /callout %}

## Overview{% #overview %}

AWS Glue is a fully managed ETL (extract, transform, and load) service that makes it simple and cost-effective to categorize your data, clean it, enrich it, and move it reliably between various data stores.

Enable this integration to see all your Glue metrics in Datadog.

## Setup{% #setup %}

### Installation{% #installation %}

If you haven't already, set up the [Amazon Web Services integration](https://docs.datadoghq.com/integrations/amazon_web_services.md) first.

### Metric collection{% #metric-collection %}

1. In the [AWS integration page](https://app.datadoghq.com/integrations/amazon-web-services), ensure that `Glue` is enabled under the `Metric Collection` tab.
1. Install the [Datadog - AWS Glue integration](https://app.datadoghq.com/integrations/amazon-glue).

### Log collection{% #log-collection %}

#### Enable logging{% #enable-logging %}

Configure AWS Glue to send logs either to an S3 bucket or to CloudWatch. AWS Glue sends job logs to CloudWatch by default. The log group depends on the job type:

- Spark jobs: `/aws-glue/jobs/output` and `/aws-glue/jobs/error`
- Python Shell jobs: `/aws-glue/python-jobs/output` and `/aws-glue/python-jobs/error`
- Ray jobs: `/aws-glue/ray/jobs/*`

**Notes**:

- Datadog's [automatic trigger setup](https://docs.datadoghq.com/logs/guide/send-aws-services-logs-with-the-datadog-lambda-function.md?tab=awsconsole#automatically-set-up-triggers) is available for CloudWatch log groups only. For S3 buckets, use the [manual trigger setup](https://docs.datadoghq.com/logs/guide/send-aws-services-logs-with-the-datadog-lambda-function.md#collecting-logs-from-s3-buckets). If you use the automatic trigger setup, ensure that your [Datadog IAM policy](https://docs.datadoghq.com/integrations/amazon_web_services.md#installation) has the following permissions:

| AWS Permission      | Description                                        |
| ------------------- | -------------------------------------------------- |
| `glue:ListJobs`     | Used to list available Glue jobs.                  |
| `glue:GetJobs`      | Used to get details on all Glue jobs.              |
| `glue:GetJob`       | Used to get detailed information about a Glue job. |
| `glue:BatchGetJobs` | Used to retrieve metadata for multiple Glue jobs.  |

- If you log to a S3 bucket, make sure that `amazon_glue` is set as *Target prefix*.

- If you use the `--custom-logGroup-prefix` argument for your Glue Jobs, use the log group name prefix `/aws-glue/` for Datadog to identify the source of the logs and parse them automatically. Otherwise, they cannot be identified properly and will be tagged as `source:cloudwatch`.

#### Send logs to Datadog{% #send-logs-to-datadog %}

1. If you haven't already, set up the [Datadog Forwarder Lambda function](https://docs.datadoghq.com/logs/guide/forwarder.md).
1. Once the Lambda function is installed, manually add a trigger on the S3 bucket or CloudWatch log group that contains your AWS Glue logs in the AWS console:
   - [Add a manual trigger on the S3 bucket](https://docs.datadoghq.com/logs/guide/send-aws-services-logs-with-the-datadog-lambda-function.md#collecting-logs-from-s3-buckets)
   - [Add a manual trigger on the CloudWatch Log Group](https://docs.datadoghq.com/logs/guide/send-aws-services-logs-with-the-datadog-lambda-function.md#collecting-logs-from-cloudwatch-log-group)

## Data Collected{% #data-collected %}

### Metrics{% #metrics %}

|  |
|  |
| **aws.glue.driver.executor_allocation_manager.executors.number_all_executors**(gauge)         | The number of actively running job executors.                                                                               |
| **aws.glue.driver.executor_allocation_manager.executors.number_max_needed_executors**(gauge) | The number of maximum (actively running and pending) job executors needed to satisfy the current load.                      |
| **aws.glue.glue_alljvm_heap_usage**(gauge)                                                     | The average fraction of memory used by the JVM heap for this driver (scale: 0-1) for all executors.*Shown as percent*       |
| **aws.glue.glue_alljvm_heap_used**(gauge)                                                      | The number of memory bytes used by the JVM heap for all executors.*Shown as byte*                                           |
| **aws.glue.glue_alls_3filesystem_readbytes**(gauge)                                            | The average number of bytes read from Amazon S3 all executors since the previous report.                                    |
| **aws.glue.glue_allsystem_cpu_system_load**(gauge)                                            | The average fraction of CPU system load used (scale: 0-1) by all executors.*Shown as percent*                               |
| **aws.glue.glue_driver_aggregate_bytes_read**(count)                                          | The number of bytes read from all data sources by all completed Spark tasks running in all executors.*Shown as byte*        |
| **aws.glue.glue_driver_aggregate_elapsed_time**(count)                                        | The ETL elapsed time in milliseconds (does not include the job bootstrap times).*Shown as millisecond*                      |
| **aws.glue.glue_driver_aggregate_num_completed_stages**(count)                               | The number of completed stages in the job.                                                                                  |
| **aws.glue.glue_driver_aggregate_num_completed_tasks**(count)                                | The number of completed tasks in the job.                                                                                   |
| **aws.glue.glue_driver_aggregate_num_failed_tasks**(count)                                   | The number of failed tasks.                                                                                                 |
| **aws.glue.glue_driver_aggregate_num_killed_tasks**(count)                                   | The number of tasks killed.                                                                                                 |
| **aws.glue.glue_driver_aggregate_records_read**(count)                                        | The number of records read from all data sources by all completed Spark tasks running in all executors.                     |
| **aws.glue.glue_driver_aggregate_shuffle_bytes_written**(count)                              | The number of bytes written by all executors to shuffle data between them since the previous report.                        |
| **aws.glue.glue_driver_aggregate_shuffle_local_bytes_read**(count)                          | The number of bytes read by all executors to shuffle data between them since the previous report.                           |
| **aws.glue.glue_driver_block_manager_disk_disk_space_used_mb**(gauge)                     | The average number of megabytes of disk spaced used across all executors.                                                   |
| **aws.glue.glue_driver_jvm_heap_usage**(gauge)                                                | The average fraction of memory used by the JVM heap for this driver (scale: 0-1) for driver.*Shown as percent*              |
| **aws.glue.glue_driver_jvm_heap_used**(gauge)                                                 | The number of memory bytes used by the JVM heap for the driver.*Shown as byte*                                              |
| **aws.glue.glue_driver_s3_filesystem_readbytes**(gauge)                                       | The average number of bytes read from Amazon S3 by the driver since the previous report.                                    |
| **aws.glue.glue_driver_s3_filesystem_writebytes**(gauge)                                      | The average number of bytes written to Amazon S3 by the driver since the previous report.                                   |
| **aws.glue.glue_driver_system_cpu_system_load**(gauge)                                       | The average fraction of CPU system load used (scale: 0-1) by the driver.*Shown as percent*                                  |
| **aws.glue.glue_executor_id_jvm_heap_usage**(gauge)                                          | The average fraction of memory used by the JVM heap for this driver (scale: 0-1) for executor identified.*Shown as percent* |
| **aws.glue.glue_executor_id_jvm_heap_used**(gauge)                                           | The number of memory bytes used by the JVM heap for the executor identified.*Shown as byte*                                 |
| **aws.glue.glue_executor_id_system_cpu_system_load**(gauge)                                 | The average fraction of CPU system load used (scale: 0-1) by the executor identified.*Shown as percent*                     |
| **aws.glue.glue_executor_ids_3_filesystem_readbytes**(gauge)                                 | The average number of bytes read from Amazon S3 by the executor identified since the previous report.                       |
| **aws.glue.glue_executor_ids_3_filesystem_writebytes**(gauge)                                | The average number of bytes written to Amazon S3 by the executor identified since the previous report.                      |
| **aws.glue.zeroetl.delete_count**(count)                                                         | The number of records deleted from the target Iceberg table.*Shown as record*                                               |
| **aws.glue.zeroetl.ingestion_completed**(count)                                                  | The number of times ingestion completed successfully for the integration.*Shown as event*                                   |
| **aws.glue.zeroetl.ingestion_failed**(count)                                                     | The number of times ingestion failed for the integration, reported as 1 per failed run.*Shown as event*                     |
| **aws.glue.zeroetl.insert_count**(count)                                                         | The number of records inserted in the target Iceberg table.*Shown as record*                                                |
| **aws.glue.zeroetl.last_synced_timestamp**(gauge)                                               | The timestamp until which the source has been synced to the target.*Shown as unix millisecond*                              |
| **aws.glue.zeroetl.source_delete_count**(count)                                                 | The number of records deleted at the source during ingestion.*Shown as record*                                              |
| **aws.glue.zeroetl.source_ingestion_size_in_bytes**(count)                                    | The amount of source data ingested.*Shown as byte*                                                                          |
| **aws.glue.zeroetl.source_ingestion_succeeded**(count)                                          | The number of successful source ingestion operations.*Shown as event*                                                       |
| **aws.glue.zeroetl.source_insert_count**(count)                                                 | The number of records inserted at the source during ingestion.*Shown as record*                                             |
| **aws.glue.zeroetl.source_update_count**(count)                                                 | The number of records updated at the source during ingestion.*Shown as record*                                              |
| **aws.glue.zeroetl.update_count**(count)                                                         | The number of records updated in the target Iceberg table.*Shown as record*                                                 |
| **aws.glue.dataquality.rules_failed**(count)                                                     | The number of rules that failed in a Data Quality evaluation.                                                               |
| **aws.glue.dataquality.rules_passed**(count)                                                     | The number of rules that passed in a Data Quality evaluation.                                                               |
| **aws.glue.dpu_hours_of_a_compaction_job**(count)                                            | The number of DPU hours consumed by a compaction job.*Shown as hour*                                                        |
| **aws.glue.duration_of_job_hours**(gauge)                                                      | The duration of a table optimizer job.*Shown as hour*                                                                       |
| **aws.glue.iceberg_table_compaction_failure**(count)                                           | The number of failed Iceberg table compaction jobs.*Shown as job*                                                           |
| **aws.glue.iceberg_table_compaction_success**(count)                                           | The number of successful Iceberg table compaction jobs.*Shown as job*                                                       |
| **aws.glue.iceberg_table_orphan_file_deletion_failure**(count)                               | The number of failed Iceberg table orphan-file deletion jobs.*Shown as job*                                                 |
| **aws.glue.iceberg_table_orphan_file_deletion_success**(count)                               | The number of successful Iceberg table orphan-file deletion jobs.*Shown as job*                                             |
| **aws.glue.iceberg_table_retention_failure**(count)                                            | The number of failed Iceberg table snapshot-retention jobs.*Shown as job*                                                   |
| **aws.glue.iceberg_table_retention_success**(count)                                            | The number of successful Iceberg table snapshot-retention jobs.*Shown as job*                                               |
| **aws.glue.number_of_bytes_compacted**(count)                                                  | The number of bytes compacted by the compaction job.*Shown as byte*                                                         |
| **aws.glue.number_of_data_file_bytes_removed**(count)                                        | The number of data-file bytes removed by the compaction job.*Shown as byte*                                                 |
| **aws.glue.number_of_data_files_deleted**(count)                                              | The number of data files deleted by the snapshot-retention job.*Shown as file*                                              |
| **aws.glue.number_of_data_files_removed**(count)                                              | The number of data files removed by the compaction job.*Shown as file*                                                      |
| **aws.glue.number_of_delete_file_bytes_removed**(count)                                      | The number of delete-file bytes removed by the compaction job.*Shown as byte*                                               |
| **aws.glue.number_of_delete_files_removed**(count)                                            | The number of delete files removed by the compaction job.*Shown as file*                                                    |
| **aws.glue.number_of_dpus_allocated_to_compaction_job**(gauge)                              | The number of DPUs allocated to a compaction job.                                                                           |
| **aws.glue.number_of_dpus_allocated_to_orphan_file_deletion_job**(gauge)                  | The number of DPUs allocated to an orphan-file deletion job.                                                                |
| **aws.glue.number_of_dpus_allocated_to_retention_job**(gauge)                               | The number of DPUs allocated to a snapshot-retention job.                                                                   |
| **aws.glue.number_of_files_compacted**(count)                                                  | The number of files compacted by the compaction job.*Shown as file*                                                         |
| **aws.glue.number_of_manifest_files_deleted**(count)                                          | The number of manifest files deleted by the snapshot-retention job.*Shown as file*                                          |
| **aws.glue.number_of_manifest_lists_deleted**(count)                                          | The number of manifest lists deleted by the snapshot-retention job.*Shown as file*                                          |
| **aws.glue.number_of_orphan_files_deleted**(count)                                            | The number of orphan files deleted by the orphan-file deletion job.*Shown as file*                                          |
| **aws.glue.resource_usage**(gauge)                                                               | The percentage of the applicable AWS Glue service quota currently in use.*Shown as percent*                                 |

### Events{% #events %}

The AWS Glue integration does not include any events.

### Service Checks{% #service-checks %}

The AWS Glue integration does not include any service checks.

## Troubleshooting{% #troubleshooting %}

Need help? Contact [Datadog support](https://docs.datadoghq.com/help/).
