CloudWatch Application Signals: APM Without Third-Party Tools
Application performance monitoring (APM) used to require Datadog, New Relic, or Dynatrace. CloudWatch Application Signals brings enterprise-grade APM directly into AWS—with automatic instrumentation and no agents to manage.
What Application Signals Provides
| Feature | Description |
|---|---|
| Service Map | Visual topology of service dependencies |
| SLO Monitoring | Define and track Service Level Objectives |
| Request Tracing | End-to-end distributed traces |
| Error Analysis | Automatic error grouping and trends |
| Golden Signals | Latency, traffic, errors, saturation |
Automatic Instrumentation
# Enable Application Signals for EKS
Resources:
EKSAddon:
Type: AWS::EKS::Addon
Properties:
ClusterName: !Ref EKSCluster
AddonName: amazon-cloudwatch-observability
AddonVersion: v1.5.0-eksbuild.1
ConfigurationValues: |
{
"agent": {
"config": {
"logs": {"metrics_collected": {"app_signals": {}}},
"traces": {"traces_collected": {"app_signals": {}}}
}
},
"containerLogs": {"enabled": true}
}
# For Lambda: Just enable in function config
MyFunction:
Type: AWS::Serverless::Function
Properties:
Handler: app.handler
Runtime: python3.12
Tracing: Active # Enables X-Ray + Application Signals
Defining SLOs
import boto3
cloudwatch = boto3.client('application-signals')
# Create SLO for API latency
cloudwatch.create_service_level_objective(
Name='api-latency-p99',
Description='99th percentile latency under 500ms',
SliConfig={
'SliMetricConfig': {
'KeyAttributes': {
'Service': 'order-api',
'Operation': 'POST /orders'
},
'MetricType': 'LATENCY',
'Statistic': 'p99'
},
'MetricThreshold': 500 # milliseconds
},
Goal={
'Interval': {
'RollingInterval': {
'Duration': 7,
'DurationUnit': 'DAY'
}
},
'AttainmentGoal': 99.9 # 99.9% of time
}
)
Cost Comparison
APM Cost Analysis (100 services, 1B requests/month)
- Datadog APM: ~$15,000-25,000/month
- New Relic: ~$12,000-20,000/month
- CloudWatch Application Signals: ~$3,000-5,000/month
Trade-off: Third-party tools have richer features, but Application Signals covers 80% of needs at 20% of the cost.
When to Use Application Signals
- AWS-native workloads: EKS, Lambda, ECS—automatic instrumentation
- Cost-sensitive: Significant savings over third-party APM
- Compliance: Data stays in your AWS account
- Starting out: Good enough for most teams starting observability journey
CloudWatch Application Signals represents AWS’s commitment to making observability a native platform capability, not a third-party add-on.