AWS Compute Blog

Unlocking full-stack observability for AWS Outposts

Your team just deployed AWS Outposts to run latency-sensitive workloads on-premises, and now you need to monitor infrastructure that spans both your data center and an AWS Region. Some services run locally on the Outposts, and others depend on Regional endpoints. A network blip between the two can cause silent failures that traditional monitoring tools miss entirely.

AWS Outposts extends native AWS services to on-premises environments, but this hybrid topology introduces monitoring challenges that don’t exist in pure-cloud or pure-on-premises setups. Control planes are distributed, critical operations depend on AWS Region connectivity, and fixed, finite capacity requires proactive capacity planning.

In this post, you will learn how to build end-to-end observability for Outposts using AWS Systems Manager, Amazon CloudWatch, and Amazon EventBridge, covering four monitoring dimensions:

  • Network – Connectivity status, BGP sessions, and Regional service dependency tracking.

For dependency tracking, watch each Regional service’s own CloudWatch metrics together with the service-link ConnectedStatus: that pairing tells a dependency failure apart from a connectivity drop. For example, AWS Directory Service (DirectoryReachability, AuthenticationFailures), Amazon Relational Database Service (Amazon RDS) (ReplicaLag, DatabaseConnections), and so on.

By the end, you will have a monitoring architecture that gives you unified visibility across your hybrid environment and catches issues before your users do.

Building a monitoring foundation with AWS Systems Manager

The following sections detail how to configure each component of the Systems Manager foundation for your Outposts environment.

Centralized management architecture

Systems Manager provides the foundation for Outposts monitoring with centralized management across hybrid environments. Configure it to span your cloud and on-premises infrastructure so you get unified visibility, automated operations, and consistent policy enforcement across your distributed AWS resources.

SSM Agent deployment

The Systems Manager agent (SSM Agent) is the basis for monitoring. Use the following commands to install the SSM Agent on your Outpost servers.

# OS-agnostic SSM Agent installation via user data
# For Amazon Linux/RHEL/CentOS
sudo yum update -y
sudo yum install -y amazon-ssm-agent
sudo systemctl enable amazon-ssm-agent
sudo systemctl start amazon-ssm-agent

# For Ubuntu/Debian
sudo apt-get update -y
sudo apt-get install -y amazon-ssm-agent
sudo systemctl enable amazon-ssm-agent
sudo systemctl start amazon-ssm-agent

# For Windows (PowerShell)
Invoke-WebRequest -Uri "https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/windows_amd64/AmazonSSMAgentSetup.exe" -OutFile "AmazonSSMAgentSetup.exe"
Start-Process -FilePath "AmazonSSMAgentSetup.exe" -ArgumentList "/quiet" -Wait

OpsCenter integration

Systems Manager OpsCenter provides incident management capabilities that extend beyond basic alerting:

  • Automated OpsItem creation: Configure Amazon EventBridge to automatically create operational work items when specific conditions are met.
  • Runbook integration: Link automated remediation runbooks directly to OpsItems for immediate response.
  • Cross-service correlation: Aggregate related issues across multiple AWS services into single operational views.
  • Historical analysis: Use OpsCenter’s data retention for trend analysis and continuous improvement.

Patch management strategy

Implement a patch management approach that addresses the unique requirements of Outposts:

{
  "PatchGroups": [
    {
      "Name": "OutpostsCriticalSystems",
      "MaintenanceWindow": "Sunday 02:00-04:00 UTC",
      "PatchBaseline": "Custom-Security-Critical"
    },
    {
      "Name": "OutpostsApplicationServers",
      "MaintenanceWindow": "Sunday 04:00-06:00 UTC",
      "PatchBaseline": "Custom-Application-Stable"
    }
  ]
}

Systems Manager Patch Manager requires the SSM Agent to communicate with Regional endpoints through the service link. If the service link is degraded, patching operations will fail.

Personal Health Dashboard integration

The integration between AWS Personal Health Dashboard (PHD) and OpsCenter creates a proactive monitoring workflow. When an Outposts health event occurs, this rule automatically creates an OpsItem in Systems Manager, giving your operations team a single view for triage.

Automated event processing

Configure Amazon EventBridge rules to automatically process PHD events:

