Below is a script to monitor for active EMR job drivers that start with "ClusterJobDriver_". At any given time there should be only one "ClusterJobDriver_" in the running state.
The below script is to calculate the no of active "ClusterJobDriver_ " and notify by email or AWS SNS topic when the count is more than 1.
- Need to configure AWS region and cluster ID in the script
- The script assumes aws cli is already setup with the required authentication
- All the job drivers launched for ingestion or pipeline jobs start with "ClusterJobDriver_".
#!/bin/bash # Set the AWS region and EMR cluster ID AWS_REGION="your_aws_region" EMR_CLUSTER_ID="your_emr_cluster_id" # Get the list of step functions for the EMR cluster that start with "ClusterJobDriver_" step_functions=$(aws emr list-steps --cluster-id "$EMR_CLUSTER_ID" --region "$AWS_REGION" --output json | jq '.Steps[] | select(.Name | startswith("ClusterJobDriver_")) | select(.Status.State == "RUNNING")') # Count the number of running step functions running_count=$(echo "$step_functions" | jq 'length') # Display the count of running step functions echo "Running Step Functions Count: $running_count" # Check if the running count is more than 1 if [[ $running_count -gt 1 ]]; then # Email alert subject alert_subject="More than 1 job driver found to be in running state on Cluster $EMR_CLUSTER_ID" alert_body="Please investigate the running step functions on EMR Cluster $EMR_CLUSTER_ID. There are $running_count job drivers currently running." # Uncomment the following lines to send email using mailx #ALERT_EMAIL="your_alert_email@example.com" # echo "$alert_body" | mailx -s "$alert_subject" "$ALERT_EMAIL" # Uncomment the following lines to send an AWS SNS notification # sns_topic_arn="your_sns_topic_arn" # aws sns publish --region "$AWS_REGION" --topic-arn "$sns_topic_arn" --subject "$alert_subject" --message "$alert_body" fi