我正在尝试使用CPUUtilization指标配置仪表板。我们有12个实例,每周我们都会缩减这些实例,并且如果没有这些基础实例,我们的Cloudwatch仪表板就会过时。 下次当我们启动一组新服务器时,我们必须手动转到仪表板并使用新的实例ID对其进行编辑 这是手动过程,我们需要使其自动化。 我附加了用于当前仪表板的基本模板。
{
"widgets": [
{
"type": "metric",
"x": 0,
"y": 0,
"width": 9,
"height": 9,
"properties": {
"view": "timeSeries",
"stacked": false,
"metrics": [
[ "AWS/EC2", "CPUUtilization", "InstanceId", "i-0894e335e6ad2e561", { "period": 60 } ],
[ "...", "i-01fde0cee726e7896", { "period": 60 } ],
[ "...", "i-096e96499aa827924", { "period": 60 } ],
[ "...", "i-0e550d881bcbf41c5", { "period": 60 } ],
[ "...", "i-041a59616f061a373", { "period": 60 } ],
[ "...", "i-06a6237975ec0f274", { "period": 60 } ],
[ "...", "i-052f844dd071eab25", { "period": 60 } ],
[ "...", "i-02dfa8d807c1f5477", { "period": 60 } ],
[ "...", "i-0cda118fc6e375093", { "period": 60 } ],
[ "...", "i-02ef6dfd642f2ffd4", { "period": 60 } ],
[ "...", "i-0e0e9c12d672a48a7", { "period": 60 } ],
[ "...", "i-0eb432b4098c4e9d8", { "period": 60 } ]
],
"region": "ap-southeast-2",
"period": 300,
"title": "TEST CPU Utilization",
}
}
]
有什么办法解决吗?
答案 0 :(得分:1)
您可以在新运行的实例上触发cloudwatch事件
您将lambda函数定义为目标,并可以在其中创建PutDashboard api call:
client.put_dashboard(DashboardName='string', DashboardBody='string')
cloudwatch事件将告诉您已触发了哪个实例ID,您可以在上述api调用中使用它。
您还可以侦听终止事件,并自动将实例从仪表板中删除。
最后,确保您的代码准确地运行在您想要的实例上。我建议您为此使用标签。
答案 1 :(得分:0)
我将通过生成有问题的CloudFormation来做到这一点,特别是使用模板语言和bash脚本来引导模板。
根据您选择的模板语言的语法,我希望您的模板文件看起来像这样:
...more cloudformation...
{
"widgets": [
{
"type": "metric",
"x": 0,
"y": 0,
"width": 9,
"height": 9,
"properties": {
"view": "timeSeries",
"stacked": false,
"metrics": [
<% for instance in instances { %>
[ "AWS/EC2", "CPUUtilization", "InstanceId", "<% instance.id %>", { "period": 60 } ],
<% } %>
],
"region": "ap-southeast-2",
"period": 300,
"title": "TEST CPU Utilization",
}
}
]
}
... more cloudformation...
一旦确定了模板过程,您将需要能够找到您的实例ID,以便将它们作为输入送入模板过程。为此,我建议使用EC2标记为您的实例提供识别标记,并使用AWS CLI查询此类实例。
aws ec2 describe-instances --filters "Name=tag:[tagName],Values=[tagValue]"
该命令应从上述相同的脚本运行,并将输出馈送到模板引擎。
请注意,[tagName]和[tagValue]应该替换为您自己提供给实例的tagName和tagValue,如上所述。