{
  "Rules": [
    {
      "Name": "OutpostsPHDIntegration",
      "EventPattern": {
        "source": ["aws.health"],
        "detail-type": ["AWS Health Event"],
        "detail": {
          "service": ["OUTPOSTS"],
          "eventTypeCategory": ["issue", "scheduledChange"]
        }
      },
      "Targets": [
        {
          "Id": "CreateOpsItem",
          "Arn": "arn:aws:ssm:region:account:opsitem",
          "RoleArn": "arn:aws:iam::account:role/EventBridge-OpsCenter-Role"
        }
      ]
    }
  ]
}

Monitoring dimensions

This section covers the four key monitoring dimensions for Outposts, with specific metrics, configurations, and alerting strategies for each.

1. Network monitoring and notification

Network monitoring for Outposts requires approaches that account for the hybrid nature of the deployment:

Multi-layer connectivity monitoring

Implement monitoring across multiple network layers:

  • Physical layer: Monitor fiber-optic connections, network equipment health, and environmental factors.
    • ConnectedStatus.
CloudWatch graph of the ConnectedStatus metric for an Outposts service link

Figure 1: ConnectedStatus metric for the Outposts service link

  • Network layer: Track routing, Border Gateway Protocol (BGP) sessions, and inter-rack connectivity.
    • VIF metrics.
      • VifBgpSessionState.
CloudWatch graph of the VifBgpSessionState metric for an Outposts virtual interface

Figure 2: VifBgpSessionState metric for the Outposts virtual interface

  • VifConnectionStatus.
CloudWatch graph of the VifConnectionStatus metric for an Outposts virtual interface

Figure 3: VifConnectionStatus metric for the Outposts virtual interface

  • IfTrafficIn.
  • IfTrafficOut.
CloudWatch graphs of the IfTrafficIn and IfTrafficOut metrics for Outposts network traffic

Figure 4: IfTrafficIn and IfTrafficOut metrics for Outposts network traffic

  • CapacityExceptions.
CloudWatch graph of the CapacityExceptions metric for an Outposts link

Figure 5: CapacityExceptions metric for the Outposts link

  • LagStatus:.
CloudWatch graph of the LagStatus metric for an Outposts link aggregation group

Figure 6: LagStatus metric for the Outposts link aggregation group

Regional service dependency mapping

Create detailed dependency maps for critical Regional services:

  • Amazon Elastic File System (Amazon EFS): Monitor mount target availability and performance across Availability Zones.
  • AWS Directory Service: Track authentication latency and success rates.
  • Amazon RDS: Monitor cross-Region replication lag and connection pooling.
  • AWS Lambda: Track cold start times and execution duration for Region-dependent functions.

2. Storage monitoring and optimization

Outposts provides CloudWatch metrics for both Amazon S3 and Amazon EBS storage resources. Monitor these metrics to track capacity utilization and plan for scaling.

S3 metrics:

The S3Outposts namespace includes the following metrics for Amazon S3 on Outposts buckets. You can monitor the total number of S3 on Outposts bytes provisioned, the total available bytes for objects, and the total size of all objects for a given bucket. Bucket or account-related metrics exist for all direct S3 usage.

  • OutpostTotalBytes: The total provisioned capacity in bytes for an Outpost.
CloudWatch graph of the OutpostTotalBytes metric for S3 on Outposts provisioned capacity

Figure 7: OutpostTotalBytes metric for S3 on Outposts provisioned capacity

  • OutpostFreeBytes: The count of available bytes on an Outpost to store customer data. BucketUsedBytes: The total size of all objects for the given bucket.
CloudWatch graph of the OutpostFreeBytes metric for available S3 on Outposts capacity

Figure 8: OutpostFreeBytes metric for available S3 on Outposts capacity

Other key metrics to monitor include the following:

  • AccountUsedBytes: The total size of all objects for the specified Outposts account.
  • BytesPendingReplication: The total number of bytes of objects that are pending replication for a given replication rule. For more information about how to enable replication metrics, see Creating replication rules between Outposts.
  • OperationsPendingReplication: The total number of operations that are pending replication for a given replication rule.

Amazon EBS performance deep dive

