我正在尝试对实例的 cpu 使用情况发出警报,有些实例是常规的 ec2,有些是在自动缩放中制作的。我正在寻找某种可以按标签过滤实例的度量/维度:名称。是否有可能,如果是,比如何?如果没有,我怎样才能以不同的方式做到这一点?谢谢,
2 回答
据我所知,标签不是 EC2 维度的一部分。EC2 的维度是:
AWS EC2 维度和指标
我能想到的一种解决方案是:
1)通过使用 awscli 命令使用标签过滤器获取相关实例:Describe-Instances。如果您不想查看所有字段,也可以过滤输出。但是,至少保留实例 ID、标签、实例类型等基本信息。您还可以使用任何语言的 AWS 开发工具包 API 来实现相同的目的。
2) 然后使用 list-metrics 获取实例指标。这将返回所有实例。
3) 现在只使用您在 1) 中获得的实例的指标。您可以使用 instance-id 进行比较。这是列表上的循环 1) 并使用 instance-id 将项目与 2) 中的项目进行比较。如果匹配,则显示信息。您可以将 2) 的结果放入 dict 中以加快速度,即 O(n) 而不是 O(n^2)。
如果有人可以提供更好的解决方案,那就太好了。
您可以按名称过滤,即使实例 ID 由于自动缩放而发生更改,它们仍然可以使用。我看不到您使用的是什么语言,但是在 Java 中它会是这样的。
// Create custom filter e.g name
Filter filterByName = new Filter();
filterByName.withName("tag:Name").withValues("Instance_1");
// Create Describe Instances Request
DescribeInstancesRequest instanceRequest = new DescribeInstancesRequest()
.withFilters(
filterByName);
请注意,当您使用自定义过滤器(例如名称)时,您必须使用标签关键字,如上所示。AWS 确实内置了称为资源属性的过滤器,可以在此链接上看到。但是,如果实例由于自动缩放而动态变化,我建议按名称进行。这篇博文可能对你有用。