mcpField
A
aws-resource-health-diagnose

aws-resource-health-diagnose

github.com/github云与 DevOps40.5k41 次安装1 天前更新
代码仓库

关于 aws-resource-health-diagnose

通过 AWS CLI、CloudWatch 指标和日志诊断指定 AWS 资源的健康状况。工作流按严重程度分类问题,并生成分阶段修复计划与报告。

主要功能

  1. 01发现并评估 AWS 资源
  2. 02分析 CloudWatch 日志和指标
  3. 03按严重程度与原因分类问题
  4. 04生成分阶段修复步骤
  5. 05输出健康评估报告

适用场景

  1. 01调查 Lambda 错误率升高或限流
  2. 02诊断 RDS 容量或延迟问题
  3. 03检查 ECS、ALB、SQS 或 DynamoDB 状况

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/github/awesome-copilot --skill aws-resource-health-diagnose

安装后在 Claude Code 中输入/aws-resource-health-diagnose确认已加载。

详细介绍

AWS 资源健康与问题诊断

此工作流分析特定 AWS 资源以评估其健康状况,使用 CloudWatch 日志和指标诊断潜在问题,并针对发现的任何问题制定全面的修复计划。

前置条件

  • 已配置并完成身份验证的 AWS CLI
  • 已确定目标 AWS 资源(名称、类型,以及可选的区域/账户)
  • 在目标资源上启用了 CloudWatch 日志记录和指标

工作流步骤

步骤 1:获取 AWS 诊断最佳实践

获取 https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ 以了解监控和故障排除指南,为诊断方法提供依据。

步骤 2:资源发现与识别

使用适合其类型的 AWS CLI 命令定位目标资源:

# EC2
aws ec2 describe-instances --filters "Name=tag:Name,Values=<name>"
# Lambda
aws lambda get-function --function-name <name>
# RDS
aws rds describe-db-instances --db-instance-identifier <name>
# ECS
aws ecs describe-services --cluster <cluster> --services <name>
# ALB
aws elbv2 describe-load-balancers --names <name>
# DynamoDB
aws dynamodb describe-table --table-name <name>
# SQS
aws sqs get-queue-attributes --queue-url <url> --attribute-names All
# API Gateway
aws apigatewayv2 get-apis

如果找到多个匹配项,提示用户指定区域/账户。

步骤 3:健康状况评估

运行特定于服务的健康检查:

# EC2
aws ec2 describe-instance-status --instance-ids <id>

# RDS
aws rds describe-db-instances --db-instance-identifier <name> \
  --query 'DBInstances[0].DBInstanceStatus'

# Lambda - error rate over 24h
aws cloudwatch get-metric-statistics --namespace AWS/Lambda \
  --metric-name Errors --dimensions Name=FunctionName,Value=<name> \
  --start-time $(date -u -d '24 hours ago' +%Y-%m-%dT%H:%M:%SZ) \
  --end-time $(date -u +%Y-%m-%dT%H:%M:%SZ) \
  --period 3600 --statistics Sum

# ECS
aws ecs describe-services --cluster <cluster> --services <name> \
  --query 'services[0].[status,runningCount,desiredCount,pendingCount]'

按服务类型划分的关键健康指标:

  • Lambda:错误率、限流率、持续时间 P99、并发执行数
  • RDS:CPU 利用率、FreeStorageSpace、DatabaseConnections、ReadLatency/WriteLatency
  • ECS:运行中任务数与期望任务数、任务停止原因
  • ALB:TargetResponseTime、HTTPCode_ELB_5XX_Count、UnHealthyHostCount
  • SQS:ApproximateNumberOfMessagesNotVisible、ApproximateAgeOfOldestMessage
  • DynamoDB:ConsumedReadCapacityUnits、ThrottledRequests、SuccessfulRequestLatency
步骤 4:日志与指标分析

查找日志组并运行 CloudWatch Logs Insights 查询:

# Find log groups
aws logs describe-log-groups --log-group-name-prefix /aws/<service>/<name>