The following Amazon EBS metrics are available for Outposts volumes:

  • EBSVolumeTypeCapacityUtilization: The percentage of Amazon EBS volume type capacity in use.
CloudWatch graph of the EBSVolumeTypeCapacityUtilization metric for Outposts volumes

Figure 9: EBSVolumeTypeCapacityUtilization metric for Outposts Amazon EBS volumes

  • EBSVolumeTypeCapacityAvailability: The percentage of Amazon EBS volume type capacity available.
CloudWatch graph of the EBSVolumeTypeCapacityAvailability metric for Outposts volumes

Figure 10: EBSVolumeTypeCapacityAvailability metric for Outposts Amazon EBS volumes

  • EBSVolumeTypeCapacityUtilizationGB: The number of gigabytes in use for the Amazon EBS volume type.
CloudWatch graph of the EBSVolumeTypeCapacityUtilizationGB metric for Outposts volumes

Figure 11: EBSVolumeTypeCapacityUtilizationGB metric for Outposts Amazon EBS volumes

  • EBSVolumeTypeCapacityAvailabilityGB: The number of gigabytes of available capacity for the Amazon EBS volume type.
CloudWatch graph of the EBSVolumeTypeCapacityAvailabilityGB metric for Outposts volumes

Figure 12: EBSVolumeTypeCapacityAvailabilityGB metric for Outposts Amazon EBS volumes

Note: Second-generation AWS Outposts racks support both gp2 and gp3 Amazon EBS volume types, whereas first-generation racks support gp2 only.

3. Compute and capacity monitoring

Outposts have a fixed capacity that doesn’t auto scale, so compute and capacity metrics are essential for planning. The following instance and capacity metrics are published to the AWS/Outposts namespace.

  • Instance metrics.

UsedInstanceType_Count: The number of instance types that are currently in use, including any instance types used by managed services such as Amazon RDS or Application Load Balancer. This metric doesn’t include capacity for any Dedicated Hosts configured on the Outpost.

CloudWatch graph of the UsedInstanceType_Count metric for Outposts instance usage

Figure 13: UsedInstanceType_Count metric for Outposts instance usage

InstanceTypeCapacityUtilization: The percentage of instance capacity in use. This metric does not include capacity for any Dedicated Hosts configured on the Outpost.

CloudWatch graph of the InstanceTypeCapacityUtilization metric for Outposts instances

Figure 14: InstanceTypeCapacityUtilization metric for Outposts instances

InstanceTypeCapacityAvailability: The percentage of instance capacity available. This metric doesn’t include capacity for any Dedicated Hosts configured on the Outpost.

CloudWatch graph of the InstanceTypeCapacityAvailability metric for Outposts instances

Figure 15: InstanceTypeCapacityAvailability metric for Outposts instances

InstanceFamilyCapacityAvailability: The percentage of instance capacity available. This metric does not include capacity for any Dedicated Hosts configured on the Outpost.

CloudWatch graph of the InstanceFamilyCapacityAvailability metric for Outposts instances

Figure 16: InstanceFamilyCapacityAvailability metric for Outposts instances

InstanceFamilyCapacityUtilization: The percentage of instance capacity in use. This metric doesn’t include capacity for any Dedicated Hosts configured on the Outpost.

CloudWatch graph of the InstanceFamilyCapacityUtilization metric for Outposts instances

Figure 17: InstanceFamilyCapacityUtilization metric for Outposts instances

Monitoring EKS containers on AWS Outposts with Amazon CloudWatch

AWS Outposts extends AWS infrastructure to your on-premises environment. When running containerized workloads using Amazon EKS (extended clusters) on Outposts, monitoring is critical because unlike the Region, Outposts has fixed capacity that doesn’t auto-scale. Without proper monitoring, pods can fail to schedule, workloads can get OOMKilled, and disk pressure can cause evictions. All of this happens without warning.

This section walks through setting up CloudWatch Container Insights for EKS on Outposts, the key metrics to track, and how to build a unified monitoring dashboard.

Prerequisites

  • An AWS Outposts rack deployed and connected to your parent Region.
  • An EKS cluster with worker nodes running on the Outpost.
  • kubectl configured to access your cluster.
  • AWS Command Line Interface (AWS CLI) installed and configured.

