[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-aws-labs-observability":3,"mdc--9etfuj-key":36,"related-org-aws-labs-observability":2285,"related-repo-aws-labs-observability":2460},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":25,"repoUrl":26,"updatedAt":27,"license":28,"forks":29,"topics":30,"repo":31,"sourceUrl":34,"mdContent":35},"observability","implement AWS observability solutions","Design and implement AWS observability solutions. Use when configuring CloudWatch metrics, logs, alarms, dashboards, Logs Insights queries, X-Ray tracing, anomaly detection, or debugging monitoring gaps.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"aws-labs","AWS Labs","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Faws-labs.png","awslabs",[13,16,19,22],{"name":14,"slug":4,"type":15},"Observability","tag",{"name":17,"slug":18,"type":15},"Monitoring","monitoring",{"name":20,"slug":21,"type":15},"AWS","aws",{"name":23,"slug":24,"type":15},"Debugging","debugging",14,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fstartups","2026-07-12T08:40:52.824827",null,15,[],{"repoUrl":26,"stars":25,"forks":29,"topics":32,"description":33},[],"Official AWS Startups repository that hosts plugins, skills, tools and resources to support startup builders on AWS","https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fstartups\u002Ftree\u002FHEAD\u002Fsolution-architecture\u002Fplugins\u002Faws-dev-toolkit\u002Fskills\u002Fobservability","---\nname: observability\ndescription: Design and implement AWS observability solutions. Use when configuring CloudWatch metrics, logs, alarms, dashboards, Logs Insights queries, X-Ray tracing, anomaly detection, or debugging monitoring gaps.\nallowed-tools: Read, Grep, Glob, Bash(aws *), mcp__plugin_aws-dev-toolkit_awsknowledge__*\n---\n\nYou are an AWS observability specialist. Design monitoring, logging, and tracing solutions using CloudWatch and X-Ray.\n\n## CloudWatch Metrics\n\n### Key Concepts\n\n- **Namespace**: Grouping for metrics (e.g., `AWS\u002FEC2`, `AWS\u002FLambda`, custom)\n- **Metric**: Time-ordered set of data points (e.g., `CPUUtilization`)\n- **Dimension**: Key-value pair that identifies a metric (e.g., `InstanceId=i-xxx`)\n- **Period**: Aggregation interval (60s, 300s, etc.)\n- **Statistic**: Aggregation function (Average, Sum, Min, Max, p99, etc.)\n\n### Critical Metrics by Service\n\n| Service  | Metric                             | Alarm Threshold        | Notes                                    |\n| -------- | ---------------------------------- | ---------------------- | ---------------------------------------- |\n| Lambda   | Errors                             | > 0 for 1 min          | Also alarm on Throttles and Duration p99 |\n| Lambda   | ConcurrentExecutions               | > 80% of account limit | Prevent throttling                       |\n| ALB      | HTTPCode_Target_5XX_Count          | > 0 for 5 min          | Backend errors                           |\n| ALB      | TargetResponseTime p99             | > your SLA             | Latency SLO                              |\n| ALB      | UnHealthyHostCount                 | > 0                    | Failing targets                          |\n| RDS      | CPUUtilization                     | > 80% for 5 min        | Sustained high CPU                       |\n| RDS      | FreeStorageSpace                   | \u003C 20% of total         | Prevent disk full                        |\n| RDS      | DatabaseConnections                | > 80% of max           | Connection exhaustion                    |\n| DynamoDB | ThrottledRequests                  | > 0                    | Capacity issues                          |\n| SQS      | ApproximateAgeOfOldestMessage      | > your processing SLA  | Queue backlog                            |\n| ECS      | CPUUtilization \u002F MemoryUtilization | > 80% for 5 min        | Scaling trigger                          |\n\n### Custom Metrics\n\n- Use `PutMetricData` API or the CloudWatch Agent\n- Embedded Metric Format (EMF) for Lambda: log structured JSON that CloudWatch automatically extracts as metrics. Zero API calls, no cost per PutMetricData.\n- High-resolution metrics (1-second) cost more — use only when sub-minute granularity matters\n- Metric math: combine metrics without publishing new ones (e.g., error rate = Errors \u002F Invocations * 100)\n\n## CloudWatch Logs\n\n### Log Groups and Retention\n\n- Set retention on every log group. The default is **never expire** — this gets expensive fast.\n- Recommended: 30 days for dev, 90 days for production, archive to S3 for long-term\n- Use subscription filters to stream logs to Lambda, Kinesis, or OpenSearch\n\n### Structured Logging\n\nAlways log in JSON format. This enables Logs Insights queries on fields.\n\n```json\n{\n  \"level\": \"ERROR\",\n  \"message\": \"Payment failed\",\n  \"orderId\": \"123\",\n  \"errorCode\": \"DECLINED\",\n  \"duration_ms\": 45\n}\n```\n\n### CloudWatch Logs Insights Queries\n\n```\n# Find errors in Lambda functions\nfields @timestamp, @message\n| filter @message like \u002FERROR\u002F\n| sort @timestamp desc\n| limit 100\n\n# P99 latency from structured logs\nfields @timestamp, duration_ms\n| stats percentile(duration_ms, 99) as p99, avg(duration_ms) as avg_ms by bin(5m)\n\n# Top 10 most frequent errors\nfields @timestamp, errorCode, @message\n| filter level = \"ERROR\"\n| stats count(*) as error_count by errorCode\n| sort error_count desc\n| limit 10\n\n# Request rate over time\nfields @timestamp\n| stats count(*) as requests by bin(1m)\n| sort @timestamp desc\n\n# Find slow requests\nfields @timestamp, @duration, @requestId\n| filter @duration > 5000\n| sort @duration desc\n| limit 20\n\n# Cold starts in Lambda\nfilter @type = \"REPORT\"\n| fields @requestId, @duration, @initDuration\n| filter ispresent(@initDuration)\n| stats count(*) as cold_starts, avg(@initDuration) as avg_init by bin(1h)\n\n# API Gateway latency breakdown\nfields @timestamp\n| filter @message like \u002FAPI Gateway\u002F\n| stats avg(integrationLatency) as backend_ms, avg(latency) as total_ms by bin(5m)\n```\n\n## CloudWatch Alarms\n\n### Alarm Types\n\n- **Static threshold**: Fixed value (e.g., CPU > 80%)\n- **Anomaly detection**: ML-based band. Good for metrics with patterns (traffic, latency).\n- **Composite alarm**: Combine multiple alarms with AND\u002FOR logic. Reduces noise.\n\n### Alarm Best Practices\n\n- Use **3 out of 5 datapoints** evaluation to avoid flapping on transient spikes\n- Set `TreatMissingData` to `notBreaching` for low-traffic services (avoids false alarms when no data)\n- Set `TreatMissingData` to `breaching` for critical health checks (missing data = something is down)\n- Use composite alarms to create \"alarm hierarchies\": a top-level alarm that fires only when multiple sub-alarms are in ALARM state\n- Always send alarms to SNS. Connect SNS to PagerDuty, Slack, or email.\n\n### Anomaly Detection\n\n- Trains on 2 weeks of data. Do not enable during a known-bad period.\n- Adjust the band width (number of standard deviations). Start with 2, widen if too noisy.\n- Best for: request count, latency, error rate — metrics with daily\u002Fweekly patterns.\n- Not good for: binary metrics, metrics that are normally zero.\n\n## CloudWatch Dashboards\n\n### Dashboard Design\n\n- One dashboard per service or domain (not one giant dashboard)\n- Top row: key business metrics (request rate, error rate, latency p99)\n- Second row: infrastructure health (CPU, memory, connections)\n- Third row: dependencies (downstream API latency, queue depth)\n- Use metric math to show rates and percentages, not raw counts\n- Add text widgets to document what each section monitors and what to do when values are abnormal\n\n### Automatic Dashboards\n\n- CloudWatch provides automatic dashboards per service — start there before building custom\n- ServiceLens provides an application-centric view combining metrics, logs, and traces\n\n## X-Ray Tracing\n\n### When to Use X-Ray\n\n- Distributed applications with multiple services\n- Debugging latency issues across service boundaries\n- Understanding request flow and dependencies\n\n### Instrumentation\n\n- AWS SDK automatically instruments calls to AWS services\n- Use X-Ray SDK or OpenTelemetry to instrument your application code\n- Set sampling rules to control trace volume (default: 1 req\u002Fsec + 5% of additional)\n\n### Key X-Ray Concepts\n\n- **Trace**: End-to-end request path\n- **Segment**: A single service's processing of the request\n- **Subsegment**: Detailed breakdown within a segment (DB call, HTTP call)\n- **Service Map**: Visual representation of your architecture based on trace data\n- **Annotations**: Indexed key-value pairs for filtering traces (e.g., `customerId=123`)\n- **Metadata**: Non-indexed data attached to segments\n\n### X-Ray Best Practices\n\n- Add annotations for business-relevant fields (user ID, order ID) so you can filter traces\n- Use groups to define filter expressions for specific trace sets\n- Active tracing on API Gateway and Lambda captures the full request lifecycle\n- X-Ray daemon runs as a sidecar in ECS or as a DaemonSet in EKS\n\n## Contributor Insights\n\n- Identifies top contributors to a metric (e.g., top IPs, top API callers)\n- Define rules in JSON that specify log group + fields to analyze\n- Good for: identifying noisy neighbors, DDoS sources, hot partition keys in DynamoDB\n\n## Common CLI Commands\n\n```bash\n# Query Logs Insights\naws logs start-query --log-group-name \u002Faws\u002Flambda\u002Fmy-function \\\n  --start-time $(date -d '1 hour ago' +%s) --end-time $(date +%s) \\\n  --query-string 'fields @timestamp, @message | filter @message like \u002FERROR\u002F | limit 20'\n\n# Get query results\naws logs get-query-results --query-id \"query-id-here\"\n\n# Describe alarms in ALARM state\naws cloudwatch describe-alarms --state-value ALARM --query 'MetricAlarms[*].{Name:AlarmName,Metric:MetricName,State:StateValue}'\n\n# Get metric statistics\naws cloudwatch get-metric-statistics --namespace AWS\u002FLambda --metric-name Errors \\\n  --start-time 2024-01-01T00:00:00Z --end-time 2024-01-01T01:00:00Z \\\n  --period 300 --statistics Sum --dimensions Name=FunctionName,Value=my-function\n\n# Put custom metric\naws cloudwatch put-metric-data --namespace MyApp --metric-name RequestLatency \\\n  --value 42 --unit Milliseconds --dimensions Name=Environment,Value=prod\n\n# List log groups with retention\naws logs describe-log-groups --query 'logGroups[*].{Name:logGroupName,RetentionDays:retentionInDays,StoredBytes:storedBytes}'\n\n# Set log retention\naws logs put-retention-policy --log-group-name \u002Faws\u002Flambda\u002Fmy-function --retention-in-days 30\n\n# List X-Ray traces\naws xray get-trace-summaries --start-time $(date -d '1 hour ago' +%s) --end-time $(date +%s)\n\n# Get X-Ray service map\naws xray get-service-graph --start-time $(date -d '1 hour ago' +%s) --end-time $(date +%s)\n\n# List CloudWatch dashboards\naws cloudwatch list-dashboards\n```\n\n## Output Format\n\n| Field                 | Details                                                                      |\n| --------------------- | ---------------------------------------------------------------------------- |\n| **Metrics**           | Critical alarms with thresholds, evaluation periods, and actions             |\n| **Logs**              | Log groups, retention policy, structured format (JSON), subscription filters |\n| **Traces**            | X-Ray or OpenTelemetry, sampling rules, annotations for filtering            |\n| **Dashboards**        | Dashboard names, key widgets, layout (business\u002Finfra\u002Fdependencies)           |\n| **Anomaly detection** | Metrics with anomaly detection bands, standard deviation config              |\n| **Cost**              | Estimated monthly cost for logs ingestion, metrics, dashboards, and traces   |\n\n## Reference Files\n\n- `references\u002Flogs-insights-queries.md` — Ready-to-use CloudWatch Logs Insights queries organized by service (Lambda, API Gateway, ECS, VPC Flow Logs, CloudFront, structured logs)\n- `references\u002Falarm-recipes.md` — Production alarm configurations with thresholds, metric math examples, composite alarm and anomaly detection recipes\n\n## Related Skills\n\n- `lambda` — Lambda metrics, Embedded Metric Format, and X-Ray active tracing\n- `ecs` — Container Insights, task-level metrics, and ECS service alarms\n- `eks` — Control plane logging, Prometheus, and Container Insights for Kubernetes\n- `cloudfront` — CloudFront access logs and cache metrics\n- `api-gateway` — API Gateway latency and error monitoring\n- `networking` — VPC Flow Logs, Route53 health checks, and Transit Gateway metrics\n\n## Anti-Patterns\n\n- **No log retention policy**: CloudWatch Logs default to never expire. Costs grow silently. Set retention on every log group.\n- **Alarming on every metric**: Too many alarms leads to alert fatigue. Alarm on symptoms (error rate, latency), not causes (CPU). Use composite alarms to reduce noise.\n- **Average-based latency alarms**: Averages hide tail latency. Use p99 or p95 for latency alarms.\n- **Missing structured logging**: Unstructured logs cannot be queried efficiently with Logs Insights. Always log JSON.\n- **No tracing in distributed systems**: Without X-Ray or OpenTelemetry, debugging cross-service issues requires correlating timestamps across log groups. Enable tracing.\n- **Sampling rate of 100%**: Full tracing in production generates enormous data volume and cost. Use sampling — 1 req\u002Fsec + 5% is usually sufficient.\n- **Not using Embedded Metric Format in Lambda**: EMF turns log lines into metrics with zero PutMetricData API calls. It's cheaper and simpler than the alternatives.\n- **Dashboard without runbook links**: A dashboard that shows a problem without explaining what to do about it is only half useful. Add text widgets with runbook links.\n- **Ignoring CloudWatch anomaly detection**: Static thresholds don't work for metrics with daily patterns. Use anomaly detection for request count and latency.\n- **CloudWatch Agent not installed on EC2**: Without the agent, you only get basic metrics (CPU, network, disk I\u002FO). Install the agent for memory utilization, disk space, and custom metrics.\n",{"data":37,"body":39},{"name":4,"description":6,"allowed-tools":38},"Read, Grep, Glob, Bash(aws *), mcp__plugin_aws-dev-toolkit_awsknowledge__*",{"type":40,"children":41},"root",[42,50,57,64,152,158,440,446,477,483,489,514,520,525,743,749,759,765,771,804,810,873,879,902,908,914,947,953,966,972,978,996,1002,1020,1026,1096,1102,1125,1131,1149,1155,1941,1947,2064,2070,2095,2101,2170,2176,2279],{"type":43,"tag":44,"props":45,"children":46},"element","p",{},[47],{"type":48,"value":49},"text","You are an AWS observability specialist. Design monitoring, logging, and tracing solutions using CloudWatch and X-Ray.",{"type":43,"tag":51,"props":52,"children":54},"h2",{"id":53},"cloudwatch-metrics",[55],{"type":48,"value":56},"CloudWatch Metrics",{"type":43,"tag":58,"props":59,"children":61},"h3",{"id":60},"key-concepts",[62],{"type":48,"value":63},"Key Concepts",{"type":43,"tag":65,"props":66,"children":67},"ul",{},[68,97,115,132,142],{"type":43,"tag":69,"props":70,"children":71},"li",{},[72,78,80,87,89,95],{"type":43,"tag":73,"props":74,"children":75},"strong",{},[76],{"type":48,"value":77},"Namespace",{"type":48,"value":79},": Grouping for metrics (e.g., ",{"type":43,"tag":81,"props":82,"children":84},"code",{"className":83},[],[85],{"type":48,"value":86},"AWS\u002FEC2",{"type":48,"value":88},", ",{"type":43,"tag":81,"props":90,"children":92},{"className":91},[],[93],{"type":48,"value":94},"AWS\u002FLambda",{"type":48,"value":96},", custom)",{"type":43,"tag":69,"props":98,"children":99},{},[100,105,107,113],{"type":43,"tag":73,"props":101,"children":102},{},[103],{"type":48,"value":104},"Metric",{"type":48,"value":106},": Time-ordered set of data points (e.g., ",{"type":43,"tag":81,"props":108,"children":110},{"className":109},[],[111],{"type":48,"value":112},"CPUUtilization",{"type":48,"value":114},")",{"type":43,"tag":69,"props":116,"children":117},{},[118,123,125,131],{"type":43,"tag":73,"props":119,"children":120},{},[121],{"type":48,"value":122},"Dimension",{"type":48,"value":124},": Key-value pair that identifies a metric (e.g., ",{"type":43,"tag":81,"props":126,"children":128},{"className":127},[],[129],{"type":48,"value":130},"InstanceId=i-xxx",{"type":48,"value":114},{"type":43,"tag":69,"props":133,"children":134},{},[135,140],{"type":43,"tag":73,"props":136,"children":137},{},[138],{"type":48,"value":139},"Period",{"type":48,"value":141},": Aggregation interval (60s, 300s, etc.)",{"type":43,"tag":69,"props":143,"children":144},{},[145,150],{"type":43,"tag":73,"props":146,"children":147},{},[148],{"type":48,"value":149},"Statistic",{"type":48,"value":151},": Aggregation function (Average, Sum, Min, Max, p99, etc.)",{"type":43,"tag":58,"props":153,"children":155},{"id":154},"critical-metrics-by-service",[156],{"type":48,"value":157},"Critical Metrics by Service",{"type":43,"tag":159,"props":160,"children":161},"table",{},[162,190],{"type":43,"tag":163,"props":164,"children":165},"thead",{},[166],{"type":43,"tag":167,"props":168,"children":169},"tr",{},[170,176,180,185],{"type":43,"tag":171,"props":172,"children":173},"th",{},[174],{"type":48,"value":175},"Service",{"type":43,"tag":171,"props":177,"children":178},{},[179],{"type":48,"value":104},{"type":43,"tag":171,"props":181,"children":182},{},[183],{"type":48,"value":184},"Alarm Threshold",{"type":43,"tag":171,"props":186,"children":187},{},[188],{"type":48,"value":189},"Notes",{"type":43,"tag":191,"props":192,"children":193},"tbody",{},[194,218,240,263,285,307,329,351,373,395,418],{"type":43,"tag":167,"props":195,"children":196},{},[197,203,208,213],{"type":43,"tag":198,"props":199,"children":200},"td",{},[201],{"type":48,"value":202},"Lambda",{"type":43,"tag":198,"props":204,"children":205},{},[206],{"type":48,"value":207},"Errors",{"type":43,"tag":198,"props":209,"children":210},{},[211],{"type":48,"value":212},"> 0 for 1 min",{"type":43,"tag":198,"props":214,"children":215},{},[216],{"type":48,"value":217},"Also alarm on Throttles and Duration p99",{"type":43,"tag":167,"props":219,"children":220},{},[221,225,230,235],{"type":43,"tag":198,"props":222,"children":223},{},[224],{"type":48,"value":202},{"type":43,"tag":198,"props":226,"children":227},{},[228],{"type":48,"value":229},"ConcurrentExecutions",{"type":43,"tag":198,"props":231,"children":232},{},[233],{"type":48,"value":234},"> 80% of account limit",{"type":43,"tag":198,"props":236,"children":237},{},[238],{"type":48,"value":239},"Prevent throttling",{"type":43,"tag":167,"props":241,"children":242},{},[243,248,253,258],{"type":43,"tag":198,"props":244,"children":245},{},[246],{"type":48,"value":247},"ALB",{"type":43,"tag":198,"props":249,"children":250},{},[251],{"type":48,"value":252},"HTTPCode_Target_5XX_Count",{"type":43,"tag":198,"props":254,"children":255},{},[256],{"type":48,"value":257},"> 0 for 5 min",{"type":43,"tag":198,"props":259,"children":260},{},[261],{"type":48,"value":262},"Backend errors",{"type":43,"tag":167,"props":264,"children":265},{},[266,270,275,280],{"type":43,"tag":198,"props":267,"children":268},{},[269],{"type":48,"value":247},{"type":43,"tag":198,"props":271,"children":272},{},[273],{"type":48,"value":274},"TargetResponseTime p99",{"type":43,"tag":198,"props":276,"children":277},{},[278],{"type":48,"value":279},"> your SLA",{"type":43,"tag":198,"props":281,"children":282},{},[283],{"type":48,"value":284},"Latency SLO",{"type":43,"tag":167,"props":286,"children":287},{},[288,292,297,302],{"type":43,"tag":198,"props":289,"children":290},{},[291],{"type":48,"value":247},{"type":43,"tag":198,"props":293,"children":294},{},[295],{"type":48,"value":296},"UnHealthyHostCount",{"type":43,"tag":198,"props":298,"children":299},{},[300],{"type":48,"value":301},"> 0",{"type":43,"tag":198,"props":303,"children":304},{},[305],{"type":48,"value":306},"Failing targets",{"type":43,"tag":167,"props":308,"children":309},{},[310,315,319,324],{"type":43,"tag":198,"props":311,"children":312},{},[313],{"type":48,"value":314},"RDS",{"type":43,"tag":198,"props":316,"children":317},{},[318],{"type":48,"value":112},{"type":43,"tag":198,"props":320,"children":321},{},[322],{"type":48,"value":323},"> 80% for 5 min",{"type":43,"tag":198,"props":325,"children":326},{},[327],{"type":48,"value":328},"Sustained high CPU",{"type":43,"tag":167,"props":330,"children":331},{},[332,336,341,346],{"type":43,"tag":198,"props":333,"children":334},{},[335],{"type":48,"value":314},{"type":43,"tag":198,"props":337,"children":338},{},[339],{"type":48,"value":340},"FreeStorageSpace",{"type":43,"tag":198,"props":342,"children":343},{},[344],{"type":48,"value":345},"\u003C 20% of total",{"type":43,"tag":198,"props":347,"children":348},{},[349],{"type":48,"value":350},"Prevent disk full",{"type":43,"tag":167,"props":352,"children":353},{},[354,358,363,368],{"type":43,"tag":198,"props":355,"children":356},{},[357],{"type":48,"value":314},{"type":43,"tag":198,"props":359,"children":360},{},[361],{"type":48,"value":362},"DatabaseConnections",{"type":43,"tag":198,"props":364,"children":365},{},[366],{"type":48,"value":367},"> 80% of max",{"type":43,"tag":198,"props":369,"children":370},{},[371],{"type":48,"value":372},"Connection exhaustion",{"type":43,"tag":167,"props":374,"children":375},{},[376,381,386,390],{"type":43,"tag":198,"props":377,"children":378},{},[379],{"type":48,"value":380},"DynamoDB",{"type":43,"tag":198,"props":382,"children":383},{},[384],{"type":48,"value":385},"ThrottledRequests",{"type":43,"tag":198,"props":387,"children":388},{},[389],{"type":48,"value":301},{"type":43,"tag":198,"props":391,"children":392},{},[393],{"type":48,"value":394},"Capacity issues",{"type":43,"tag":167,"props":396,"children":397},{},[398,403,408,413],{"type":43,"tag":198,"props":399,"children":400},{},[401],{"type":48,"value":402},"SQS",{"type":43,"tag":198,"props":404,"children":405},{},[406],{"type":48,"value":407},"ApproximateAgeOfOldestMessage",{"type":43,"tag":198,"props":409,"children":410},{},[411],{"type":48,"value":412},"> your processing SLA",{"type":43,"tag":198,"props":414,"children":415},{},[416],{"type":48,"value":417},"Queue backlog",{"type":43,"tag":167,"props":419,"children":420},{},[421,426,431,435],{"type":43,"tag":198,"props":422,"children":423},{},[424],{"type":48,"value":425},"ECS",{"type":43,"tag":198,"props":427,"children":428},{},[429],{"type":48,"value":430},"CPUUtilization \u002F MemoryUtilization",{"type":43,"tag":198,"props":432,"children":433},{},[434],{"type":48,"value":323},{"type":43,"tag":198,"props":436,"children":437},{},[438],{"type":48,"value":439},"Scaling trigger",{"type":43,"tag":58,"props":441,"children":443},{"id":442},"custom-metrics",[444],{"type":48,"value":445},"Custom Metrics",{"type":43,"tag":65,"props":447,"children":448},{},[449,462,467,472],{"type":43,"tag":69,"props":450,"children":451},{},[452,454,460],{"type":48,"value":453},"Use ",{"type":43,"tag":81,"props":455,"children":457},{"className":456},[],[458],{"type":48,"value":459},"PutMetricData",{"type":48,"value":461}," API or the CloudWatch Agent",{"type":43,"tag":69,"props":463,"children":464},{},[465],{"type":48,"value":466},"Embedded Metric Format (EMF) for Lambda: log structured JSON that CloudWatch automatically extracts as metrics. Zero API calls, no cost per PutMetricData.",{"type":43,"tag":69,"props":468,"children":469},{},[470],{"type":48,"value":471},"High-resolution metrics (1-second) cost more — use only when sub-minute granularity matters",{"type":43,"tag":69,"props":473,"children":474},{},[475],{"type":48,"value":476},"Metric math: combine metrics without publishing new ones (e.g., error rate = Errors \u002F Invocations * 100)",{"type":43,"tag":51,"props":478,"children":480},{"id":479},"cloudwatch-logs",[481],{"type":48,"value":482},"CloudWatch Logs",{"type":43,"tag":58,"props":484,"children":486},{"id":485},"log-groups-and-retention",[487],{"type":48,"value":488},"Log Groups and Retention",{"type":43,"tag":65,"props":490,"children":491},{},[492,504,509],{"type":43,"tag":69,"props":493,"children":494},{},[495,497,502],{"type":48,"value":496},"Set retention on every log group. The default is ",{"type":43,"tag":73,"props":498,"children":499},{},[500],{"type":48,"value":501},"never expire",{"type":48,"value":503}," — this gets expensive fast.",{"type":43,"tag":69,"props":505,"children":506},{},[507],{"type":48,"value":508},"Recommended: 30 days for dev, 90 days for production, archive to S3 for long-term",{"type":43,"tag":69,"props":510,"children":511},{},[512],{"type":48,"value":513},"Use subscription filters to stream logs to Lambda, Kinesis, or OpenSearch",{"type":43,"tag":58,"props":515,"children":517},{"id":516},"structured-logging",[518],{"type":48,"value":519},"Structured Logging",{"type":43,"tag":44,"props":521,"children":522},{},[523],{"type":48,"value":524},"Always log in JSON format. This enables Logs Insights queries on fields.",{"type":43,"tag":526,"props":527,"children":532},"pre",{"className":528,"code":529,"language":530,"meta":531,"style":531},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"level\": \"ERROR\",\n  \"message\": \"Payment failed\",\n  \"orderId\": \"123\",\n  \"errorCode\": \"DECLINED\",\n  \"duration_ms\": 45\n}\n","json","",[533],{"type":43,"tag":81,"props":534,"children":535},{"__ignoreMap":531},[536,548,593,631,669,707,734],{"type":43,"tag":537,"props":538,"children":541},"span",{"class":539,"line":540},"line",1,[542],{"type":43,"tag":537,"props":543,"children":545},{"style":544},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[546],{"type":48,"value":547},"{\n",{"type":43,"tag":537,"props":549,"children":551},{"class":539,"line":550},2,[552,557,563,568,573,578,584,588],{"type":43,"tag":537,"props":553,"children":554},{"style":544},[555],{"type":48,"value":556},"  \"",{"type":43,"tag":537,"props":558,"children":560},{"style":559},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[561],{"type":48,"value":562},"level",{"type":43,"tag":537,"props":564,"children":565},{"style":544},[566],{"type":48,"value":567},"\"",{"type":43,"tag":537,"props":569,"children":570},{"style":544},[571],{"type":48,"value":572},":",{"type":43,"tag":537,"props":574,"children":575},{"style":544},[576],{"type":48,"value":577}," \"",{"type":43,"tag":537,"props":579,"children":581},{"style":580},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[582],{"type":48,"value":583},"ERROR",{"type":43,"tag":537,"props":585,"children":586},{"style":544},[587],{"type":48,"value":567},{"type":43,"tag":537,"props":589,"children":590},{"style":544},[591],{"type":48,"value":592},",\n",{"type":43,"tag":537,"props":594,"children":596},{"class":539,"line":595},3,[597,601,606,610,614,618,623,627],{"type":43,"tag":537,"props":598,"children":599},{"style":544},[600],{"type":48,"value":556},{"type":43,"tag":537,"props":602,"children":603},{"style":559},[604],{"type":48,"value":605},"message",{"type":43,"tag":537,"props":607,"children":608},{"style":544},[609],{"type":48,"value":567},{"type":43,"tag":537,"props":611,"children":612},{"style":544},[613],{"type":48,"value":572},{"type":43,"tag":537,"props":615,"children":616},{"style":544},[617],{"type":48,"value":577},{"type":43,"tag":537,"props":619,"children":620},{"style":580},[621],{"type":48,"value":622},"Payment failed",{"type":43,"tag":537,"props":624,"children":625},{"style":544},[626],{"type":48,"value":567},{"type":43,"tag":537,"props":628,"children":629},{"style":544},[630],{"type":48,"value":592},{"type":43,"tag":537,"props":632,"children":634},{"class":539,"line":633},4,[635,639,644,648,652,656,661,665],{"type":43,"tag":537,"props":636,"children":637},{"style":544},[638],{"type":48,"value":556},{"type":43,"tag":537,"props":640,"children":641},{"style":559},[642],{"type":48,"value":643},"orderId",{"type":43,"tag":537,"props":645,"children":646},{"style":544},[647],{"type":48,"value":567},{"type":43,"tag":537,"props":649,"children":650},{"style":544},[651],{"type":48,"value":572},{"type":43,"tag":537,"props":653,"children":654},{"style":544},[655],{"type":48,"value":577},{"type":43,"tag":537,"props":657,"children":658},{"style":580},[659],{"type":48,"value":660},"123",{"type":43,"tag":537,"props":662,"children":663},{"style":544},[664],{"type":48,"value":567},{"type":43,"tag":537,"props":666,"children":667},{"style":544},[668],{"type":48,"value":592},{"type":43,"tag":537,"props":670,"children":672},{"class":539,"line":671},5,[673,677,682,686,690,694,699,703],{"type":43,"tag":537,"props":674,"children":675},{"style":544},[676],{"type":48,"value":556},{"type":43,"tag":537,"props":678,"children":679},{"style":559},[680],{"type":48,"value":681},"errorCode",{"type":43,"tag":537,"props":683,"children":684},{"style":544},[685],{"type":48,"value":567},{"type":43,"tag":537,"props":687,"children":688},{"style":544},[689],{"type":48,"value":572},{"type":43,"tag":537,"props":691,"children":692},{"style":544},[693],{"type":48,"value":577},{"type":43,"tag":537,"props":695,"children":696},{"style":580},[697],{"type":48,"value":698},"DECLINED",{"type":43,"tag":537,"props":700,"children":701},{"style":544},[702],{"type":48,"value":567},{"type":43,"tag":537,"props":704,"children":705},{"style":544},[706],{"type":48,"value":592},{"type":43,"tag":537,"props":708,"children":710},{"class":539,"line":709},6,[711,715,720,724,728],{"type":43,"tag":537,"props":712,"children":713},{"style":544},[714],{"type":48,"value":556},{"type":43,"tag":537,"props":716,"children":717},{"style":559},[718],{"type":48,"value":719},"duration_ms",{"type":43,"tag":537,"props":721,"children":722},{"style":544},[723],{"type":48,"value":567},{"type":43,"tag":537,"props":725,"children":726},{"style":544},[727],{"type":48,"value":572},{"type":43,"tag":537,"props":729,"children":731},{"style":730},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[732],{"type":48,"value":733}," 45\n",{"type":43,"tag":537,"props":735,"children":737},{"class":539,"line":736},7,[738],{"type":43,"tag":537,"props":739,"children":740},{"style":544},[741],{"type":48,"value":742},"}\n",{"type":43,"tag":58,"props":744,"children":746},{"id":745},"cloudwatch-logs-insights-queries",[747],{"type":48,"value":748},"CloudWatch Logs Insights Queries",{"type":43,"tag":526,"props":750,"children":754},{"className":751,"code":753,"language":48},[752],"language-text","# Find errors in Lambda functions\nfields @timestamp, @message\n| filter @message like \u002FERROR\u002F\n| sort @timestamp desc\n| limit 100\n\n# P99 latency from structured logs\nfields @timestamp, duration_ms\n| stats percentile(duration_ms, 99) as p99, avg(duration_ms) as avg_ms by bin(5m)\n\n# Top 10 most frequent errors\nfields @timestamp, errorCode, @message\n| filter level = \"ERROR\"\n| stats count(*) as error_count by errorCode\n| sort error_count desc\n| limit 10\n\n# Request rate over time\nfields @timestamp\n| stats count(*) as requests by bin(1m)\n| sort @timestamp desc\n\n# Find slow requests\nfields @timestamp, @duration, @requestId\n| filter @duration > 5000\n| sort @duration desc\n| limit 20\n\n# Cold starts in Lambda\nfilter @type = \"REPORT\"\n| fields @requestId, @duration, @initDuration\n| filter ispresent(@initDuration)\n| stats count(*) as cold_starts, avg(@initDuration) as avg_init by bin(1h)\n\n# API Gateway latency breakdown\nfields @timestamp\n| filter @message like \u002FAPI Gateway\u002F\n| stats avg(integrationLatency) as backend_ms, avg(latency) as total_ms by bin(5m)\n",[755],{"type":43,"tag":81,"props":756,"children":757},{"__ignoreMap":531},[758],{"type":48,"value":753},{"type":43,"tag":51,"props":760,"children":762},{"id":761},"cloudwatch-alarms",[763],{"type":48,"value":764},"CloudWatch Alarms",{"type":43,"tag":58,"props":766,"children":768},{"id":767},"alarm-types",[769],{"type":48,"value":770},"Alarm Types",{"type":43,"tag":65,"props":772,"children":773},{},[774,784,794],{"type":43,"tag":69,"props":775,"children":776},{},[777,782],{"type":43,"tag":73,"props":778,"children":779},{},[780],{"type":48,"value":781},"Static threshold",{"type":48,"value":783},": Fixed value (e.g., CPU > 80%)",{"type":43,"tag":69,"props":785,"children":786},{},[787,792],{"type":43,"tag":73,"props":788,"children":789},{},[790],{"type":48,"value":791},"Anomaly detection",{"type":48,"value":793},": ML-based band. Good for metrics with patterns (traffic, latency).",{"type":43,"tag":69,"props":795,"children":796},{},[797,802],{"type":43,"tag":73,"props":798,"children":799},{},[800],{"type":48,"value":801},"Composite alarm",{"type":48,"value":803},": Combine multiple alarms with AND\u002FOR logic. Reduces noise.",{"type":43,"tag":58,"props":805,"children":807},{"id":806},"alarm-best-practices",[808],{"type":48,"value":809},"Alarm Best Practices",{"type":43,"tag":65,"props":811,"children":812},{},[813,824,845,863,868],{"type":43,"tag":69,"props":814,"children":815},{},[816,817,822],{"type":48,"value":453},{"type":43,"tag":73,"props":818,"children":819},{},[820],{"type":48,"value":821},"3 out of 5 datapoints",{"type":48,"value":823}," evaluation to avoid flapping on transient spikes",{"type":43,"tag":69,"props":825,"children":826},{},[827,829,835,837,843],{"type":48,"value":828},"Set ",{"type":43,"tag":81,"props":830,"children":832},{"className":831},[],[833],{"type":48,"value":834},"TreatMissingData",{"type":48,"value":836}," to ",{"type":43,"tag":81,"props":838,"children":840},{"className":839},[],[841],{"type":48,"value":842},"notBreaching",{"type":48,"value":844}," for low-traffic services (avoids false alarms when no data)",{"type":43,"tag":69,"props":846,"children":847},{},[848,849,854,855,861],{"type":48,"value":828},{"type":43,"tag":81,"props":850,"children":852},{"className":851},[],[853],{"type":48,"value":834},{"type":48,"value":836},{"type":43,"tag":81,"props":856,"children":858},{"className":857},[],[859],{"type":48,"value":860},"breaching",{"type":48,"value":862}," for critical health checks (missing data = something is down)",{"type":43,"tag":69,"props":864,"children":865},{},[866],{"type":48,"value":867},"Use composite alarms to create \"alarm hierarchies\": a top-level alarm that fires only when multiple sub-alarms are in ALARM state",{"type":43,"tag":69,"props":869,"children":870},{},[871],{"type":48,"value":872},"Always send alarms to SNS. Connect SNS to PagerDuty, Slack, or email.",{"type":43,"tag":58,"props":874,"children":876},{"id":875},"anomaly-detection",[877],{"type":48,"value":878},"Anomaly Detection",{"type":43,"tag":65,"props":880,"children":881},{},[882,887,892,897],{"type":43,"tag":69,"props":883,"children":884},{},[885],{"type":48,"value":886},"Trains on 2 weeks of data. Do not enable during a known-bad period.",{"type":43,"tag":69,"props":888,"children":889},{},[890],{"type":48,"value":891},"Adjust the band width (number of standard deviations). Start with 2, widen if too noisy.",{"type":43,"tag":69,"props":893,"children":894},{},[895],{"type":48,"value":896},"Best for: request count, latency, error rate — metrics with daily\u002Fweekly patterns.",{"type":43,"tag":69,"props":898,"children":899},{},[900],{"type":48,"value":901},"Not good for: binary metrics, metrics that are normally zero.",{"type":43,"tag":51,"props":903,"children":905},{"id":904},"cloudwatch-dashboards",[906],{"type":48,"value":907},"CloudWatch Dashboards",{"type":43,"tag":58,"props":909,"children":911},{"id":910},"dashboard-design",[912],{"type":48,"value":913},"Dashboard Design",{"type":43,"tag":65,"props":915,"children":916},{},[917,922,927,932,937,942],{"type":43,"tag":69,"props":918,"children":919},{},[920],{"type":48,"value":921},"One dashboard per service or domain (not one giant dashboard)",{"type":43,"tag":69,"props":923,"children":924},{},[925],{"type":48,"value":926},"Top row: key business metrics (request rate, error rate, latency p99)",{"type":43,"tag":69,"props":928,"children":929},{},[930],{"type":48,"value":931},"Second row: infrastructure health (CPU, memory, connections)",{"type":43,"tag":69,"props":933,"children":934},{},[935],{"type":48,"value":936},"Third row: dependencies (downstream API latency, queue depth)",{"type":43,"tag":69,"props":938,"children":939},{},[940],{"type":48,"value":941},"Use metric math to show rates and percentages, not raw counts",{"type":43,"tag":69,"props":943,"children":944},{},[945],{"type":48,"value":946},"Add text widgets to document what each section monitors and what to do when values are abnormal",{"type":43,"tag":58,"props":948,"children":950},{"id":949},"automatic-dashboards",[951],{"type":48,"value":952},"Automatic Dashboards",{"type":43,"tag":65,"props":954,"children":955},{},[956,961],{"type":43,"tag":69,"props":957,"children":958},{},[959],{"type":48,"value":960},"CloudWatch provides automatic dashboards per service — start there before building custom",{"type":43,"tag":69,"props":962,"children":963},{},[964],{"type":48,"value":965},"ServiceLens provides an application-centric view combining metrics, logs, and traces",{"type":43,"tag":51,"props":967,"children":969},{"id":968},"x-ray-tracing",[970],{"type":48,"value":971},"X-Ray Tracing",{"type":43,"tag":58,"props":973,"children":975},{"id":974},"when-to-use-x-ray",[976],{"type":48,"value":977},"When to Use X-Ray",{"type":43,"tag":65,"props":979,"children":980},{},[981,986,991],{"type":43,"tag":69,"props":982,"children":983},{},[984],{"type":48,"value":985},"Distributed applications with multiple services",{"type":43,"tag":69,"props":987,"children":988},{},[989],{"type":48,"value":990},"Debugging latency issues across service boundaries",{"type":43,"tag":69,"props":992,"children":993},{},[994],{"type":48,"value":995},"Understanding request flow and dependencies",{"type":43,"tag":58,"props":997,"children":999},{"id":998},"instrumentation",[1000],{"type":48,"value":1001},"Instrumentation",{"type":43,"tag":65,"props":1003,"children":1004},{},[1005,1010,1015],{"type":43,"tag":69,"props":1006,"children":1007},{},[1008],{"type":48,"value":1009},"AWS SDK automatically instruments calls to AWS services",{"type":43,"tag":69,"props":1011,"children":1012},{},[1013],{"type":48,"value":1014},"Use X-Ray SDK or OpenTelemetry to instrument your application code",{"type":43,"tag":69,"props":1016,"children":1017},{},[1018],{"type":48,"value":1019},"Set sampling rules to control trace volume (default: 1 req\u002Fsec + 5% of additional)",{"type":43,"tag":58,"props":1021,"children":1023},{"id":1022},"key-x-ray-concepts",[1024],{"type":48,"value":1025},"Key X-Ray Concepts",{"type":43,"tag":65,"props":1027,"children":1028},{},[1029,1039,1049,1059,1069,1086],{"type":43,"tag":69,"props":1030,"children":1031},{},[1032,1037],{"type":43,"tag":73,"props":1033,"children":1034},{},[1035],{"type":48,"value":1036},"Trace",{"type":48,"value":1038},": End-to-end request path",{"type":43,"tag":69,"props":1040,"children":1041},{},[1042,1047],{"type":43,"tag":73,"props":1043,"children":1044},{},[1045],{"type":48,"value":1046},"Segment",{"type":48,"value":1048},": A single service's processing of the request",{"type":43,"tag":69,"props":1050,"children":1051},{},[1052,1057],{"type":43,"tag":73,"props":1053,"children":1054},{},[1055],{"type":48,"value":1056},"Subsegment",{"type":48,"value":1058},": Detailed breakdown within a segment (DB call, HTTP call)",{"type":43,"tag":69,"props":1060,"children":1061},{},[1062,1067],{"type":43,"tag":73,"props":1063,"children":1064},{},[1065],{"type":48,"value":1066},"Service Map",{"type":48,"value":1068},": Visual representation of your architecture based on trace data",{"type":43,"tag":69,"props":1070,"children":1071},{},[1072,1077,1079,1085],{"type":43,"tag":73,"props":1073,"children":1074},{},[1075],{"type":48,"value":1076},"Annotations",{"type":48,"value":1078},": Indexed key-value pairs for filtering traces (e.g., ",{"type":43,"tag":81,"props":1080,"children":1082},{"className":1081},[],[1083],{"type":48,"value":1084},"customerId=123",{"type":48,"value":114},{"type":43,"tag":69,"props":1087,"children":1088},{},[1089,1094],{"type":43,"tag":73,"props":1090,"children":1091},{},[1092],{"type":48,"value":1093},"Metadata",{"type":48,"value":1095},": Non-indexed data attached to segments",{"type":43,"tag":58,"props":1097,"children":1099},{"id":1098},"x-ray-best-practices",[1100],{"type":48,"value":1101},"X-Ray Best Practices",{"type":43,"tag":65,"props":1103,"children":1104},{},[1105,1110,1115,1120],{"type":43,"tag":69,"props":1106,"children":1107},{},[1108],{"type":48,"value":1109},"Add annotations for business-relevant fields (user ID, order ID) so you can filter traces",{"type":43,"tag":69,"props":1111,"children":1112},{},[1113],{"type":48,"value":1114},"Use groups to define filter expressions for specific trace sets",{"type":43,"tag":69,"props":1116,"children":1117},{},[1118],{"type":48,"value":1119},"Active tracing on API Gateway and Lambda captures the full request lifecycle",{"type":43,"tag":69,"props":1121,"children":1122},{},[1123],{"type":48,"value":1124},"X-Ray daemon runs as a sidecar in ECS or as a DaemonSet in EKS",{"type":43,"tag":51,"props":1126,"children":1128},{"id":1127},"contributor-insights",[1129],{"type":48,"value":1130},"Contributor Insights",{"type":43,"tag":65,"props":1132,"children":1133},{},[1134,1139,1144],{"type":43,"tag":69,"props":1135,"children":1136},{},[1137],{"type":48,"value":1138},"Identifies top contributors to a metric (e.g., top IPs, top API callers)",{"type":43,"tag":69,"props":1140,"children":1141},{},[1142],{"type":48,"value":1143},"Define rules in JSON that specify log group + fields to analyze",{"type":43,"tag":69,"props":1145,"children":1146},{},[1147],{"type":48,"value":1148},"Good for: identifying noisy neighbors, DDoS sources, hot partition keys in DynamoDB",{"type":43,"tag":51,"props":1150,"children":1152},{"id":1151},"common-cli-commands",[1153],{"type":48,"value":1154},"Common CLI Commands",{"type":43,"tag":526,"props":1156,"children":1160},{"className":1157,"code":1158,"language":1159,"meta":531,"style":531},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Query Logs Insights\naws logs start-query --log-group-name \u002Faws\u002Flambda\u002Fmy-function \\\n  --start-time $(date -d '1 hour ago' +%s) --end-time $(date +%s) \\\n  --query-string 'fields @timestamp, @message | filter @message like \u002FERROR\u002F | limit 20'\n\n# Get query results\naws logs get-query-results --query-id \"query-id-here\"\n\n# Describe alarms in ALARM state\naws cloudwatch describe-alarms --state-value ALARM --query 'MetricAlarms[*].{Name:AlarmName,Metric:MetricName,State:StateValue}'\n\n# Get metric statistics\naws cloudwatch get-metric-statistics --namespace AWS\u002FLambda --metric-name Errors \\\n  --start-time 2024-01-01T00:00:00Z --end-time 2024-01-01T01:00:00Z \\\n  --period 300 --statistics Sum --dimensions Name=FunctionName,Value=my-function\n\n# Put custom metric\naws cloudwatch put-metric-data --namespace MyApp --metric-name RequestLatency \\\n  --value 42 --unit Milliseconds --dimensions Name=Environment,Value=prod\n\n# List log groups with retention\naws logs describe-log-groups --query 'logGroups[*].{Name:logGroupName,RetentionDays:retentionInDays,StoredBytes:storedBytes}'\n\n# Set log retention\naws logs put-retention-policy --log-group-name \u002Faws\u002Flambda\u002Fmy-function --retention-in-days 30\n\n# List X-Ray traces\naws xray get-trace-summaries --start-time $(date -d '1 hour ago' +%s) --end-time $(date +%s)\n\n# Get X-Ray service map\naws xray get-service-graph --start-time $(date -d '1 hour ago' +%s) --end-time $(date +%s)\n\n# List CloudWatch dashboards\naws cloudwatch list-dashboards\n","bash",[1161],{"type":43,"tag":81,"props":1162,"children":1163},{"__ignoreMap":531},[1164,1173,1207,1279,1301,1310,1318,1353,1361,1370,1416,1424,1433,1474,1499,1532,1540,1549,1588,1621,1629,1638,1672,1680,1689,1724,1732,1741,1817,1825,1834,1907,1915,1924],{"type":43,"tag":537,"props":1165,"children":1166},{"class":539,"line":540},[1167],{"type":43,"tag":537,"props":1168,"children":1170},{"style":1169},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[1171],{"type":48,"value":1172},"# Query Logs Insights\n",{"type":43,"tag":537,"props":1174,"children":1175},{"class":539,"line":550},[1176,1181,1186,1191,1196,1201],{"type":43,"tag":537,"props":1177,"children":1179},{"style":1178},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[1180],{"type":48,"value":21},{"type":43,"tag":537,"props":1182,"children":1183},{"style":580},[1184],{"type":48,"value":1185}," logs",{"type":43,"tag":537,"props":1187,"children":1188},{"style":580},[1189],{"type":48,"value":1190}," start-query",{"type":43,"tag":537,"props":1192,"children":1193},{"style":580},[1194],{"type":48,"value":1195}," --log-group-name",{"type":43,"tag":537,"props":1197,"children":1198},{"style":580},[1199],{"type":48,"value":1200}," \u002Faws\u002Flambda\u002Fmy-function",{"type":43,"tag":537,"props":1202,"children":1204},{"style":1203},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[1205],{"type":48,"value":1206}," \\\n",{"type":43,"tag":537,"props":1208,"children":1209},{"class":539,"line":595},[1210,1215,1220,1225,1230,1235,1240,1245,1250,1254,1259,1263,1267,1271,1275],{"type":43,"tag":537,"props":1211,"children":1212},{"style":580},[1213],{"type":48,"value":1214},"  --start-time",{"type":43,"tag":537,"props":1216,"children":1217},{"style":544},[1218],{"type":48,"value":1219}," $(",{"type":43,"tag":537,"props":1221,"children":1222},{"style":1178},[1223],{"type":48,"value":1224},"date",{"type":43,"tag":537,"props":1226,"children":1227},{"style":580},[1228],{"type":48,"value":1229}," -d",{"type":43,"tag":537,"props":1231,"children":1232},{"style":544},[1233],{"type":48,"value":1234}," '",{"type":43,"tag":537,"props":1236,"children":1237},{"style":580},[1238],{"type":48,"value":1239},"1 hour ago",{"type":43,"tag":537,"props":1241,"children":1242},{"style":544},[1243],{"type":48,"value":1244},"'",{"type":43,"tag":537,"props":1246,"children":1247},{"style":580},[1248],{"type":48,"value":1249}," +%s",{"type":43,"tag":537,"props":1251,"children":1252},{"style":544},[1253],{"type":48,"value":114},{"type":43,"tag":537,"props":1255,"children":1256},{"style":580},[1257],{"type":48,"value":1258}," --end-time",{"type":43,"tag":537,"props":1260,"children":1261},{"style":544},[1262],{"type":48,"value":1219},{"type":43,"tag":537,"props":1264,"children":1265},{"style":1178},[1266],{"type":48,"value":1224},{"type":43,"tag":537,"props":1268,"children":1269},{"style":580},[1270],{"type":48,"value":1249},{"type":43,"tag":537,"props":1272,"children":1273},{"style":544},[1274],{"type":48,"value":114},{"type":43,"tag":537,"props":1276,"children":1277},{"style":1203},[1278],{"type":48,"value":1206},{"type":43,"tag":537,"props":1280,"children":1281},{"class":539,"line":633},[1282,1287,1291,1296],{"type":43,"tag":537,"props":1283,"children":1284},{"style":580},[1285],{"type":48,"value":1286},"  --query-string",{"type":43,"tag":537,"props":1288,"children":1289},{"style":544},[1290],{"type":48,"value":1234},{"type":43,"tag":537,"props":1292,"children":1293},{"style":580},[1294],{"type":48,"value":1295},"fields @timestamp, @message | filter @message like \u002FERROR\u002F | limit 20",{"type":43,"tag":537,"props":1297,"children":1298},{"style":544},[1299],{"type":48,"value":1300},"'\n",{"type":43,"tag":537,"props":1302,"children":1303},{"class":539,"line":671},[1304],{"type":43,"tag":537,"props":1305,"children":1307},{"emptyLinePlaceholder":1306},true,[1308],{"type":48,"value":1309},"\n",{"type":43,"tag":537,"props":1311,"children":1312},{"class":539,"line":709},[1313],{"type":43,"tag":537,"props":1314,"children":1315},{"style":1169},[1316],{"type":48,"value":1317},"# Get query results\n",{"type":43,"tag":537,"props":1319,"children":1320},{"class":539,"line":736},[1321,1325,1329,1334,1339,1343,1348],{"type":43,"tag":537,"props":1322,"children":1323},{"style":1178},[1324],{"type":48,"value":21},{"type":43,"tag":537,"props":1326,"children":1327},{"style":580},[1328],{"type":48,"value":1185},{"type":43,"tag":537,"props":1330,"children":1331},{"style":580},[1332],{"type":48,"value":1333}," get-query-results",{"type":43,"tag":537,"props":1335,"children":1336},{"style":580},[1337],{"type":48,"value":1338}," --query-id",{"type":43,"tag":537,"props":1340,"children":1341},{"style":544},[1342],{"type":48,"value":577},{"type":43,"tag":537,"props":1344,"children":1345},{"style":580},[1346],{"type":48,"value":1347},"query-id-here",{"type":43,"tag":537,"props":1349,"children":1350},{"style":544},[1351],{"type":48,"value":1352},"\"\n",{"type":43,"tag":537,"props":1354,"children":1356},{"class":539,"line":1355},8,[1357],{"type":43,"tag":537,"props":1358,"children":1359},{"emptyLinePlaceholder":1306},[1360],{"type":48,"value":1309},{"type":43,"tag":537,"props":1362,"children":1364},{"class":539,"line":1363},9,[1365],{"type":43,"tag":537,"props":1366,"children":1367},{"style":1169},[1368],{"type":48,"value":1369},"# Describe alarms in ALARM state\n",{"type":43,"tag":537,"props":1371,"children":1373},{"class":539,"line":1372},10,[1374,1378,1383,1388,1393,1398,1403,1407,1412],{"type":43,"tag":537,"props":1375,"children":1376},{"style":1178},[1377],{"type":48,"value":21},{"type":43,"tag":537,"props":1379,"children":1380},{"style":580},[1381],{"type":48,"value":1382}," cloudwatch",{"type":43,"tag":537,"props":1384,"children":1385},{"style":580},[1386],{"type":48,"value":1387}," describe-alarms",{"type":43,"tag":537,"props":1389,"children":1390},{"style":580},[1391],{"type":48,"value":1392}," --state-value",{"type":43,"tag":537,"props":1394,"children":1395},{"style":580},[1396],{"type":48,"value":1397}," ALARM",{"type":43,"tag":537,"props":1399,"children":1400},{"style":580},[1401],{"type":48,"value":1402}," --query",{"type":43,"tag":537,"props":1404,"children":1405},{"style":544},[1406],{"type":48,"value":1234},{"type":43,"tag":537,"props":1408,"children":1409},{"style":580},[1410],{"type":48,"value":1411},"MetricAlarms[*].{Name:AlarmName,Metric:MetricName,State:StateValue}",{"type":43,"tag":537,"props":1413,"children":1414},{"style":544},[1415],{"type":48,"value":1300},{"type":43,"tag":537,"props":1417,"children":1419},{"class":539,"line":1418},11,[1420],{"type":43,"tag":537,"props":1421,"children":1422},{"emptyLinePlaceholder":1306},[1423],{"type":48,"value":1309},{"type":43,"tag":537,"props":1425,"children":1427},{"class":539,"line":1426},12,[1428],{"type":43,"tag":537,"props":1429,"children":1430},{"style":1169},[1431],{"type":48,"value":1432},"# Get metric statistics\n",{"type":43,"tag":537,"props":1434,"children":1436},{"class":539,"line":1435},13,[1437,1441,1445,1450,1455,1460,1465,1470],{"type":43,"tag":537,"props":1438,"children":1439},{"style":1178},[1440],{"type":48,"value":21},{"type":43,"tag":537,"props":1442,"children":1443},{"style":580},[1444],{"type":48,"value":1382},{"type":43,"tag":537,"props":1446,"children":1447},{"style":580},[1448],{"type":48,"value":1449}," get-metric-statistics",{"type":43,"tag":537,"props":1451,"children":1452},{"style":580},[1453],{"type":48,"value":1454}," --namespace",{"type":43,"tag":537,"props":1456,"children":1457},{"style":580},[1458],{"type":48,"value":1459}," AWS\u002FLambda",{"type":43,"tag":537,"props":1461,"children":1462},{"style":580},[1463],{"type":48,"value":1464}," --metric-name",{"type":43,"tag":537,"props":1466,"children":1467},{"style":580},[1468],{"type":48,"value":1469}," Errors",{"type":43,"tag":537,"props":1471,"children":1472},{"style":1203},[1473],{"type":48,"value":1206},{"type":43,"tag":537,"props":1475,"children":1476},{"class":539,"line":25},[1477,1481,1486,1490,1495],{"type":43,"tag":537,"props":1478,"children":1479},{"style":580},[1480],{"type":48,"value":1214},{"type":43,"tag":537,"props":1482,"children":1483},{"style":580},[1484],{"type":48,"value":1485}," 2024-01-01T00:00:00Z",{"type":43,"tag":537,"props":1487,"children":1488},{"style":580},[1489],{"type":48,"value":1258},{"type":43,"tag":537,"props":1491,"children":1492},{"style":580},[1493],{"type":48,"value":1494}," 2024-01-01T01:00:00Z",{"type":43,"tag":537,"props":1496,"children":1497},{"style":1203},[1498],{"type":48,"value":1206},{"type":43,"tag":537,"props":1500,"children":1501},{"class":539,"line":29},[1502,1507,1512,1517,1522,1527],{"type":43,"tag":537,"props":1503,"children":1504},{"style":580},[1505],{"type":48,"value":1506},"  --period",{"type":43,"tag":537,"props":1508,"children":1509},{"style":730},[1510],{"type":48,"value":1511}," 300",{"type":43,"tag":537,"props":1513,"children":1514},{"style":580},[1515],{"type":48,"value":1516}," --statistics",{"type":43,"tag":537,"props":1518,"children":1519},{"style":580},[1520],{"type":48,"value":1521}," Sum",{"type":43,"tag":537,"props":1523,"children":1524},{"style":580},[1525],{"type":48,"value":1526}," --dimensions",{"type":43,"tag":537,"props":1528,"children":1529},{"style":580},[1530],{"type":48,"value":1531}," Name=FunctionName,Value=my-function\n",{"type":43,"tag":537,"props":1533,"children":1535},{"class":539,"line":1534},16,[1536],{"type":43,"tag":537,"props":1537,"children":1538},{"emptyLinePlaceholder":1306},[1539],{"type":48,"value":1309},{"type":43,"tag":537,"props":1541,"children":1543},{"class":539,"line":1542},17,[1544],{"type":43,"tag":537,"props":1545,"children":1546},{"style":1169},[1547],{"type":48,"value":1548},"# Put custom metric\n",{"type":43,"tag":537,"props":1550,"children":1552},{"class":539,"line":1551},18,[1553,1557,1561,1566,1570,1575,1579,1584],{"type":43,"tag":537,"props":1554,"children":1555},{"style":1178},[1556],{"type":48,"value":21},{"type":43,"tag":537,"props":1558,"children":1559},{"style":580},[1560],{"type":48,"value":1382},{"type":43,"tag":537,"props":1562,"children":1563},{"style":580},[1564],{"type":48,"value":1565}," put-metric-data",{"type":43,"tag":537,"props":1567,"children":1568},{"style":580},[1569],{"type":48,"value":1454},{"type":43,"tag":537,"props":1571,"children":1572},{"style":580},[1573],{"type":48,"value":1574}," MyApp",{"type":43,"tag":537,"props":1576,"children":1577},{"style":580},[1578],{"type":48,"value":1464},{"type":43,"tag":537,"props":1580,"children":1581},{"style":580},[1582],{"type":48,"value":1583}," RequestLatency",{"type":43,"tag":537,"props":1585,"children":1586},{"style":1203},[1587],{"type":48,"value":1206},{"type":43,"tag":537,"props":1589,"children":1591},{"class":539,"line":1590},19,[1592,1597,1602,1607,1612,1616],{"type":43,"tag":537,"props":1593,"children":1594},{"style":580},[1595],{"type":48,"value":1596},"  --value",{"type":43,"tag":537,"props":1598,"children":1599},{"style":730},[1600],{"type":48,"value":1601}," 42",{"type":43,"tag":537,"props":1603,"children":1604},{"style":580},[1605],{"type":48,"value":1606}," --unit",{"type":43,"tag":537,"props":1608,"children":1609},{"style":580},[1610],{"type":48,"value":1611}," Milliseconds",{"type":43,"tag":537,"props":1613,"children":1614},{"style":580},[1615],{"type":48,"value":1526},{"type":43,"tag":537,"props":1617,"children":1618},{"style":580},[1619],{"type":48,"value":1620}," Name=Environment,Value=prod\n",{"type":43,"tag":537,"props":1622,"children":1624},{"class":539,"line":1623},20,[1625],{"type":43,"tag":537,"props":1626,"children":1627},{"emptyLinePlaceholder":1306},[1628],{"type":48,"value":1309},{"type":43,"tag":537,"props":1630,"children":1632},{"class":539,"line":1631},21,[1633],{"type":43,"tag":537,"props":1634,"children":1635},{"style":1169},[1636],{"type":48,"value":1637},"# List log groups with retention\n",{"type":43,"tag":537,"props":1639,"children":1641},{"class":539,"line":1640},22,[1642,1646,1650,1655,1659,1663,1668],{"type":43,"tag":537,"props":1643,"children":1644},{"style":1178},[1645],{"type":48,"value":21},{"type":43,"tag":537,"props":1647,"children":1648},{"style":580},[1649],{"type":48,"value":1185},{"type":43,"tag":537,"props":1651,"children":1652},{"style":580},[1653],{"type":48,"value":1654}," describe-log-groups",{"type":43,"tag":537,"props":1656,"children":1657},{"style":580},[1658],{"type":48,"value":1402},{"type":43,"tag":537,"props":1660,"children":1661},{"style":544},[1662],{"type":48,"value":1234},{"type":43,"tag":537,"props":1664,"children":1665},{"style":580},[1666],{"type":48,"value":1667},"logGroups[*].{Name:logGroupName,RetentionDays:retentionInDays,StoredBytes:storedBytes}",{"type":43,"tag":537,"props":1669,"children":1670},{"style":544},[1671],{"type":48,"value":1300},{"type":43,"tag":537,"props":1673,"children":1675},{"class":539,"line":1674},23,[1676],{"type":43,"tag":537,"props":1677,"children":1678},{"emptyLinePlaceholder":1306},[1679],{"type":48,"value":1309},{"type":43,"tag":537,"props":1681,"children":1683},{"class":539,"line":1682},24,[1684],{"type":43,"tag":537,"props":1685,"children":1686},{"style":1169},[1687],{"type":48,"value":1688},"# Set log retention\n",{"type":43,"tag":537,"props":1690,"children":1692},{"class":539,"line":1691},25,[1693,1697,1701,1706,1710,1714,1719],{"type":43,"tag":537,"props":1694,"children":1695},{"style":1178},[1696],{"type":48,"value":21},{"type":43,"tag":537,"props":1698,"children":1699},{"style":580},[1700],{"type":48,"value":1185},{"type":43,"tag":537,"props":1702,"children":1703},{"style":580},[1704],{"type":48,"value":1705}," put-retention-policy",{"type":43,"tag":537,"props":1707,"children":1708},{"style":580},[1709],{"type":48,"value":1195},{"type":43,"tag":537,"props":1711,"children":1712},{"style":580},[1713],{"type":48,"value":1200},{"type":43,"tag":537,"props":1715,"children":1716},{"style":580},[1717],{"type":48,"value":1718}," --retention-in-days",{"type":43,"tag":537,"props":1720,"children":1721},{"style":730},[1722],{"type":48,"value":1723}," 30\n",{"type":43,"tag":537,"props":1725,"children":1727},{"class":539,"line":1726},26,[1728],{"type":43,"tag":537,"props":1729,"children":1730},{"emptyLinePlaceholder":1306},[1731],{"type":48,"value":1309},{"type":43,"tag":537,"props":1733,"children":1735},{"class":539,"line":1734},27,[1736],{"type":43,"tag":537,"props":1737,"children":1738},{"style":1169},[1739],{"type":48,"value":1740},"# List X-Ray traces\n",{"type":43,"tag":537,"props":1742,"children":1744},{"class":539,"line":1743},28,[1745,1749,1754,1759,1764,1768,1772,1776,1780,1784,1788,1792,1796,1800,1804,1808,1812],{"type":43,"tag":537,"props":1746,"children":1747},{"style":1178},[1748],{"type":48,"value":21},{"type":43,"tag":537,"props":1750,"children":1751},{"style":580},[1752],{"type":48,"value":1753}," xray",{"type":43,"tag":537,"props":1755,"children":1756},{"style":580},[1757],{"type":48,"value":1758}," get-trace-summaries",{"type":43,"tag":537,"props":1760,"children":1761},{"style":580},[1762],{"type":48,"value":1763}," --start-time",{"type":43,"tag":537,"props":1765,"children":1766},{"style":544},[1767],{"type":48,"value":1219},{"type":43,"tag":537,"props":1769,"children":1770},{"style":1178},[1771],{"type":48,"value":1224},{"type":43,"tag":537,"props":1773,"children":1774},{"style":580},[1775],{"type":48,"value":1229},{"type":43,"tag":537,"props":1777,"children":1778},{"style":544},[1779],{"type":48,"value":1234},{"type":43,"tag":537,"props":1781,"children":1782},{"style":580},[1783],{"type":48,"value":1239},{"type":43,"tag":537,"props":1785,"children":1786},{"style":544},[1787],{"type":48,"value":1244},{"type":43,"tag":537,"props":1789,"children":1790},{"style":580},[1791],{"type":48,"value":1249},{"type":43,"tag":537,"props":1793,"children":1794},{"style":544},[1795],{"type":48,"value":114},{"type":43,"tag":537,"props":1797,"children":1798},{"style":580},[1799],{"type":48,"value":1258},{"type":43,"tag":537,"props":1801,"children":1802},{"style":544},[1803],{"type":48,"value":1219},{"type":43,"tag":537,"props":1805,"children":1806},{"style":1178},[1807],{"type":48,"value":1224},{"type":43,"tag":537,"props":1809,"children":1810},{"style":580},[1811],{"type":48,"value":1249},{"type":43,"tag":537,"props":1813,"children":1814},{"style":544},[1815],{"type":48,"value":1816},")\n",{"type":43,"tag":537,"props":1818,"children":1820},{"class":539,"line":1819},29,[1821],{"type":43,"tag":537,"props":1822,"children":1823},{"emptyLinePlaceholder":1306},[1824],{"type":48,"value":1309},{"type":43,"tag":537,"props":1826,"children":1828},{"class":539,"line":1827},30,[1829],{"type":43,"tag":537,"props":1830,"children":1831},{"style":1169},[1832],{"type":48,"value":1833},"# Get X-Ray service map\n",{"type":43,"tag":537,"props":1835,"children":1837},{"class":539,"line":1836},31,[1838,1842,1846,1851,1855,1859,1863,1867,1871,1875,1879,1883,1887,1891,1895,1899,1903],{"type":43,"tag":537,"props":1839,"children":1840},{"style":1178},[1841],{"type":48,"value":21},{"type":43,"tag":537,"props":1843,"children":1844},{"style":580},[1845],{"type":48,"value":1753},{"type":43,"tag":537,"props":1847,"children":1848},{"style":580},[1849],{"type":48,"value":1850}," get-service-graph",{"type":43,"tag":537,"props":1852,"children":1853},{"style":580},[1854],{"type":48,"value":1763},{"type":43,"tag":537,"props":1856,"children":1857},{"style":544},[1858],{"type":48,"value":1219},{"type":43,"tag":537,"props":1860,"children":1861},{"style":1178},[1862],{"type":48,"value":1224},{"type":43,"tag":537,"props":1864,"children":1865},{"style":580},[1866],{"type":48,"value":1229},{"type":43,"tag":537,"props":1868,"children":1869},{"style":544},[1870],{"type":48,"value":1234},{"type":43,"tag":537,"props":1872,"children":1873},{"style":580},[1874],{"type":48,"value":1239},{"type":43,"tag":537,"props":1876,"children":1877},{"style":544},[1878],{"type":48,"value":1244},{"type":43,"tag":537,"props":1880,"children":1881},{"style":580},[1882],{"type":48,"value":1249},{"type":43,"tag":537,"props":1884,"children":1885},{"style":544},[1886],{"type":48,"value":114},{"type":43,"tag":537,"props":1888,"children":1889},{"style":580},[1890],{"type":48,"value":1258},{"type":43,"tag":537,"props":1892,"children":1893},{"style":544},[1894],{"type":48,"value":1219},{"type":43,"tag":537,"props":1896,"children":1897},{"style":1178},[1898],{"type":48,"value":1224},{"type":43,"tag":537,"props":1900,"children":1901},{"style":580},[1902],{"type":48,"value":1249},{"type":43,"tag":537,"props":1904,"children":1905},{"style":544},[1906],{"type":48,"value":1816},{"type":43,"tag":537,"props":1908,"children":1910},{"class":539,"line":1909},32,[1911],{"type":43,"tag":537,"props":1912,"children":1913},{"emptyLinePlaceholder":1306},[1914],{"type":48,"value":1309},{"type":43,"tag":537,"props":1916,"children":1918},{"class":539,"line":1917},33,[1919],{"type":43,"tag":537,"props":1920,"children":1921},{"style":1169},[1922],{"type":48,"value":1923},"# List CloudWatch dashboards\n",{"type":43,"tag":537,"props":1925,"children":1927},{"class":539,"line":1926},34,[1928,1932,1936],{"type":43,"tag":537,"props":1929,"children":1930},{"style":1178},[1931],{"type":48,"value":21},{"type":43,"tag":537,"props":1933,"children":1934},{"style":580},[1935],{"type":48,"value":1382},{"type":43,"tag":537,"props":1937,"children":1938},{"style":580},[1939],{"type":48,"value":1940}," list-dashboards\n",{"type":43,"tag":51,"props":1942,"children":1944},{"id":1943},"output-format",[1945],{"type":48,"value":1946},"Output Format",{"type":43,"tag":159,"props":1948,"children":1949},{},[1950,1966],{"type":43,"tag":163,"props":1951,"children":1952},{},[1953],{"type":43,"tag":167,"props":1954,"children":1955},{},[1956,1961],{"type":43,"tag":171,"props":1957,"children":1958},{},[1959],{"type":48,"value":1960},"Field",{"type":43,"tag":171,"props":1962,"children":1963},{},[1964],{"type":48,"value":1965},"Details",{"type":43,"tag":191,"props":1967,"children":1968},{},[1969,1985,2001,2017,2033,2048],{"type":43,"tag":167,"props":1970,"children":1971},{},[1972,1980],{"type":43,"tag":198,"props":1973,"children":1974},{},[1975],{"type":43,"tag":73,"props":1976,"children":1977},{},[1978],{"type":48,"value":1979},"Metrics",{"type":43,"tag":198,"props":1981,"children":1982},{},[1983],{"type":48,"value":1984},"Critical alarms with thresholds, evaluation periods, and actions",{"type":43,"tag":167,"props":1986,"children":1987},{},[1988,1996],{"type":43,"tag":198,"props":1989,"children":1990},{},[1991],{"type":43,"tag":73,"props":1992,"children":1993},{},[1994],{"type":48,"value":1995},"Logs",{"type":43,"tag":198,"props":1997,"children":1998},{},[1999],{"type":48,"value":2000},"Log groups, retention policy, structured format (JSON), subscription filters",{"type":43,"tag":167,"props":2002,"children":2003},{},[2004,2012],{"type":43,"tag":198,"props":2005,"children":2006},{},[2007],{"type":43,"tag":73,"props":2008,"children":2009},{},[2010],{"type":48,"value":2011},"Traces",{"type":43,"tag":198,"props":2013,"children":2014},{},[2015],{"type":48,"value":2016},"X-Ray or OpenTelemetry, sampling rules, annotations for filtering",{"type":43,"tag":167,"props":2018,"children":2019},{},[2020,2028],{"type":43,"tag":198,"props":2021,"children":2022},{},[2023],{"type":43,"tag":73,"props":2024,"children":2025},{},[2026],{"type":48,"value":2027},"Dashboards",{"type":43,"tag":198,"props":2029,"children":2030},{},[2031],{"type":48,"value":2032},"Dashboard names, key widgets, layout (business\u002Finfra\u002Fdependencies)",{"type":43,"tag":167,"props":2034,"children":2035},{},[2036,2043],{"type":43,"tag":198,"props":2037,"children":2038},{},[2039],{"type":43,"tag":73,"props":2040,"children":2041},{},[2042],{"type":48,"value":791},{"type":43,"tag":198,"props":2044,"children":2045},{},[2046],{"type":48,"value":2047},"Metrics with anomaly detection bands, standard deviation config",{"type":43,"tag":167,"props":2049,"children":2050},{},[2051,2059],{"type":43,"tag":198,"props":2052,"children":2053},{},[2054],{"type":43,"tag":73,"props":2055,"children":2056},{},[2057],{"type":48,"value":2058},"Cost",{"type":43,"tag":198,"props":2060,"children":2061},{},[2062],{"type":48,"value":2063},"Estimated monthly cost for logs ingestion, metrics, dashboards, and traces",{"type":43,"tag":51,"props":2065,"children":2067},{"id":2066},"reference-files",[2068],{"type":48,"value":2069},"Reference Files",{"type":43,"tag":65,"props":2071,"children":2072},{},[2073,2084],{"type":43,"tag":69,"props":2074,"children":2075},{},[2076,2082],{"type":43,"tag":81,"props":2077,"children":2079},{"className":2078},[],[2080],{"type":48,"value":2081},"references\u002Flogs-insights-queries.md",{"type":48,"value":2083}," — Ready-to-use CloudWatch Logs Insights queries organized by service (Lambda, API Gateway, ECS, VPC Flow Logs, CloudFront, structured logs)",{"type":43,"tag":69,"props":2085,"children":2086},{},[2087,2093],{"type":43,"tag":81,"props":2088,"children":2090},{"className":2089},[],[2091],{"type":48,"value":2092},"references\u002Falarm-recipes.md",{"type":48,"value":2094}," — Production alarm configurations with thresholds, metric math examples, composite alarm and anomaly detection recipes",{"type":43,"tag":51,"props":2096,"children":2098},{"id":2097},"related-skills",[2099],{"type":48,"value":2100},"Related Skills",{"type":43,"tag":65,"props":2102,"children":2103},{},[2104,2115,2126,2137,2148,2159],{"type":43,"tag":69,"props":2105,"children":2106},{},[2107,2113],{"type":43,"tag":81,"props":2108,"children":2110},{"className":2109},[],[2111],{"type":48,"value":2112},"lambda",{"type":48,"value":2114}," — Lambda metrics, Embedded Metric Format, and X-Ray active tracing",{"type":43,"tag":69,"props":2116,"children":2117},{},[2118,2124],{"type":43,"tag":81,"props":2119,"children":2121},{"className":2120},[],[2122],{"type":48,"value":2123},"ecs",{"type":48,"value":2125}," — Container Insights, task-level metrics, and ECS service alarms",{"type":43,"tag":69,"props":2127,"children":2128},{},[2129,2135],{"type":43,"tag":81,"props":2130,"children":2132},{"className":2131},[],[2133],{"type":48,"value":2134},"eks",{"type":48,"value":2136}," — Control plane logging, Prometheus, and Container Insights for Kubernetes",{"type":43,"tag":69,"props":2138,"children":2139},{},[2140,2146],{"type":43,"tag":81,"props":2141,"children":2143},{"className":2142},[],[2144],{"type":48,"value":2145},"cloudfront",{"type":48,"value":2147}," — CloudFront access logs and cache metrics",{"type":43,"tag":69,"props":2149,"children":2150},{},[2151,2157],{"type":43,"tag":81,"props":2152,"children":2154},{"className":2153},[],[2155],{"type":48,"value":2156},"api-gateway",{"type":48,"value":2158}," — API Gateway latency and error monitoring",{"type":43,"tag":69,"props":2160,"children":2161},{},[2162,2168],{"type":43,"tag":81,"props":2163,"children":2165},{"className":2164},[],[2166],{"type":48,"value":2167},"networking",{"type":48,"value":2169}," — VPC Flow Logs, Route53 health checks, and Transit Gateway metrics",{"type":43,"tag":51,"props":2171,"children":2173},{"id":2172},"anti-patterns",[2174],{"type":48,"value":2175},"Anti-Patterns",{"type":43,"tag":65,"props":2177,"children":2178},{},[2179,2189,2199,2209,2219,2229,2239,2249,2259,2269],{"type":43,"tag":69,"props":2180,"children":2181},{},[2182,2187],{"type":43,"tag":73,"props":2183,"children":2184},{},[2185],{"type":48,"value":2186},"No log retention policy",{"type":48,"value":2188},": CloudWatch Logs default to never expire. Costs grow silently. Set retention on every log group.",{"type":43,"tag":69,"props":2190,"children":2191},{},[2192,2197],{"type":43,"tag":73,"props":2193,"children":2194},{},[2195],{"type":48,"value":2196},"Alarming on every metric",{"type":48,"value":2198},": Too many alarms leads to alert fatigue. Alarm on symptoms (error rate, latency), not causes (CPU). Use composite alarms to reduce noise.",{"type":43,"tag":69,"props":2200,"children":2201},{},[2202,2207],{"type":43,"tag":73,"props":2203,"children":2204},{},[2205],{"type":48,"value":2206},"Average-based latency alarms",{"type":48,"value":2208},": Averages hide tail latency. Use p99 or p95 for latency alarms.",{"type":43,"tag":69,"props":2210,"children":2211},{},[2212,2217],{"type":43,"tag":73,"props":2213,"children":2214},{},[2215],{"type":48,"value":2216},"Missing structured logging",{"type":48,"value":2218},": Unstructured logs cannot be queried efficiently with Logs Insights. Always log JSON.",{"type":43,"tag":69,"props":2220,"children":2221},{},[2222,2227],{"type":43,"tag":73,"props":2223,"children":2224},{},[2225],{"type":48,"value":2226},"No tracing in distributed systems",{"type":48,"value":2228},": Without X-Ray or OpenTelemetry, debugging cross-service issues requires correlating timestamps across log groups. Enable tracing.",{"type":43,"tag":69,"props":2230,"children":2231},{},[2232,2237],{"type":43,"tag":73,"props":2233,"children":2234},{},[2235],{"type":48,"value":2236},"Sampling rate of 100%",{"type":48,"value":2238},": Full tracing in production generates enormous data volume and cost. Use sampling — 1 req\u002Fsec + 5% is usually sufficient.",{"type":43,"tag":69,"props":2240,"children":2241},{},[2242,2247],{"type":43,"tag":73,"props":2243,"children":2244},{},[2245],{"type":48,"value":2246},"Not using Embedded Metric Format in Lambda",{"type":48,"value":2248},": EMF turns log lines into metrics with zero PutMetricData API calls. It's cheaper and simpler than the alternatives.",{"type":43,"tag":69,"props":2250,"children":2251},{},[2252,2257],{"type":43,"tag":73,"props":2253,"children":2254},{},[2255],{"type":48,"value":2256},"Dashboard without runbook links",{"type":48,"value":2258},": A dashboard that shows a problem without explaining what to do about it is only half useful. Add text widgets with runbook links.",{"type":43,"tag":69,"props":2260,"children":2261},{},[2262,2267],{"type":43,"tag":73,"props":2263,"children":2264},{},[2265],{"type":48,"value":2266},"Ignoring CloudWatch anomaly detection",{"type":48,"value":2268},": Static thresholds don't work for metrics with daily patterns. Use anomaly detection for request count and latency.",{"type":43,"tag":69,"props":2270,"children":2271},{},[2272,2277],{"type":43,"tag":73,"props":2273,"children":2274},{},[2275],{"type":48,"value":2276},"CloudWatch Agent not installed on EC2",{"type":48,"value":2278},": Without the agent, you only get basic metrics (CPU, network, disk I\u002FO). Install the agent for memory utilization, disk space, and custom metrics.",{"type":43,"tag":2280,"props":2281,"children":2282},"style",{},[2283],{"type":48,"value":2284},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":2286,"total":2459},[2287,2301,2322,2332,2345,2358,2368,2378,2399,2414,2429,2444],{"slug":2288,"name":2288,"fn":2289,"description":2290,"org":2291,"tags":2292,"stars":2298,"repoUrl":2299,"updatedAt":2300},"agentcore-investigation","investigate Bedrock AgentCore runtime sessions","Investigate Bedrock AgentCore runtime sessions via CloudWatch Logs Insights — resolve session\u002Ftrace IDs, query OTEL spans, filter noise, build timelines. Use when debugging AgentCore agent sessions, tracing tool calls, or analyzing latency.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2293,2294,2295,2297],{"name":20,"slug":21,"type":15},{"name":23,"slug":24,"type":15},{"name":1995,"slug":2296,"type":15},"logs",{"name":14,"slug":4,"type":15},9427,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fmcp","2026-07-12T08:37:22.601527",{"slug":2302,"name":2303,"fn":2304,"description":2305,"org":2306,"tags":2307,"stars":2298,"repoUrl":2299,"updatedAt":2321},"amazon-aurora-dsql","amazon aurora dsql","build applications with Aurora DSQL","Build with Aurora DSQL — manage schemas, execute queries, handle migrations, diagnose query plans, load data, and develop applications with a serverless, distributed SQL database. Covers IAM auth, multi-tenant patterns, MySQL-to-DSQL and PostgreSQL-to-DSQL schema conversion, FK replacement code generation, OCC retry patterns, ORM migration (Django\u002FHibernate\u002FRails), DDL operations, query plan explainability, SQL compatibility validation, and bulk data loading. Triggers on phrases like: DSQL, Aurora DSQL, create DSQL table, DSQL schema, migrate to DSQL, distributed SQL database, serverless PostgreSQL-compatible database, DSQL query plan, DSQL EXPLAIN ANALYZE, why is my DSQL query slow, DSQL foreign key, DSQL OCC retry, DSQL multi-region, load into DSQL, load CSV into DSQL, bulk load DSQL, aurora-dsql-loader.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2308,2311,2312,2315,2318],{"name":2309,"slug":2310,"type":15},"Aurora","aurora",{"name":20,"slug":21,"type":15},{"name":2313,"slug":2314,"type":15},"Database","database",{"name":2316,"slug":2317,"type":15},"Serverless","serverless",{"name":2319,"slug":2320,"type":15},"SQL","sql","2026-07-12T08:36:45.053393",{"slug":2323,"name":2324,"fn":2304,"description":2305,"org":2325,"tags":2326,"stars":2298,"repoUrl":2299,"updatedAt":2331},"aurora-dsql","aurora dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2327,2328,2329,2330],{"name":20,"slug":21,"type":15},{"name":2313,"slug":2314,"type":15},{"name":2316,"slug":2317,"type":15},{"name":2319,"slug":2320,"type":15},"2026-07-12T08:36:42.694299",{"slug":2333,"name":2334,"fn":2304,"description":2305,"org":2335,"tags":2336,"stars":2298,"repoUrl":2299,"updatedAt":2344},"aws-dsql","aws dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2337,2338,2339,2342,2343],{"name":20,"slug":21,"type":15},{"name":2313,"slug":2314,"type":15},{"name":2340,"slug":2341,"type":15},"Migration","migration",{"name":2316,"slug":2317,"type":15},{"name":2319,"slug":2320,"type":15},"2026-07-12T08:36:38.584057",{"slug":2346,"name":2347,"fn":2304,"description":2305,"org":2348,"tags":2349,"stars":2298,"repoUrl":2299,"updatedAt":2357},"distributed-postgres","distributed postgres",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2350,2351,2352,2355,2356],{"name":20,"slug":21,"type":15},{"name":2313,"slug":2314,"type":15},{"name":2353,"slug":2354,"type":15},"PostgreSQL","postgresql",{"name":2316,"slug":2317,"type":15},{"name":2319,"slug":2320,"type":15},"2026-07-12T08:36:46.530743",{"slug":2359,"name":2360,"fn":2304,"description":2305,"org":2361,"tags":2362,"stars":2298,"repoUrl":2299,"updatedAt":2367},"distributed-sql","distributed sql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2363,2364,2365,2366],{"name":20,"slug":21,"type":15},{"name":2313,"slug":2314,"type":15},{"name":2316,"slug":2317,"type":15},{"name":2319,"slug":2320,"type":15},"2026-07-12T08:36:48.104182",{"slug":2369,"name":2369,"fn":2304,"description":2305,"org":2370,"tags":2371,"stars":2298,"repoUrl":2299,"updatedAt":2377},"dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2372,2373,2374,2375,2376],{"name":20,"slug":21,"type":15},{"name":2313,"slug":2314,"type":15},{"name":2340,"slug":2341,"type":15},{"name":2316,"slug":2317,"type":15},{"name":2319,"slug":2320,"type":15},"2026-07-12T08:36:36.374512",{"slug":2379,"name":2379,"fn":2380,"description":2381,"org":2382,"tags":2383,"stars":2396,"repoUrl":2397,"updatedAt":2398},"cost-efficiency-analyzer","analyze cost efficiency and expenses","Analyzes cost structure, cost efficiency, and expense management from P&L data. Use when the user asks about costs, expenses, COGS, operating expenses, cost ratios, cost control, spending efficiency, margin compression from cost side, or wants to understand where money is going. Also use for \"are we spending too much\", \"cost breakdown\", \"expense analysis\", or \"how efficient are our operations\". NOT for revenue or top-line analysis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2384,2387,2390,2393],{"name":2385,"slug":2386,"type":15},"Accounting","accounting",{"name":2388,"slug":2389,"type":15},"Analytics","analytics",{"name":2391,"slug":2392,"type":15},"Cost Optimization","cost-optimization",{"name":2394,"slug":2395,"type":15},"Finance","finance",3176,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fagentcore-samples","2026-07-12T08:40:03.29555",{"slug":2400,"name":2400,"fn":2401,"description":2402,"org":2403,"tags":2404,"stars":2396,"repoUrl":2397,"updatedAt":2413},"executive-financial-briefing","generate executive financial briefings","Generates a concise executive-level financial briefing or summary suitable for a CEO, CFO, or board presentation. Use when the user asks for a summary, briefing, executive summary, board update, financial overview, financial health check, or \"how is the business doing\". Covers the full P&L picture in one page. Also use for \"give me the highlights\", \"what do I need to know\", or \"quick financial update\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2405,2406,2407,2410],{"name":20,"slug":21,"type":15},{"name":2394,"slug":2395,"type":15},{"name":2408,"slug":2409,"type":15},"Management","management",{"name":2411,"slug":2412,"type":15},"Reporting","reporting","2026-07-12T08:40:02.066471",{"slug":2415,"name":2415,"fn":2416,"description":2417,"org":2418,"tags":2419,"stars":2396,"repoUrl":2397,"updatedAt":2428},"multi-quarter-trend-analysis","analyze multi-quarter financial trends","Analyzes financial trends across multiple quarters by comparing P&L metrics over time. Use when the user wants to see trends, patterns, trajectories, or directional movement across 3 or more quarters. Also use for \"how are we trending\", \"show me the trend\", \"track performance over time\", \"quarter over quarter comparison across all quarters\", or any multi-period longitudinal analysis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2420,2421,2422,2425],{"name":2388,"slug":2389,"type":15},{"name":2394,"slug":2395,"type":15},{"name":2423,"slug":2424,"type":15},"Financial Statements","financial-statements",{"name":2426,"slug":2427,"type":15},"Variance Analysis","variance-analysis","2026-07-12T08:40:00.79141",{"slug":2430,"name":2430,"fn":2431,"description":2432,"org":2433,"tags":2434,"stars":2396,"repoUrl":2397,"updatedAt":2443},"pdf","process and manipulate PDF documents","Use this skill whenever the user wants to do anything with PDF files. This includes reading or extracting text\u002Ftables from PDFs, combining or merging multiple PDFs into one, splitting PDFs apart, rotating pages, adding watermarks, creating new PDFs, filling PDF forms, encrypting\u002Fdecrypting PDFs, extracting images, and OCR on scanned PDFs to make them searchable. If the user mentions a .pdf file or asks to produce one, use this skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2435,2438,2441],{"name":2436,"slug":2437,"type":15},"Automation","automation",{"name":2439,"slug":2440,"type":15},"Documents","documents",{"name":2442,"slug":2430,"type":15},"PDF","2026-07-12T08:41:44.135656",{"slug":2445,"name":2445,"fn":2446,"description":2447,"org":2448,"tags":2449,"stars":2396,"repoUrl":2397,"updatedAt":2458},"quarterly-kpi-calculator","calculate quarterly financial KPIs","Calculates quarterly financial KPIs from P&L data. P&L figures can be provided directly by the user or fetched from the financial data MCP server. Use when the user wants KPI calculations such as Gross Margin %, EBITDA Margin %, Operating Expense Ratio, or Revenue Growth % QoQ. Also use for quarterly performance review, P&L analysis, or interpreting financial ratios against benchmarks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2450,2451,2454,2455],{"name":2385,"slug":2386,"type":15},{"name":2452,"slug":2453,"type":15},"Data Analysis","data-analysis",{"name":2394,"slug":2395,"type":15},{"name":2456,"slug":2457,"type":15},"KPI","kpi","2026-07-12T08:39:59.54971",150,{"items":2461,"total":2556},[2462,2476,2491,2503,2515,2528,2541],{"slug":2463,"name":2463,"fn":2464,"description":2465,"org":2466,"tags":2467,"stars":25,"repoUrl":26,"updatedAt":2475},"agentcore","design Amazon Bedrock AgentCore architectures","Deep-dive into Amazon Bedrock AgentCore platform design, service selection, deployment, and production operations. This skill should be used when the user asks to \"design an AgentCore architecture\", \"deploy agents on AgentCore\", \"configure AgentCore Runtime\", \"set up AgentCore Memory\", \"use AgentCore Gateway\", \"configure AgentCore Identity\", \"set up AgentCore Policy\", \"plan agent observability\", \"evaluate agent quality\", \"move agent PoC to production\", or mentions AgentCore, AgentCore Runtime, AgentCore Memory, AgentCore Gateway, AgentCore Identity, AgentCore Policy, AgentCore Evaluations, AgentCore Code Interpreter, AgentCore Browser, A2A protocol, or multi-agent orchestration on AWS.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2468,2471,2474],{"name":2469,"slug":2470,"type":15},"Agents","agents",{"name":2472,"slug":2473,"type":15},"Architecture","architecture",{"name":20,"slug":21,"type":15},"2026-07-12T08:40:11.108951",{"slug":2477,"name":2477,"fn":2478,"description":2479,"org":2480,"tags":2481,"stars":25,"repoUrl":26,"updatedAt":2490},"aidlc-lite","develop AI applications on AWS","Lightweight AI development lifecycle for building on AWS. A simplified take on the AI-DLC philosophy — think together, then build fast. Acts as a design partner that understands intent, proposes alternatives with trade-offs, and ships working code without the ceremony of full requirements\u002Fdesign\u002Fspec documents. Use when a founder says \"build X on AWS\", \"add Y to my stack\", \"scaffold an API\", or \"write the CDK for Z\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2482,2483,2486,2487],{"name":2469,"slug":2470,"type":15},{"name":2484,"slug":2485,"type":15},"AI Infrastructure","ai-infrastructure",{"name":20,"slug":21,"type":15},{"name":2488,"slug":2489,"type":15},"Engineering","engineering","2026-07-12T08:40:40.204103",{"slug":2492,"name":2492,"fn":2493,"description":2494,"org":2495,"tags":2496,"stars":25,"repoUrl":26,"updatedAt":2502},"architect-for-startups","advise on AWS architecture for startups","AWS architecture advisor tailored specifically for startups. Alters AWS architecture recommendations based on startup stage (pre-revenue through Series B+), team size, runway, and credits. ALWAYS use when asked about building on AWS, choosing services, planning infrastructure, managing costs with credits, or preparing architecture for fundraising.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2497,2498,2499],{"name":2472,"slug":2473,"type":15},{"name":20,"slug":21,"type":15},{"name":2500,"slug":2501,"type":15},"Strategy","strategy","2026-07-12T08:41:33.557354",{"slug":2504,"name":2504,"fn":2505,"description":2506,"org":2507,"tags":2508,"stars":25,"repoUrl":26,"updatedAt":2514},"aws-architect","design and review AWS architectures","Design and review AWS architectures following Well-Architected Framework principles. Use when planning new infrastructure, reviewing existing architectures, evaluating trade-offs between AWS services, or when asked about AWS best practices.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2509,2510,2511],{"name":2472,"slug":2473,"type":15},{"name":20,"slug":21,"type":15},{"name":2512,"slug":2513,"type":15},"Infrastructure","infrastructure","2026-07-12T08:40:57.630086",{"slug":2516,"name":2516,"fn":2517,"description":2518,"org":2519,"tags":2520,"stars":25,"repoUrl":26,"updatedAt":2527},"aws-compare","compare AWS architecture options","Compare 2-3 AWS architecture options side-by-side across cost, complexity, performance, security, and operational burden. Use when evaluating trade-offs between approaches or when the user is deciding between options.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2521,2522,2523,2524],{"name":2472,"slug":2473,"type":15},{"name":20,"slug":21,"type":15},{"name":2391,"slug":2392,"type":15},{"name":2525,"slug":2526,"type":15},"Security","security","2026-07-12T08:40:23.960287",{"slug":2529,"name":2529,"fn":2530,"description":2531,"org":2532,"tags":2533,"stars":25,"repoUrl":26,"updatedAt":2540},"aws-debug","debug AWS infrastructure and deployment failures","Debug AWS infrastructure issues, deployment failures, and runtime errors. Use when troubleshooting CloudFormation stack failures, Lambda errors, ECS task failures, permission issues, networking problems, or any AWS service misbehavior.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2534,2535,2536,2539],{"name":20,"slug":21,"type":15},{"name":23,"slug":24,"type":15},{"name":2537,"slug":2538,"type":15},"Deployment","deployment",{"name":14,"slug":4,"type":15},"2026-07-12T08:40:16.767171",{"slug":2542,"name":2542,"fn":2543,"description":2544,"org":2545,"tags":2546,"stars":25,"repoUrl":26,"updatedAt":2555},"aws-diagram","generate AWS architecture diagrams","Generate AWS architecture diagrams in Mermaid or ASCII from a description, existing IaC, or conversation context. Use when the user wants to visualize an architecture.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2547,2548,2549,2552],{"name":2472,"slug":2473,"type":15},{"name":20,"slug":21,"type":15},{"name":2550,"slug":2551,"type":15},"Diagrams","diagrams",{"name":2553,"slug":2554,"type":15},"Visualization","visualization","2026-07-12T08:40:43.26341",42]