AWS EC2 Monitoring
验证:未记录
- 适用版本
- 未记录
- 验证范围
- 尚未登记验证记录。
本文缩写(英文全称与中文含义)
| 缩写 | 英文全称/名称 | 中文含义 |
|---|---|---|
| ASG | Auto Scaling Group | AWS 自动扩缩容组 |
| AWS | Amazon Web Services | 亚马逊云服务 |
| CPU | Central Processing Unit | 中央处理器 |
| EBS | Elastic Block Store | AWS 块存储服务 |
| EC2 | Elastic Compute Cloud | AWS 云服务器服务 |
| EDR | Endpoint Detection and Response | 终端检测与响应 |
| IO | Input/Output | 输入/输出 |
| IOPS | Input/Output Operations Per Second | 每秒输入输出操作数 |
| NACL | Network Access Control List | 网络访问控制列表 |
| OOM | Out Of Memory | 内存不足 |
| OS | Operating System | 操作系统 |
| P0 | Priority 0 | 优先级编号;具体严重程度按团队规范定义 |
| P1 | Priority 1 | 优先级编号;具体严重程度按团队规范定义 |
| P2 | Priority 2 | 优先级编号;具体严重程度按团队规范定义 |
| SSM | AWS Systems Manager | AWS 系统管理服务;SSM 是沿用的简称 |
| VM | Virtual Machine | 虚拟机 |
| VPC | Virtual Private Cloud | 虚拟私有云网络 |
Links#
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html
https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html
https://docs.aws.amazon.com/ebs/latest/userguide/using_cloudwatch_ebs.html
https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-common-scenarios.html1. Important Points#
EC2 monitoring 要分清 AWS 原生指标和 OS 指标:
AWS/EC2 default metrics:
status check
CPU
network
EBS IO at instance level
CloudWatch Agent metrics:
memory
filesystem
swap
process / agent status if configured
AWS/EBS metrics:
volume queue
volume throughput / IOPS
burst balance for burstable volumesEC2 监控只覆盖 VM / OS / attached storage / network capacity。应用进程、数据库、中间件和业务服务应该放到对应组件自己的 monitoring page。
2. CloudWatch Metrics And Alarms#
| Severity | Alert | Metric | Namespace | Statistic | Period | Definition | Evaluation | Alarm After | Why Monitor |
|---|---|---|---|---|---|---|---|---|---|
| P0 | EC2 status check failed | StatusCheckFailed |
AWS/EC2 |
Maximum |
60s | > 0 |
2/2 datapoints |
~2m | AWS 层面判断实例或底层系统不健康 |
| P1 | Instance status check failed | StatusCheckFailed_Instance |
AWS/EC2 |
Maximum |
60s | > 0 |
2/2 datapoints |
~2m | OS / network config / boot problem,通常需要实例内排查 |
| P1 | System status check failed | StatusCheckFailed_System |
AWS/EC2 |
Maximum |
60s | > 0 |
2/2 datapoints |
~2m | AWS 底层宿主机或平台侧异常,可能需要 stop/start 或 auto recovery |
| P1 | Disk almost full | disk_used_percent |
CWAgent |
Average |
60s | >= 90% |
10/10 datapoints |
~10m | 磁盘满会导致服务写入失败、日志丢失和系统异常 |
| P1 | Memory almost full | mem_used_percent |
CWAgent |
Average |
60s | >= 90% |
10/10 datapoints |
~10m | 防止 OOM、swap 抖动和进程被杀 |
| P2 | CPU high | CPUUtilization |
AWS/EC2 |
Average |
60s | >= 80% |
15/15 datapoints |
~15m | 发现容量不足、异常进程或负载升高 |
| P2 | CPU credit low | CPUCreditBalance |
AWS/EC2 |
Average |
300s | < 20 |
6/6 datapoints |
~30m | T-family 实例 CPU credit 耗尽后会降速 |
| P2 | CPU credit charged | CPUSurplusCreditsCharged |
AWS/EC2 |
Sum |
300s | > 0 |
1/1 datapoint |
~5m | T Unlimited 开始产生额外 CPU credit 费用 |
| P2 | EBS queue high | VolumeQueueLength |
AWS/EBS |
Average |
60s | >= 10 |
10/10 datapoints |
~10m | EBS IO 排队会推高应用延迟 |
| P2 | EBS burst balance low | BurstBalance |
AWS/EBS |
Average |
60s | < 20% |
15/15 datapoints |
~15m | gp2/st1/sc1 等突发型卷积分耗尽会降低 IO 性能 |
| P2 | Network throughput high | NetworkIn / NetworkOut |
AWS/EC2 |
Sum |
300s | env-specific baseline | 3/3 datapoints |
~15m | 发现异常流量、备份/同步任务或可能接近网络瓶颈 |
| P2 | CloudWatch Agent stopped | procstat or heartbeat metric |
CWAgent |
Maximum |
60s | env-specific | 5/5 datapoints |
~5m | agent 停止会导致 memory/disk 指标缺失 |
Evaluation rule:
Period:
每个 datapoint 的统计窗口,不是告警持续时间。
Evaluation:
M/N datapoints means datapoints_to_alarm / evaluation_periods.
例如 10/10 datapoints with 60s period means 10 consecutive 60s datapoints.
Alarm After:
roughly Period * EvaluationPeriods.
例如 10 * 60s = about 10m.
status check:
P0/P1 用 2/2 datapoints,快速确认但避免单点抖动。
resource saturation:
CPU / memory / disk / EBS queue 默认连续 datapoints,避免一次采样误报。
5m Sum metric:
cost / network / discrete count 用 300s period,减少噪音。
env-specific:
network throughput and agent heartbeat must be based on instance type, workload baseline, and collection method.3. CloudWatch Agent#
AWS/EC2 默认没有 memory 和 filesystem 指标。生产 EC2 应该安装 CloudWatch Agent 或其他统一采集器。
Minimal CloudWatch Agent config:
{
"metrics": {
"namespace": "CWAgent",
"append_dimensions": {
"InstanceId": "${aws:InstanceId}",
"InstanceType": "${aws:InstanceType}",
"AutoScalingGroupName": "${aws:AutoScalingGroupName}"
},
"metrics_collected": {
"mem": {
"measurement": [
"mem_used_percent"
],
"metrics_collection_interval": 60
},
"disk": {
"measurement": [
"used_percent"
],
"metrics_collection_interval": 60,
"resources": [
"/"
],
"ignore_file_system_types": [
"sysfs",
"devtmpfs",
"tmpfs",
"overlay"
]
},
"swap": {
"measurement": [
"swap_used_percent"
],
"metrics_collection_interval": 60
}
}
}
}Install / start:
sudo yum install -y amazon-cloudwatch-agent
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json -sVerify:
aws cloudwatch list-metrics --namespace CWAgent --dimensions Name=InstanceId,Value=i-0123456789abcdef0 --region ap-east-14. Alarm Examples#
Status check alarm:
aws cloudwatch put-metric-alarm --alarm-name "P0-EC2-i-0123456789abcdef0-status-check-failed" --namespace AWS/EC2 --metric-name StatusCheckFailed --dimensions Name=InstanceId,Value=i-0123456789abcdef0 --statistic Maximum --period 60 --evaluation-periods 2 --datapoints-to-alarm 2 --threshold 0 --comparison-operator GreaterThanThreshold --treat-missing-data missing --alarm-actions arn:aws:sns:ap-east-1:111122223333:prod-critical-alerts --region ap-east-1Disk usage alarm:
aws cloudwatch put-metric-alarm --alarm-name "P1-EC2-i-0123456789abcdef0-root-disk-used-high" --namespace CWAgent --metric-name disk_used_percent --dimensions Name=InstanceId,Value=i-0123456789abcdef0 Name=path,Value=/ Name=fstype,Value=xfs --statistic Average --period 60 --evaluation-periods 10 --datapoints-to-alarm 10 --threshold 90 --comparison-operator GreaterThanOrEqualToThreshold --treat-missing-data missing --alarm-actions arn:aws:sns:ap-east-1:111122223333:prod-critical-alerts --region ap-east-1EBS queue alarm:
aws cloudwatch put-metric-alarm --alarm-name "P2-EBS-vol-0123456789abcdef0-queue-high" --namespace AWS/EBS --metric-name VolumeQueueLength --dimensions Name=VolumeId,Value=vol-0123456789abcdef0 --statistic Average --period 60 --evaluation-periods 10 --datapoints-to-alarm 10 --threshold 10 --comparison-operator GreaterThanOrEqualToThreshold --treat-missing-data missing --alarm-actions arn:aws:sns:ap-east-1:111122223333:prod-warning-alerts --region ap-east-15. Dashboard#
Minimum dashboard panels:
health:
StatusCheckFailed
StatusCheckFailed_Instance
StatusCheckFailed_System
compute:
CPUUtilization
CPUCreditBalance / CPUSurplusCreditsCharged for T family
memory / disk:
mem_used_percent
disk_used_percent by path
swap_used_percent
storage:
VolumeQueueLength
VolumeReadOps / VolumeWriteOps
VolumeReadBytes / VolumeWriteBytes
BurstBalance for burstable volumes
network:
NetworkIn / NetworkOut
NetworkPacketsIn / NetworkPacketsOut
agent:
CloudWatch Agent metric freshness6. Readiness Gap#
This page can cover EC2 infrastructure monitoring baseline, but it is not complete for every workload.
Still need to add or decide per environment:
process monitoring:
critical process alive
systemd unit failed
CloudWatch Agent procstat or SSM inventory
log monitoring:
kernel OOM
disk filesystem errors
application fatal logs
auth failure / sudo / ssh logs when required
patch / security:
SSM patch compliance
Inspector findings
EDR / antivirus health if used
Auto Scaling:
ASG InService instance count
launch failure
lifecycle hook stuck
capacity rebalance / spot interruption if used
backup / recovery:
EBS snapshot success
AWS Backup job status
restore test result
network detail:
security group / NACL change events
VPC Flow Logs for rejected traffic if neededConclusion:
enough for:
EC2 health
CPU / memory / disk
EBS queue / burst risk
basic network trend
not enough for:
application availability
OS security compliance
backup assurance
ASG fleet health
detailed network troubleshooting