Step 1: Launch self-managed worker nodes with Amazon Linux 2023 (AL2023) and nodeadm

Outpost subnets don’t support EKS managed node groups, so worker nodes come up as a self-managed node group launched from an EC2 launch template.

The AMI must be AL2023. Amazon EKS stopped publishing AL2 AMIs on November 26, 2025, and those images no longer receive security patches or bug fixes, as noted in the Amazon EKS AMI deprecation FAQs.

AL2023 also changes how a node initializes. It uses nodeadm rather than the AL2 bootstrap.sh script, so the user data becomes a YAML NodeConfig document instead of a shell script. AL2023 expects the cluster endpoint, certificate authority, and service CIDR to be passed in explicitly where AL2 discovered them at boot. Missing them is a common reason nodes launch but don’t join the cluster.

aws eks describe-cluster returns all three:

apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    name: <cluster-name>
    apiServerEndpoint: <from: aws eks describe-cluster>
    certificateAuthority: <from: aws eks describe-cluster>
    cidr: <service CIDR from: aws eks describe-cluster>

Step 2: Install the CloudWatch Observability add-on

On an extended cluster, use the CloudWatch Observability EKS add-on to enable Container Insights. The add-on deploys the CloudWatch agent and Fluent Bit as DaemonSets on your Outpost worker nodes, and it collects container, pod, node, and cluster-level metrics automatically.

aws eks create-addon \
  --cluster-name your-cluster-name \
  --addon-name amazon-cloudwatch-observability

You can also do this from the EKS Console under your cluster’s Add-ons tab.

Step 3: Verify the agent is running

Confirm that the CloudWatch agent pods are running on each node:

kubectl get pods -n amazon-cloudwatch

Expected output:

NAME                                  READY   STATUS    RESTARTS   AGE
cloudwatch-agent-xxxxx                1/1     Running   0          2m
cloudwatch-agent-yyyyy                1/1     Running   0          2m
fluent-bit-zzzzz                      1/1     Running   0          2m

You should see one cloudwatch-agent pod per worker node.

Step 4: Verify metrics in CloudWatch

After 5–10 minutes, metrics start flowing into CloudWatch.

  1. Open the CloudWatch Console.
  2. Navigate to Metrics → All metrics.
  3. Look for the ContainerInsights namespace.
  4. You will see metrics grouped by Cluster, Node, Pod, Service, and Namespace.

Key metrics for EKS containers on Outposts

Here are the metrics that matter most, organized by level.

Cluster level

 

Metric Description Unit
1 cluster_node_count Total worker nodes in the cluster Count
2 cluster_failed_node_count Nodes in a failed state Count

Example: cluster_node_count

CloudWatch Container Insights graph of the cluster_node_count metric for an EKS cluster

Figure 18: cluster_node_count metric in CloudWatch Container Insights

Node level

 

Metric Description Unit
1 node_cpu_utilization % CPU used on each node Percent
2 node_cpu_reserved_capacity % CPU reserved for system components (kubelet, kube-proxy) Percent
3 node_memory_utilization % memory used on each node Percent
5 node_filesystem_utilization % disk used on each node Percent
6 node_network_total_bytes Network throughput (rx + tx) Bytes/sec
7 node_number_of_running_pods Pod count per node Count
8 node_number_of_running_containers Container count per node Count

Example:

CloudWatch Container Insights graph of node-level metrics for EKS worker nodes on Outposts

Figure 19: Node-level Container Insights metrics for EKS worker nodes

Pod level

 

Metric Description Unit
1 pod_cpu_utilization % CPU used by pods Percent
2 pod_cpu_utilization_over_pod_limit CPU usage relative to pod limit Percent
3 pod_memory_utilization % memory used by pods Percent
4 pod_memory_utilization_over_pod_limit Memory usage relative to pod limit Percent
5 pod_network_rx_bytes Bytes received per second Bytes/sec
6 pod_network_tx_bytes Bytes transmitted per second Bytes/sec
7 pod_number_of_container_restarts Container restart count (stability indicator) Count

Example:

CloudWatch Container Insights graph of pod-level metrics for EKS workloads on Outposts

