2015-01-21 105 views
0

我有我要报告的自定义CloudWatch指标。我的电话如下所示:CloudWatch EC2 - 查找EC2服务器的实例ID和实例名称

$dimensions = array(
    array(
     "Name" => "InstanceId", 
     "Value" => "need instance id here" 
    ), 
    array(
     "Name" => "InstanceName", 
     "Value" => "need instance name here" 
    ) 
); 

// API call to save cpu usage 
$client->putMetricData(array(
    "Namespace" => "mynamespace", 
    "MetricData" => array(
     array(
      "MetricName" => "CPU_Usage", 
      "Value" => $cpu_usage, 
      "Unit" => "Percent", 
      "Timestamp" => time(), 
      "Dimensions" => $dimensions 
     ) 
    ) 
)); 

我想用与运行脚本的服务器相对应的值填充InstanceId和InstanceName。

有没有办法通过CloudWatch API来做到这一点?

回答

1

我使用内部IP调用来获取实例ID,并使用该ID称为EC2的describeTags方法来获取实例名称。

$instance_id = $curl->get("http://169.254.169.254/latest/meta-data/instance-id"); 
$tags_result = $ec2_client->describeTags(array(
    "Filters" => array(
     array(
      "Name" => "resource-id", 
      "Values" => array(
       $instance_id 
      ) 
     ), 
     array(
      "Name" => "key", 
      "Values" => array(
       "Name" 
      ) 
     ) 
    ) 
)); 
$instance_name = $tags_result["Tags"][0]["Value"];