文章目录
- 专题总览
- 1. CloudWatch
- 1.1 Amazon CloudWatch Metrics
- 1.2 CloudWatch Metric Streams
- 1.3 CloudWatch Logs
- CloudWatch Logs - Sources
- CloudWatch Logs Metric Filter & Insights
- CloudWatch Logs – S3 Export
- CloudWatch Logs Subscriptions
- CloudWatch Logs Aggregation Multi-Account & Multi Region
- CloudWatch Logs for EC2
- CloudWatch Logs Agent & Unified Agent
- 1.4 CloudWatch Unified Agent – Metrics
- 1.5 CloudWatch Alarms(CloudWatch 报警)
- CloudWatch Alarm Targets(CloudWatch 报警目标)
- CloudWatch Alarms – Composite Alarms(CloudWatch 报警 - 组合报警)
- EC2 Instance Recovery(EC2 实例恢复)
- CloudWatch Alarm: good to know
- 1.6 Amazon EventBridge
- Amazon EventBridge Rules
- Amazon EventBridge – Schema Registry
- Amazon EventBridge – Resource-based Policy
- 1.7 CloudWatch Insights
- CloudWatch Container Insights
- CloudWatch Lambda Insights
- CloudWatch Contributor Insights
- CloudWatch Application Insights
- CloudWatch Insights 和运维可见性
- 2. AWS CloudTrail
- 2.1 CloudTrail Diagram
- 2.2 CloudTrail Events
- 2.3 CloudTrail Insights
- 2.4 CloudTrail Events Retention
- 2.5 Amazon EventBridge - 拦截 API 调用
- 3. AWS Config
- 3.1 Config Rules
- 3.2 AWS Config Resource
- 3.3 Config Rules - Remediations
- 3.4 Config Rules - Notifications
- 3.5 CloudWatch vs CloudTrail vs Config
专题总览
专题内容总览和系列博客目录
https://blog.csdn.net/weixin_40815218/article/details/135590291
辅助资料(PDF)
https://download.csdn.net/download/weixin_40815218/88741566
1. CloudWatch
1.1 Amazon CloudWatch Metrics
- CloudWatch 为 AWS 中的每个服务提供指标
- 指标是要监视的变量(CPU 利用率,网络传入等)
- 指标属于命名空间
- 维度是指标的属性(实例ID,环境等)
- 每个指标最多可以有 10 个维度
- 指标有时间戳
- 可以创建 CloudWatch 仪表板来显示指标
- 可以创建 CloudWatch 自定义指标(例如用于 RAM)
1.2 CloudWatch Metric Streams
- 不断地将 CloudWatch 指标流式传输到您选择的目标,具有接近实时的传递和低延迟。
- Amazon Kinesis Data Firehose(以及其目标)
- 第三方服务提供商:Datadog,Dynatrace,New Relic,Splunk,Sumo Logic 等
- 可以选择过滤指标,只传输其中的子集
1.3 CloudWatch Logs
- Log groups:任意名称,通常表示一个应用程序
- Log stream:应用程序中的实例/日志文件/容器
- 可以定义日志过期策略(永不过期,30天等)
- CloudWatch Logs可以将日志发送到:
- Amazon S3(导出)
- Kinesis Data Streams
- Kinesis Data Firehose
- AWS Lambda
- OpenSearch
CloudWatch Logs - Sources
- SDK,CloudWatch Logs Agent,CloudWatch 统一代理
- Elastic Beanstalk:从应用程序收集日志
- ECS:从容器收集
- AWS Lambda:从函数日志收集
- VPC 流日志:特定于 VPC 的日志
- API Gateway
- 基于过滤器的 CloudTrail
- Route53:记录 DNS 查询
CloudWatch Logs Metric Filter & Insights
- CloudWatch Logs 可以使用过滤表达式
- 例如,在日志中查找特定的 IP
- 或者计算日志中 “ERROR” 的出现次数
- 可以使用指标过滤器触发 CloudWatch 警报
- 可以使用 CloudWatch Logs Insights 查询日志并将查询添加到 CloudWatch 仪表板中
CloudWatch Logs – S3 Export
- 日志数据最多需要 12 个小时才能导出
- API 调用是 CreateExportTask
- 不是(近)实时…使用 Logs Subscriptions 代替
CloudWatch Logs Subscriptions
CloudWatch Logs Aggregation Multi-Account & Multi Region
CloudWatch Logs for EC2
- 默认情况下,您的 EC2 机器的日志不会发送到 CloudWatch
- 您需要在 EC2 上运行 CloudWatch 代理以推送所需的日志文件
- 确保 IAM 权限正确
- CloudWatch 日志代理也可在本地部署
CloudWatch Logs Agent & Unified Agent
- 适用于虚拟服务器(EC2 实例,本地服务器等)
- CloudWatch Logs Agent
- 代理的旧版本
- 只能发送到 CloudWatch Logs
- CloudWatch Unified Agent
- 收集额外的系统级指标,如 RAM,进程等
- 收集日志以发送到 CloudWatch Logs
- 使用 SSM 参数存储进行集中配置
1.4 CloudWatch Unified Agent – Metrics
- 直接在 Linux 服务器 / EC2 实例上收集
- CPU(活动,宿主,空闲,系统,用户,偷取)
- 磁盘指标(空闲,已用,总计),磁盘IO(写入,读取,字节,iops)
- RAM(空闲,非活动,已用,总计,缓存)
- Netstat(TCP 和 UDP 连接数,网络数据包,字节)
- 进程(总计,死亡,阻塞,空闲,运行,休眠)
- 交换空间(空闲,已用,使用百分比)
- 提醒:EC2 的开箱即用指标-磁盘,CPU,网络(高级别)
1.5 CloudWatch Alarms(CloudWatch 报警)
- 用于触发任何指标的通知
- 提供多种选项(采样、百分比、最大值、最小值等)
- 报警状态包括:
- OK(正常)
- INSUFFICIENT_DATA(数据不足)
- ALARM(报警)
- 周期:
- 评估指标的时间长度,以秒为单位。
- 高分辨率自定义指标:10秒、30秒或60秒的倍数
CloudWatch Alarm Targets(CloudWatch 报警目标)
- 可以停止、终止、重启或恢复 EC2 实例
- 可以触发自动扩展操作
- 可以发送通知到 SNS(从中可以执行各种操作)
CloudWatch Alarms – Composite Alarms(CloudWatch 报警 - 组合报警)
- CloudWatch 报警基于单个指标
- 组合报警监控多个其他报警的状态
- 支持 AND 和 OR 条件
- 通过创建复杂的组合报警来减少“报警噪音”
EC2 Instance Recovery(EC2 实例恢复)
- 状态检查:
- 实例状态 = 检查 EC2 虚拟机
- 系统状态 = 检查底层硬件
- 恢复操作:
- 保留相同的私有、公有、弹性IP、元数据和放置组
CloudWatch Alarm: good to know
- 可以基于 CloudWatch 日志指标过滤器创建报警
- 为了测试报警和通知,可以使用 CLI 将报警状态设置为 Alarm,例如:
- aws cloudwatch set-alarm-state --alarm-name “myalarm” --state-value ALARM --state-reason “testing purposes”
Amazon EventBridge(前身为 CloudWatch Events)
- Scheduled:定时任务(定时脚本)
- Event Pattern:根据服务执行操作的事件规则
- 触发 Lambda 函数,发送 SQS / SNS 消息等
1.6 Amazon EventBridge
- 事件总线可以通过资源策略被其他 AWS 账户访问
- 可以将发送到事件总线的事件(全部或筛选)存档(永久或设置时间段)
- 可以回放已存档的事件
Amazon EventBridge Rules
Amazon EventBridge – Schema Registry
- EventBridge 可以分析总线上的事件并推断其模式
- 模式注册表允许为应用程序生成代码,提前了解事件总线中的数据结构
- 模式可以进行版本管理
Amazon EventBridge – Resource-based Policy
- 管理特定事件总线的权限
- 示例:允许/拒绝来自其他 AWS 账户或 AWS 区域的事件
- 用例:在单个 AWS 账户或 AWS 区域中聚合 AWS 组织的所有事件
1.7 CloudWatch Insights
CloudWatch Container Insights
- 收集、汇总、摘要容器的指标和日志
- 适用于以下容器:
- Amazon Elastic Container Service(Amazon ECS)
- Amazon Elastic Kubernetes Service(Amazon EKS)
- EC2 上的 Kubernetes 平台
- Fargate(适用于 ECS 和 EKS)
- 在 Amazon EKS 和 Kubernetes 中,CloudWatch Insights 使用容器化版本的 CloudWatch Agent 来发现容器
CloudWatch Lambda Insights
- 用于监控和故障排除在 AWS Lambda 上运行的无服务器应用程序的解决方案
- 收集、汇总系统级别的指标,包括CPU时间、内存、磁盘和网络
- 收集、汇总冷启动和 Lambda 工作器关闭等诊断信息
- Lambda Insights 以 Lambda Layer 的形式提供
CloudWatch Contributor Insights
- 分析日志数据并创建展示贡献者数据的时间序列
- 查看关于前 N 个贡献者的指标
- 总计唯一贡献者的数量和使用情况
- 这有助于找到主要发言者并了解谁或什么影响了系统性能
- 适用于任何由 AWS 生成的日志(VPC、DNS 等)
- 例如,您可以找到恶意主机,识别最重的网络用户,或找到生成最多错误的 URL
- 您可以从头开始构建规则,也可以使用 AWS 创建的示例规则 - 利用您的 CloudWatch 日志
- CloudWatch 还提供了内置规则,可用于分析其他 AWS 服务的指标
CloudWatch Application Insights
- 提供自动化仪表板,显示监视应用程序可能存在的问题,以帮助隔离持续存在的问题
- 您的应用程序在仅支持的 Amazon EC2 实例上运行(Java、.NET、Microsoft IIS Web 服务器、数据库…)
- 您还可以使用其他 AWS 资源,如 Amazon EBS、RDS、ELB、ASG、Lambda、SQS、DynamoDB、S3 存储桶、ECS、EKS、SNS、API Gateway…
- 由 SageMaker 提供支持
- 提高对应用程序健康状况的可见性,缩短故障排除和修复应用程序所需的时间
- 发现和警报发送到 Amazon EventBridge 和 SSM OpsCenter
CloudWatch Insights 和运维可见性
- CloudWatch Container Insights
- ECS、EKS、EC2 上的 Kubernetes、Fargate,需要 Kubernetes 代理
- 指标和日志
- CloudWatch Lambda Insights
- 详细指标,用于故障排除无服务器应用程序
- CloudWatch Contributors Insights
- 通过 CloudWatch 日志查找 “Top-N” Contributors
- CloudWatch Application Insights
- 自动仪表板,用于故障排除应用程序及相关 AWS 服务
2. AWS CloudTrail
- 为您的 AWS 帐户提供治理、合规性和审计功能
- CloudTrail 默认情况下启用!
- 通过以下方式获取在您的 AWS 帐户中进行的事件/ API 调用的历史记录:
- 控制台
- SDK
- CLI
- AWS 服务
- 可将 CloudTrail 日志放入 CloudWatch Logs 或 S3 中
- 可将跟踪应用于所有区域(默认)或单个区域
- 如果在 AWS 中删除了资源,请首先调查 CloudTrail!
2.1 CloudTrail Diagram
2.2 CloudTrail Events
- 管理事件:
- 在您的 AWS 帐户中对资源执行的操作
- 例如:
- 配置安全性(IAM AttachRolePolicy)
- 配置数据路由规则(Amazon EC2 CreateSubnet)
- 设置日志记录(AWS CloudTrail CreateTrail)
- 默认情况下,跟踪配置为记录管理事件
- 可将读取事件(不修改资源)与写入事件(可能修改资源)分开
- 数据事件:
- 默认情况下,不记录数据事件(因为操作量大)
- Amazon S3 对象级活动(例如:GetObject、DeleteObject、PutObject):可将读取和写入事件分开
- AWS Lambda 函数执行活动(Invoke API)
- CloudTrail 洞察事件:
- 请参见下一页
2.3 CloudTrail Insights
- 启用 CloudTrail Insights 以检测帐户中的异常活动:
- 不准确的资源预配
- 达到服务限制
- AWS IAM 操作的突发
- 周期性维护活动中的间隙
- CloudTrail Insights 分析正常管理事件以创建基线
- 然后持续分析写入事件以检测异常模式
- 异常情况出现在 CloudTrail 控制台中
- 事件被发送到 Amazon S3
- 生成 EventBridge 事件(用于自动化需求)
2.4 CloudTrail Events Retention
- 事件在 CloudTrail 中存储 90天
- 要保留超过此期限的事件,请将其记录到 S3 并使用 Athena
2.5 Amazon EventBridge - 拦截 API 调用
3. AWS Config
- 帮助审核和记录 AWS 资源的合规性
- 帮助记录配置和随时间变化的更改
- AWS Config 可以解决的问题:
- 我的安全组是否有无限制的 SSH 访问?
- 我的存储桶是否有任何公共访问权限?
- 我的 ALB 配置随时间如何变化?
- 您可以接收任何更改的警报(SNS 通知)
- AWS Config 是一个按区域的服务
- 可以在区域和帐户之间进行聚合
- 可以将配置数据存储到 S3 中(由 Athena 分析)
3.1 Config Rules
- 可以使用AWS管理的配置规则(超过75个)
- 可以创建自定义配置规则(必须在AWS Lambda中定义)
- 例如:评估每个EBS磁盘是否为gp2类型
- 例如:评估每个EC2实例是否为t2.micro
- 规则可以评估/触发:
- 对于每个配置更改
- 和/或:定期时间间隔
- AWS Config 规则不会阻止发生的操作(没有拒绝)
- 定价:没有免费套餐,每个区域记录的每个配置项收费为$0.003,每个区域的每个配置规则评估收费为$0.001
3.2 AWS Config Resource
- 查看资源随时间的合规性
- 查看资源随时间的配置
- 查看资源随时间的CloudTrail API调用
3.3 Config Rules - Remediations
- 使用SSM自动化文档自动纠正不符合规定的资源
- 使用AWS-Managed自动化文档或创建自定义自动化文档
- 提示:您可以创建调用Lambda函数的自定义自动化文档
- 如果资源在自动纠正后仍然不符合规定,可以设置纠正重试
3.4 Config Rules - Notifications
- 使用 EventBridge 在 AWS 资源不符合规定时触发通知
- 能够将配置更改和合规状态通知发送到 SNS(所有事件-使用 SNS 过滤或在客户端过滤)
3.5 CloudWatch vs CloudTrail vs Config
- CloudWatch
- 性能监控(指标,CPU,网络等)和仪表板
- 事件和警报
- 日志聚合和分析
- CloudTrail
- 记录每个帐户内的API调用
- 可为特定资源定义跟踪
- 全局服务
- Config
- 记录配置更改
- 根据合规性规则评估资源
- 获取更改和合规性的时间线
对于弹性负载均衡器
- CloudWatch:
- 监控传入连接指标
- 按时间可视化错误代码的百分比
- 创建仪表板以了解负载均衡器的性能
- Config:
- 跟踪负载均衡器的安全组规则
- 跟踪负载均衡器的配置更改
确保负载均衡器始终分配了SSL证书(合规性)
- CloudTrail:
- 跟踪使用 API 调用对负载均衡器进行的更改的人员