# Start a query (last 24h errors)
aws logs start-query \
  --log-group-name /aws/lambda/<name> \
  --start-time $(date -u -d '24 hours ago' +%s) \
  --end-time $(date -u +%s) \
  --query-string 'filter @message like /ERROR/ | stats count(*) as errorCount by bin(1h)'

# Get results
aws logs get-query-results --query-id <id>

# Lambda cold starts
aws logs start-query \
  --log-group-name /aws/lambda/<name> \
  --start-time $(date -u -d '24 hours ago' +%s) \
  --end-time $(date -u +%s) \
  --query-string 'filter @type = "REPORT" | filter @initDuration > 0 | stats count() as coldStarts by bin(1h)'

# RDS Performance Insights (if enabled)
aws pi get-resource-metrics \
  --service-type RDS --identifier db:<identifier> \
  --metric-queries '[{"Metric":"db.load.avg"}]' \
  --start-time $(date -u -d '24 hours ago' +%Y-%m-%dT%H:%M:%SZ) \
  --end-time $(date -u +%Y-%m-%dT%H:%M:%SZ) \
  --period-in-seconds 3600

识别:重复出现的错误模式、与部署的关联(CloudTrail)、性能趋势、依赖项故障。

步骤 5:问题分类与根因分析

严重性:

  • 严重:服务不可用、数据丢失、安全事件
  • 高:性能下降、错误率 >5%、间歇性故障
  • 中:警告、配置欠佳、轻微性能问题
  • 低:信息性警报、优化机会

根因类别:

  • 配置问题:设置错误、缺少环境变量、IAM 权限被拒
  • 资源约束:CPU/内存/磁盘限制、Lambda 限流、RDS 连接耗尽
  • 网络问题:安全组规则、VPC 路由、DNS、NACL
  • 应用程序问题:代码缺陷、内存泄漏、未处理的异常、慢查询
  • 依赖项问题:下游超时、SQS/SNS 故障、外部 API 限制
  • 安全问题:KMS 密钥问题、证书过期
步骤 6:生成修复计划

立即行动(严重):

# Lambda throttling — increase reserved concurrency
aws lambda put-reserved-concurrency \
  --function-name <name> --reserved-concurrent-executions 100

# RDS connection exhaustion — reboot to reset connections
aws rds reboot-db-instance --db-instance-identifier <name>

短期修复(高/中):配置调整、合理调整规模、改进 CloudWatch 告警、修正 IAM。

长期改进:为提高韧性进行架构变更、预防性监控、通过 EventBridge 启用 AWS Health Dashboard 通知。

步骤 7:报告与用户确认

呈现发现结果:

🏥 AWS Resource Health Assessment

📊 Resource Overview:
• Resource: [Name] ([Type])
• Status: [Healthy/Warning/Critical]
• Region: [Region] | Account: [Account ID]

🚨 Issues Identified:
• Critical: X | High: Y | Medium: Z | Low: N

🔍 Top Issues:
1. [Issue]: [Description] — Impact: [High/Medium/Low]
2. [Issue]: [Description] — Impact: [High/Medium/Low]

🛠️ Remediation: X immediate, Y short-term, Z long-term actions

❓ Proceed with detailed remediation plan? (y/n)

然后生成完整的 markdown 报告,涵盖:健康指标、带有根因分析的问题、包含 AWS CLI 命令的分阶段修复步骤、CloudWatch 告警建议,以及验证清单。

错误处理

  • 未找到资源:请用户澄清名称/区域
  • 身份验证问题:引导完成 aws configure
  • 权限不足:列出所需的 IAM 操作(logs:*、cloudwatch:*、pi:*)
  • 无可用日志:建议为该资源类型启用 CloudWatch 日志记录
  • 查询超时:使用更短的时间窗口

成功标准

  • ✅ 在所有关键指标上准确评估资源健康状况
  • ✅ 识别所有重要问题并按严重性分类
  • ✅ 对主要问题完成根因分析
  • ✅ 包含 AWS CLI 命令的可操作修复计划
  • ✅ 包含 CloudWatch 监控建议
  • ✅ 实施步骤包含验证和回滚流程

评论

支持 Markdown