CloudWatchのメトリックス一覧はListMetrics APIで取得することができる。 aws-sdkを使ってCloudWatchのメトリックス一覧を取得するには以下のようにする。
require 'aws-sdk'
AWS.config(:access_key_id => 'YOUR_ACCESS_KEY',
:secret_access_key => 'YOUR_SECRET_KEY',
:region => 'YOUR_REGION')
metrics = AWS::CloudWatch::MetricCollection.new()
metrics.each{|metric|
p metric
}
結果は以下のようになる。
...
<AWS::CloudWatch::Metric namespace:AWS/EC2 metric_name:CPUUtilization dimensions:[{:name=>"InstanceId", :value=>"i-12345678"}]>
<AWS::CloudWatch::Metric namespace:AWS/EBS metric_name:VolumeTotalWriteTime dimensions:[{:name=>"VolumeId", :value=>"vol-23456789"}]>
<AWS::CloudWatch::Metric namespace:AWS/EC2 metric_name:DiskReadBytes dimensions:[{:name=>"InstanceId", :value=>"i-34567890"}]>
メトリックス一覧はfilter
によりフィルタすることが可能である。 filter
にはフィルタ対象の属性と値を与える。
以下はネームスペースがAWS/EBS
のメトリックス一覧を取得する。
metrics = AWS::CloudWatch::MetricCollection.new()
metrics.filter('namespace', 'AWS/EBS').each{|metric|
p metric
}
以下はメトリック名がCPUUtilization
のメトリックス一覧を取得する。
metrics = AWS::CloudWatch::MetricCollection.new()
metrics.filter('metric_name', 'CPUUtilization').each{|metric|
p metric
}
以下はディメンションによるフィルタの例である。 InstanceId
がi-12345678
のメトリックス一覧だけを取得する。
metrics = AWS::CloudWatch::MetricCollection.new()
metrics.filter('dimention', [{:name => 'InstanceId'}, {:value => 'i-12345678'}]).each{|metric|
p metric
}
ネームスペース、メトリック名、ディメンションによるフィルタはwith_*
メソッドでも行える。
metrics = AWS::CloudWatch::MetricCollection.new()
metrics.with_namespace('AWS/EBS')
metrics.with_metric_name('CPUUtilization')
metircs.with_dimention([{:name => 'InstanceId'}, {:value => 'i-12345678'}])