Figure 20: Pod-level Container Insights metrics for EKS workloads

Service level

 

Metric Description Unit
1 service_number_of_running_pods Running pods per service Count
2 namespace_number_of_running_pods Running pods per namespace Count
CloudWatch Container Insights graph of service-level running pod counts for EKS on Outposts

Figure 21: Service-level Container Insights metrics for EKS on Outposts

Step 5: Build a unified dashboard

Bring everything together in a single CloudWatch dashboard.

  1. Go to CloudWatch Console → Dashboards → Create dashboard.
  2. Name it Outposts-EKS-Monitoring
  3. Add widgets in this order:

Row 1 — Outposts infrastructure

  • InstanceFamilyCapacityUtilization (line chart)
  • EBSVolumeTypeCapacityUtilization (line chart)
  • UsedInstanceType_Count (number widget)

Row 2 — Node health

  • node_cpu_utilization (line chart)
  • node_memory_utilization (line chart)
  • node_filesystem_utilization (line chart)

Row 3 — Pod/container workloads

  • pod_cpu_utilization (line chart)
  • pod_memory_utilization (line chart)
  • pod_number_of_container_restarts (number widget)

Why this matters on Outposts

In the Region, if your containers need more resources, the infrastructure scales automatically. On Outposts, you have a fixed pool of compute, memory, and storage.

Without monitoring:

  • Pods fail to schedule when node capacity is exhausted.
  • Workloads get OOMKilled without warning.
  • Disk pressure causes pod evictions.
  • You have no visibility into how close you are to capacity limits.

By combining Container Insights metrics with Outposts infrastructure metrics in a single dashboard, you get a complete picture, from application-level container health down to physical infrastructure utilization. With it, you can plan capacity proactively before issues affect your workloads.

Useful references

Conclusion

Monitoring AWS Outposts requires visibility across four dimensions that don’t exist in pure-cloud deployments: Region connectivity health, local storage capacity, compute performance on fixed hardware, and container orchestration across hybrid boundaries. The gap between standard cloud monitoring and what Outposts demands is where incidents hide.

In this post, we walked through building that visibility layer using Systems Manager as the management foundation, Amazon CloudWatch for metrics and alarms, and Amazon EventBridge for automated incident response through OpsCenter. Together, these services give you a unified monitoring architecture that spans your data center and the parent Region.

Next steps

To get started with the monitoring approach described in this post:

  1. Deploy the Systems Manager agent to all Outpost instances and verify Region connectivity through the Fleet Manager console.
  2. Set up CloudWatch alarms for the critical Outpost metrics. Start with ConnectedStatus, OutpostFreeBytes, and CapacityExceptions before expanding to application-level metrics.
  3. Configure the Amazon EventBridge-to-OpsCenter integration shown in this post to automate incident creation for Outposts health events.
  4. Build a CloudWatch dashboard that combines network, storage, and compute metrics into a single operational view for your Outpost.

For more information, see the following resources:


About the authors

Aishwariya Khiani

Aishwariya Khiani

Aishwariya is a Technical Account Manager at Amazon Web Services with over 9 years of experience across cloud infrastructure, security, and operations. She brings deep expertise in cloud security and Generative AI, working with customers to architect secure, scalable environments and identify meaningful applications of AI that address complex business needs. Aishwariya is committed to helping organizations strengthen their cloud posture, accelerate innovation, and maximize the value of their AWS investments.

Arun Kumar N C

Arun Kumar N C

As an AWS Technical Account Manager specializing in Cloud networking and Generative AI, Arun excels at building strategic customer relationships and providing expert guidance. He helps customers develop scalable, secure, and cost-effective cloud solutions, offering proactive support and tailored advice to optimize AWS environments and drive successful cloud adoption.

Anjali Sharma

Anjali Sharma

Anjali is a Senior Technical Account Manager (TAM) at AWS with more than 10 years of IT experience. Her career includes roles as a Cloud Consultant and as an Operations Engineer at AWS Managed Services. In her current role, she partners with global enterprise customers to build secure, resilient, and sustainable solutions on AWS. She is passionate about troubleshooting complex issues and raising operational excellence for her customers, turning findings into prioritized, practical remediation that teams can act on.