amazon-web-services之ansible ec2_metric_alarm 不会附加到自动缩放策略

findumars 阅读:85 2025-01-19 22:14:33 评论:0

因此,我正在尝试使用 ansible ec2_metric_alarm 任务来创建一个云监视警报,用于监控我的自动缩放组,并在 ASG 的 cpu 使用率高于或低于某个点时激活自动缩放策略。

   - ec2_metric_alarm: 
      aws_access_key: '{{ ami_access }}' 
      aws_secret_key: '{{ ami_secret }}' 
      state: present 
      region: "{{regi}}" 
      name: "{{item.names}}" 
      metric: "CPUUtilization" 
      namespace: "AWS/EC2" 
      statistic: Average 
      comparison: "{{item.compare}}" 
      threshold: "{{item.limits}}" 
      period: 60 
      evaluation_periods: 1 
      unit: "Percent" 
      description: "{{item.desc}}" 
      dimensions: {'AutoScalingGroupName':'{{auto_sc}}'} 
      alarm_actions: "{{item.pol}}" 
     with_items: 
      - names: "cpuUP_{{auto_sc}}" 
        compare: ">=" 
        limits: "20.0" 
        desc: "This will alarm when the average cpu usage of the ASG is         greater than 20% for 1 minute" 
        pol: "cpuUP_{{auto_sc}}_policy" 
      - names: "cpuDown_{{auto_sc}}" 
        compare: "<=" 
        limits: "10.0" 
        desc: "This will alarm when the average cpu usage of the ASG is less than 10% for 1 minute" 
        pol: "cpuDown_{{auto_sc}}_policy" 

出于某种原因,我不能只使用自动缩放策略的字面名称(即“cpuDown_test3_policy”和“cpuUP_test3_policy”),我需要使用一种称为“arn syntax”的东西,因为我的错误消息一直在提示无效的 Arn 语法。

如何找到 arn 语法或将我的自动扩展策略名称转换为 arn 语法?

这里是我尝试按原样运行剧本时收到的错误消息供引用:

TASK [ec2_metric_alarm]     ******************************************************** 
failed: [localhost] => (item={u'pol': u'cpuUP_test3_policy', u'desc': u'This wil 
l alarm when the average cpu usage of the ASG is greater than 20% for 1     minute', 
 u'compare': u'>=', u'limits': u'20.0', u'names': u'cpuUP_test3'}) =>     {"failed": 
 true, "item": {"compare": ">=", "desc": "This will alarm when the average     cpu u 
sage of the ASG is greater than 20% for 1 minute", "limits": "20.0",     "names": "c 
puUP_test3", "pol": "cpuUP_test3_policy"}, "msg": "BotoServerError: 400 Bad     Requ 
est\n<ErrorResponse xmlns=\"http://monitoring.amazonaws.com/doc/2010-08-    01/\">\n 
  <Error>\n    <Type>Sender</Type>\n    <Code>ValidationError</Code>\n        <Messa 
ge>Invalid arn syntax: cpuUP_test3_policy</Message>\n  </Error>\n      <RequestId>d8 
97c79a-01db-11e6-92d5-5fa534a149e9</RequestId>\n</ErrorResponse>\n"} 
failed: [localhost] => (item={u'pol': u'cpuDown_test3_policy', u'desc':     u'This w 
ill alarm when the average cpu usage of the ASG is less than 10% for 1     minute',  
u'compare': u'<=', u'limits': u'10.0', u'names': u'cpuDown_test3'}) =>     {"failed" 
: true, "item": {"compare": "<=", "desc": "This will alarm when the average     cpu  
usage of the ASG is less than 10% for 1 minute", "limits": "10.0", "names":     "cpu 
Down_test3", "pol": "cpuDown_test3_policy"}, "msg": "BotoServerError: 400     Bad Re 
quest\n<ErrorResponse xmlns=\"http://monitoring.amazonaws.com/doc/2010-08-    01/\"> 
\n  <Error>\n    <Type>Sender</Type>\n    <Code>ValidationError</Code>\n        <Mes 
sage>Invalid arn syntax: cpuDown_test3_policy</Message>\n  </Error>\n      <RequestI 
d>d8b33ea6-01db-11e6-82db-8bfc9e3af9a2</RequestId>\n</ErrorResponse>\n"} 

请您参考如下方法:

请阅读解释 Amazon Resource Name. 的链接 以下是所提供链接的摘录。

Amazon Resource Names (ARNs) uniquely identify AWS resources. We require an ARN when you need to specify a resource unambiguously across all of AWS, such as in IAM policies, Amazon Relational Database Service (Amazon RDS) tags, and API calls.

这是一个 alarm_actions: 应该看起来像的例子..

alarm_actions: ["arn:aws:autoscaling:region:account-id:scalingPolicy:policyid:autoScalingGroupName/groupfriendlyname:policyname/policyfriendlyname"] 

您应该首先创建一个缩放策略并使用注册的输出来获取您想要使用的缩放策略的 arn。

这是一个例子..

- name: Scale Out policy 
  local_action: 
  module: ec2_scaling_policy 
    state: present 
    region: "{{ aws_region }}" 
    name: "Name-ScaleOutPolicy" 
    adjustment_type: "ChangeInCapacity" 
    asg_name: "name_of_autoscale_group" 
    scaling_adjustment: "-1" 
    min_adjustment_step: "1" 
    cooldown: "30" 
  register: so_result 

现在您可以将指标警报设置为使用扩展策略 arn,就像这样。

alarm_actions: ['{{ so_result["arn"] }}'] 


标签:WEB
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号