AWS 文档通过以下方式描述 Burst Balance 和 EEBS IO Balance:
BurstBalance 可用的通用 SSD (gp2) 突发存储桶 I/O 积分的百分比。
EBSIOBalance% RDS 数据库的突发存储桶中剩余的 I/O 积分百分比。该指标仅可用于基本监控。该指标与 BurstBalance 不同
然而,据我所知,文档没有解释这两个指标有何不同。
amazon-ec2 amazon-ebs amazon-web-services amazon-rds amazon-cloudwatch
出于某种原因,我在如何做看起来很简单的事情上遇到了麻烦。
如何记录所有通过 AWS Simple Email Service 发送的包含特定消息详细信息的电子邮件?
该日志至少需要包含发送服务器的 IP 地址。但是,我也确实需要TO地址。背景故事——我们有几台服务器使用这项服务,当其中一台启动并开始发送数千封电子邮件时,我们会通过 Cloudwatch 监控收到警报——但无法找出实际发送它们的服务器。
立即,经过研究,您会发现人们确实想要此功能但它不可用的证据。但是,较新的文章表明这是可能的。
理想情况下,我曾尝试使用事件发布到CloudWatch的在这两篇文章中描述: https://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-using-event-publishing.html https://开头的文档.aws.amazon.com/ses/latest/DeveloperGuide/event-publishing-add-event-destination-cloudwatch.html
Message Tag了名称为ses:source-ip和默认值为 的值源source-ip。一段时间后,没有事件发布到 Cloud Watch。
文档只是在整个过程中不是很清楚,并且从未通过示例记录实际细节。
有一些建议我可能必须向我们发出的电子邮件添加标题以进行跟踪,但其他建议是存在默认值,并且我实际上不必修改我们的发送行为。
细粒度- 这些指标按您使用消息标签定义的电子邮件特征进行分类。要将这些指标发布到 CloudWatch,您必须使用 CloudWatch 事件目标设置事件发布,并在发送电子邮件时指定配置集。您还可以指定消息标签或使用 Amazon SES 自动提供的自动标签。
还有一些关于使用 Kinesis Firehose 作为目标的文档,它显示了非常详细的消息信息示例——这正是我想要的:https : //docs.aws.amazon.com/ses/latest/DeveloperGuide/ event-publishing-retrieving-firehose-examples.html#event-publishing-retrieving-firehose-send
我只是不知道该往哪个方向以及如何设置。
我需要最简单的方法来记录看似基本的 SES 诊断信息,然后将其用于故障排除目的。很难相信这些信息不仅可以在 AWS 控制台的某个地方随时可用。
我想为我的网站安装一个负载均衡器并使网站保持最新。当处理能力达到一定水平时,负载均衡器将采用我选择的 AMI 并启动更多这些实例。问题是 AMI 可能不是最新的,所以我会有一些实例是最新的,而另一些则不是。当我部署时,我可以毫无问题地部署到负载均衡器下的所有实例,但我需要知道负载均衡器何时启动新实例以触发此部署。当更新发生时,也会有一段时间大大降低其响应能力。所以我想出了一个计划。
我的计划:
部署后:
identify one of the instances and
get instance id
identify volume of instance id
ec2-create-snapshot vol-yyyyyyyy
get snapshot volume id
ec2reg -s snap-zzzzzzzz -a x86 -d Description -n imagename
get image id
as-delete-launch-config existinglaunchconfig
as-create-launch-config mylaunchconfig --image-id IMAGEID --instance-type m1.small --key mykey --group mysecuritygroup
as-update-auto-scaling-group --launch-configuration mylaunchconfig
Run Code Online (Sandbox Code Playgroud)
在我花很多时间试图弄清楚这一点并编写所有脚本、测试和其他所有内容之前,我的问题是:这行得通吗?有没有更好的办法?是否有任何人都知道的教程或帖子可以加快我在这个问题上的努力?谢谢。
load-balancing amazon-web-services amazon-elb amazon-cloudwatch
我们的一个 S3 存储桶最近发生了一些事情:
我开始寻找所有这些额外内容的来源,但我收集的指标似乎与 CloudWatch(或我们的账单)中发生的情况不符。
存储桶有一些不同的键前缀(“文件夹”),所以我做的第一件事就是尝试确定它们中是否有任何一个对这个数字有显着贡献,如下所示:
aws s3 ls --summarize --human-readable --recursive s3://my-bucket/prefix
Run Code Online (Sandbox Code Playgroud)
然而,似乎没有一个前缀包含大量数据,只不过是几 GB。
我终于尝试跑步
aws s3 ls --summarize --human-readable --recursive s3://my-bucket
Run Code Online (Sandbox Code Playgroud)
...我的总大小约为 25GB。我是否在尝试查找“文件夹大小”时做错了事,或者误解了什么?我如何才能找到所有这些额外存储的使用位置(并找出正在运行的进程)?
我管理的网站实际上不是很大,但 Lambda 被广泛使用,每次网站访问都会调用多次,导致每月有数十万次调用。
我注意到 CloudTrail 成本激增。进一步挖掘,我发现最大的问题是CreateLogStreamLambda 基础设施进行的调用,即是 AWS 的代码执行此操作,而不是我的代码。由于 CreateLogStream,我的 CloudTrail 成本是 Lambda 成本的 100 倍(Lambda 的免费套餐在某种程度上扭曲了这个比率)。
除了完全停用之外CloudTrail,有什么方法可以停止产生这些费用吗?
在 AWS 控制台 > CloudWatch > Container Insights > 性能监控 > ECS 任务中,Storage Read和的图表单位如下Storage Write所示:Bytes/Second
存储读取
字节/秒
然而,在这两种情况下,除了容器重新启动时的垂直下降之外,图表似乎总是单调增加,并且当我不希望看到持续恒定的 IO 时,它们具有很长的水平部分。
这些图表实际上显示的是累积值Bytes而不是所述值吗Bytes/Second?
在 AWS 文档的表格中查找ECS Container Insights 指标,我看到StorageReadBytes两者都这么StorageWriteBytes说Unit: Bytes,假设这指的是控制台 UI 图表中显示的相同指标,也许这证实了我的怀疑,即这是 AWS 控制台 UI 中的错误?
我尝试使用 AWS 中的“反馈”按钮来报告此问题,但在此发布,以防任何人都可以确认,或者它是否可以帮助其他可能因看似高的持续 I/O 率而担心的人。
危险!
除非您准备好崩溃和/或强制重启系统,否则不要运行此命令来“测试”它。
我采取的步骤:
我预计实例状态检查会失败。但是,两个状态检查在 20 多分钟后继续通过。该实例对 SSH 和 ping 没有响应,尽管 nmap 报告端口 22 已打开。
我希望使用状态检查来确定实例是否有响应,并使其自动缩放组终止并替换它,但看起来我无法做到这一点。
我有两个问题:
我的 SSH 会话:
Welcome to Ubuntu 14.04.2 LTS (GNU/Linux 3.13.0-57-generic x86_64)
* Documentation: https://help.ubuntu.com/
System information as of Thu Jul 9 18:50:39 UTC 2015
System load: 0.0 Memory usage: 7% Processes: 47
Usage of /: …Run Code Online (Sandbox Code Playgroud) 我们在AWS的ECS平台上运行我们的服务,并将日志发送到AWS CloudWatch。
我们有两种类型的日志,任何容器都可以生成其中一种类型:
审核日志是法规强制要求的,除了更严格的访问控制要求外,它们的保留时间比应用程序日志更长,因此将两者放在同一个日志流中并不是真正的选择。因此,我们使用两个日志流,其中一个位于具有严格访问策略的 CloudWatch 日志组中。
目前,我们正在将日志写入单独的磁盘文件,日志代理将日志条目从磁盘文件发送到 CloudWatch。然而,我们希望切换到“Docker 方式”的日志记录,即将所有日志写入 STDOUT 或 STDERR,并让日志驱动程序处理其余的事情。这听起来特别有吸引力,因为日志磁盘(几乎)是我们正在使用的唯一磁盘安装,摆脱它们确实非常好。(除了日志磁盘之外,我们的容器是严格只读的。)
问题是,我们无法找到一种明智的方法来保持日志流分离。显而易见的事情是以某种方式标记日志消息并稍后将它们分开,但仍然存在一个问题:
希望我们遗漏了一些明显的东西,在这种情况下,我们将非常感谢您的帮助。
如果没有,是否有任何解决方法(甚至是适当的解决方案)来让这种事情发挥作用?
如果我向我的 ECS 服务发布了一个存在错误的新 Docker 映像,则该服务将尝试启动新任务,但如果新任务无法启动,则将保留旧版本。
在这种情况下,它有时(并非总是)会向总线发出一个事件,例如:
服务 xxx 无法持续成功启动任务。有关详细信息,请参阅故障排除部分。
有时它只会发出大量事件,例如:
服务 xxx 注销了目标组 yyy 中的 1 个目标
我希望在这种情况下触发 CloudWatch 警报。我怎样才能做到这一点?
我看不到任何跟踪可用于触发此警报的相关事件的 CloudWatch 指标。https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cloudwatch-metrics.html
如果任务无法启动,那么我什至无法获得有关 LB 目标组的任何 UnHealthyHostCount 指标。
我想我必须创建一个 EventBridge 规则来监视上述指定的事件,但我看不到让该规则触发警报的明显方法。我设置了一条规则,将“警告”和“错误”事件转发到 SNS/电子邮件,但我并不总是收到这些事件。所以我经常遇到重启循环而没有警报触发。:-(
我的公司已开始使用 JSON 日志记录,以便更好地支持 AWS 上的 CloudWatch InSights 查询。查询非常容易使用,除非我们处理数组数据。
例如,如果我们有如下所示的日志条目:
{
"id": 123,
"method": "getRelatedPolicies",
"policiesRetrieved": [
"333g",
"444q"
]
}
{
"id": 222,
"method": "getRelatedPolicies",
"policiesRetrieved": [
"123q",
"234w",
"345e",
"456r"
]
}
{
"id": 432,
"method": "getRelatedPolicies",
"policiesRetrieved": [
"345e"
]
}
Run Code Online (Sandbox Code Playgroud)
它们在 CloudWatch Insights 中展平,如下所示:
id 123,
method getRelatedPolicies
policiesRetrieved.0 333g
policiesRetrieved.1 444q
id 222,
method getRelatedPolicies
policiesRetrieved.0 123q
policiesRetrieved.1 234w
policiesRetrieved.2 345e
policiesRetrieved.3 456r
id 432,
method getRelatedPolicies
policiesRetrieved.0 345e
Run Code Online (Sandbox Code Playgroud)
但是我该怎么做才能搜索policiesRetrieved 数组包含该值的任何日志条目呢345e?数组中可能有任意数量的条目,所以我不能只是开始添加像or policiesRetrieved.0 = …
amazon-ecs ×3
amazon-ec2 ×2
amazon-ebs ×1
amazon-elb ×1
amazon-rds ×1
amazon-s3 ×1
amazon-ses ×1
docker ×1
monitoring ×1