Amazon web services 将EC2实例ID映射到主机名,以便从监控系统注销实例

Amazon web services 将EC2实例ID映射到主机名,以便从监控系统注销实例,amazon-web-services,amazon-ec2,autoscaling,Amazon Web Services,Amazon Ec2,Autoscaling,每当EC2实例从自动缩放组终止时,我尝试删除对它们的监视 每当自动缩放终止为true时创建CloudWatch规则>>调用Lambda函数,该函数调用system manager以执行监视注销shell脚本 在实例上运行注销脚本后,它将发送详细信息,包括主机名、IP和客户代码 一旦我的监控中继服务器获得该文件,它就会注销该实例 在整个过程中,自动缩放生命周期钩子会将实例保持60分钟 整个过程都在运行,但配置起来太多了。我想要的是将CloudWatch terminate事件映射到我的监控服务器,

每当EC2实例从自动缩放组终止时,我尝试删除对它们的监视

  • 每当自动缩放终止为true时创建CloudWatch规则>>调用Lambda函数,该函数调用system manager以执行监视注销shell脚本
  • 在实例上运行注销脚本后,它将发送详细信息,包括主机名、IP和客户代码
  • 一旦我的监控中继服务器获得该文件,它就会注销该实例
  • 在整个过程中,自动缩放生命周期钩子会将实例保持60分钟
  • 整个过程都在运行,但配置起来太多了。我想要的是将CloudWatch terminate事件映射到我的监控服务器,以便无论何时发生任何终止,都可以从监控中删除该实例


    我面临的问题是,我的监控系统只了解主机名,CloudWatch捕获实例ID。

    最简单的方法是激活自动缩放通知,当自动缩放终止实例时,该通知可以向Amazon简单通知服务(SNS)发送事件

    见:

    具体来说,事件是
    自动缩放:EC2\u实例\u终止

    然后,您可以订阅SNS主题并收到如下消息:

    Service: AWS Auto Scaling
    Time: 2017-03-26T07:57:08.768Z
    RequestId: 89c49e5c-2bbd-44fb-984e-5bda05291313
    Event: autoscaling:EC2_INSTANCE_TERMINATE
    AccountId: 123456789012
    AutoScalingGroupName: ASG
    AutoScalingGroupARN: arn:aws:autoscaling:ap-southeast-2:123456789012:autoScalingGroup:5d65418d-e5a0-4a5a-a030-f4273a8a15a8:autoScalingGroupName/ASG
    ActivityId: 89c49e5c-2bbd-44fb-984e-5bda05291313
    Description: Terminating EC2 instance: i-046b4f0de355b0dff
    Cause: At 2017-03-26T07:56:17Z a user request update of AutoScalingGroup constraints to min: 1, max: 2, desired: 1 changing the desired capacity from 2 to 1. At 2017-03-26T07:56:26Z an instance was taken out of service in response to a difference between desired and actual capacity, shrinking the capacity from 2 to 1. At 2017-03-26T07:56:26Z instance i-046b4f0de355b0dff was selected for termination.
    StartTime: 2017-03-26T07:56:26.662Z
    EndTime: 2017-03-26T07:57:08.768Z
    StatusCode: InProgress
    StatusMessage: 
    Progress: 50
    EC2InstanceId: i-046b4f0de355b0dff
    Details: {"Subnet ID":"subnet-7c087015","Availability Zone":"ap-southeast-2a"}
    
    您还提到需要主机名。当然,这取决于主机名的配置位置。如果由应用程序设置,则一个选项是:

    • 还可以将主机名添加到实例上的标记中(这可以在启动时或通常设置主机名时完成)
    • 当响应来自SNS的终止通知时,调用
      descripbeinstances
      命令从实例检索标记并将其传递给监控系统
    如何设置主机名?它是由应用程序设置的,还是AWS将其设置为默认值?通常如何访问?