Skip to main content

Beanstalk Enhanced Health Monitoring Remediation

Triage and Remediation

Remediation

Using Console

To enable Enhanced Health Reporting for an Elastic Beanstalk environment using the AWS Management Console:

  1. Sign in to AWS Console
    Go to: https://console.aws.amazon.com/
    Make sure you are in the correct Region where your Elastic Beanstalk environment is running.

  2. Open Elastic Beanstalk
    In the services search bar, type “Elastic Beanstalk” and select it.

  3. Select the Application and Environment

    • Click your Application name.
    • Click the specific Environment where you want to enable enhanced health.
  4. Go to Configuration

    • In the left-hand navigation, select Configuration.
  5. Edit Health / Monitoring Settings
    The exact section name may differ slightly depending on console version:

    • Look for a card/section named Monitoring, Health, or Updates, monitoring and logging.
    • Click Edit on that section.
  6. Enable Enhanced Health Reporting
    Within the monitoring/health section:

    • Find Health reporting (or similar).
    • Change it from Basic to Enhanced.
    • Optionally review any additional health-related options (health check grace period, etc.).
  7. Apply Changes

    • Click Save or Apply at the bottom of the edit panel.
    • Elastic Beanstalk will update the environment; wait for the environment status to return to Ready / Green.
  8. Verify Enhanced Health

    • Back in the environment dashboard, confirm Health reporting: Enhanced is shown.
    • You should now see more detailed health information under the Health tab for that environment.

This enables enhanced health for the EC2 instances that are part of that Elastic Beanstalk environment.

Using CLI

To enable Enhanced Health Reporting for an Elastic Beanstalk environment (even if it runs EC2 instances), you change an environment option via the AWS CLI.

1. Prerequisites

  • AWS CLI v2 installed and configured (aws configure)
  • Permissions: elasticbeanstalk:DescribeEnvironments, elasticbeanstalk:DescribeConfigurationSettings, elasticbeanstalk:UpdateEnvironment

2. Identify your Elastic Beanstalk environment

aws elasticbeanstalk describe-environments \
--application-name YOUR_APP_NAME

Note the EnvironmentName or EnvironmentId you want to change.


3. (Optional) Check current health reporting settings

aws elasticbeanstalk describe-configuration-settings \
--application-name YOUR_APP_NAME \
--environment-name YOUR_ENV_NAME

Look in the output for:

{
"Namespace": "aws:elasticbeanstalk:healthreporting:system",
"OptionName": "SystemType",
"Value": "enhanced" | "basic"
}

4. Enable Enhanced Health Reporting

Use update-environment to set SystemType to enhanced:

aws elasticbeanstalk update-environment \
--environment-name YOUR_ENV_NAME \
--option-settings Namespace=aws:elasticbeanstalk:healthreporting:system,OptionName=SystemType,Value=enhanced

You can also use --environment-id instead of --environment-name:

aws elasticbeanstalk update-environment \
--environment-id e-xxxxxxxxxx \
--option-settings Namespace=aws:elasticbeanstalk:healthreporting:system,OptionName=SystemType,Value=enhanced

This will trigger an environment update. Wait until status is Ready again:

aws elasticbeanstalk describe-environments \
--environment-name YOUR_ENV_NAME \
--query "Environments[0].Status"

5. Verify Enhanced Health is enabled

aws elasticbeanstalk describe-configuration-settings \
--application-name YOUR_APP_NAME \
--environment-name YOUR_ENV_NAME \
--query "ConfigurationSettings[0].OptionSettings[?Namespace=='aws:elasticbeanstalk:healthreporting:system' && OptionName=='SystemType']"

You should see:

[
{
"Namespace": "aws:elasticbeanstalk:healthreporting:system",
"OptionName": "SystemType",
"Value": "enhanced"
}
]
Using Python

To enable Enhanced Health Reporting for an Elastic Beanstalk environment using Python (boto3), you:

  1. Identify the application and environment.
  2. Call update_environment with the correct option setting.

Below are the step‑by‑step instructions and a working example.


1. Prerequisites

  • AWS credentials configured (via ~/.aws/credentials, environment vars, or IAM role).
  • boto3 installed:
pip install boto3
  • You know:
    • application_name (Elastic Beanstalk application)
    • environment_name (Elastic Beanstalk environment)

2. Python Code to Enable Enhanced Health

import boto3
from botocore.exceptions import ClientError

# ---- CONFIGURE THESE ----
REGION = "us-east-1" # change to your region
APPLICATION_NAME = "my-app" # change to your EB application name
ENVIRONMENT_NAME = "my-env" # change to your EB environment name
# -------------------------

def enable_enhanced_health(app_name, env_name, region):
eb = boto3.client("elasticbeanstalk", region_name=region)

try:
# Optional: verify that the environment exists and see current settings
envs = eb.describe_environments(
ApplicationName=app_name,
EnvironmentNames=[env_name]
)["Environments"]
if not envs:
raise ValueError(f"Environment {env_name} not found in application {app_name}")

print(f"Found environment {env_name}, status: {envs[0]['Status']}")

# Enable Enhanced Health Reporting
response = eb.update_environment(
ApplicationName=app_name,
EnvironmentName=env_name,
OptionSettings=[
{
"Namespace": "aws:elasticbeanstalk:healthreporting:system",
"OptionName": "SystemType",
"Value": "enhanced"
}
]
)

print("Update initiated:")
print(f" EnvironmentId: {response.get('EnvironmentId')}")
print(f" Status: {response.get('Status')}")
print(f" HealthStatus: {response.get('HealthStatus')}")

except ClientError as e:
print(f"AWS Error: {e.response['Error']['Code']} - {e.response['Error']['Message']}")
except Exception as e:
print(f"Error: {str(e)}")

if __name__ == "__main__":
enable_enhanced_health(APPLICATION_NAME, ENVIRONMENT_NAME, REGION)

3. What This Does

  • Calls update_environment on your Elastic Beanstalk environment.
  • Sets:
Namespace: aws:elasticbeanstalk:healthreporting:system
OptionName: SystemType
Value: enhanced

This turns on Enhanced Health Reporting, which will then surface detailed health info for the EC2 instances in that environment in the EB console and via APIs.


4. Optional: Confirm the Setting

After the update finishes:

import boto3

eb = boto3.client("elasticbeanstalk", region_name=REGION)

options = eb.describe_configuration_settings(
ApplicationName=APPLICATION_NAME,
EnvironmentName=ENVIRONMENT_NAME
)["ConfigurationSettings"][0]["OptionSettings"]

for o in options:
if (o["Namespace"] == "aws:elasticbeanstalk:healthreporting:system"
and o["OptionName"] == "SystemType"):
print("Current SystemType:", o["Value"])

You should see:

Current SystemType: enhanced
Using Terraform
resource "aws_elastic_beanstalk_environment" "example" {
name = "EXISTING_ENVIRONMENT_NAME" # replace with your EB environment name
application = aws_elastic_beanstalk_application.app.name
solution_stack_name = "EXISTING_SOLUTION_STACK" # or use platform_arn

# ...other existing arguments...

# Ensure Enhanced Health Reporting is enabled
setting {
namespace = "aws:health:system"
name = "EnhancedHealthReporting"
value = "enhanced"
}
}

This change does not force replacement of the environment, but it will trigger an in-place environment update that may briefly impact deployments.

To verify, terraform plan should show an in-place update of aws_elastic_beanstalk_environment.example with setting adding/changing EnhancedHealthReporting to enhanced.