首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >云监控获取InstanceId

云监控获取InstanceId
EN

Stack Overflow用户
提问于 2017-11-11 12:31:39
回答 2查看 867关注 0票数 1

如何获取Cloudwatch alarm所有实例的InstanceId,我正在尝试创建一个cloudwatch Alarm,以便在磁盘使用率达到90%时发送电子邮件。

代码语言:javascript
复制
Resources:    
  EC2DiskHealth:
  Type: AWS::CloudWatch::Alarm
  Properties:
    AlarmDescription: { "Fn::Join" : ["", [{ "Ref" : "AWSEBEnvironmentName" }, ": Disk Usage" ]]}
    Namespace: System/Linux
    MetricName: DiskSpaceAvailable
    Dimensions:
      - Name: InstanceId
        Value : { "Ref" : "instance-id" }
      - Name: Filesystem
        Value: /dev/xvda1
      - Name: MountPath
        Value: /
    Statistic: Average
    Period: 60
    EvaluationPeriods: 5
    Threshold:
      Fn::GetOptionSetting:
        OptionName: ELBHealth
        DefaultValue: "90"
    ComparisonOperator: GreaterThanThreshold
    AlarmActions:
      - arn:aws:sns:awsregion:sns
    InsufficientDataActions:
      - arn:aws:sns:awsregion:sns
    OKActions:
      - arn:aws:sns:awsregion:sns

输出:我应该能够获得instance-id以便警报工作。

代码语言:javascript
复制
    Dimensions:
      - Name: InstanceId
        Value : { "Ref" : "instance-id" }

错误:

代码语言:javascript
复制
Service:AmazonCloudFormation, Message:Template format error: Unresolved resource dependencies [instance-id] in the Resources block of the template
EN

回答 2

Stack Overflow用户

发布于 2017-11-11 14:55:25

看起来你的情况是:

  • 您有一些现有的Amazon EC2实例
  • 您正在这些实例上运行一些脚本/代码,这些实例定期向Amazon CloudWatch
  • 发送一个名为DiskSpaceAvailable的指标您希望创建一个CloudFormation模板
  • 当<代码>D9超过某个指标<代码>H210<代码>F211时,该模板应为每个EC2实例创建警报

这是不可能的。

亚马逊CloudWatch模板可以创建资源,也可以引用资源,但它不能出去发现资源,也不能在发现的资源上执行循环。

例如,模板可以创建一个实例,然后专门为该实例添加警报。但是,它不会自动发现资源。

您可以编写一个可以做任何您想做的事情的AWS Lambda-backed Custom Resource (您必须编写代码),但是您的代码需要创建警报而不是CloudFormation。

底线:你的用例最好是通过你自己的代码(Lambda或者直接的代码)来完成,而不是使用CloudFormation。

票数 3
EN

Stack Overflow用户

发布于 2018-10-23 17:00:04

您的问题是当cloudwatch检测到磁盘实例使用率超过90%时发送邮件。

这是cloudwatch任务的基础:在cloudwatch告警本身中创建邮件通知,设置邮件并保存。

更多细节在这里(这是一个与CPU相关的示例,但原理是相同的):

https://docs.aws.amazon.com/fr_fr/AmazonCloudWatch/latest/monitoring/US_AlarmAtThresholdEC2.html

如果您需要实例本身的instance-id,可以通过它的元数据获得它的instance-id:

代码语言:javascript
复制
curl http://169.254.169.254/latest/meta-data/instance-id
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47234362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档