Использование Ruby SDK для AWS/CloudWatch. Я пытаюсь просто получить среднее использование ЦП конкретного экземпляра RDS.Ruby AWS SDK CloudWatch
metric = AWS::CloudWatch::Metric.new('AWS/RDS', 'CPUUtilization', :dimensions => {[ :name => 'DBInstanceIdentifier'], [:value => 'my_db_instance' ] })
puts metric.metric_name # shows the right name
puts metric.namespace # shows the right namespace
stats = metric.statistics(:start_time => Time.now - 300, :statistics => ['Average'])
Последняя строка завершается с:
/Library/Ruby/Gems/1.8/gems/aws-sdk-1.12.0/lib/aws/core/option_grammar.rb:337:in `validate': expected hash value for member 1 of option dimensions (AWS::Core::OptionGrammar::FormatError)
Я также попытался:
stats = metric.statistics(:options => {[:start_time => Time.now - 300], [:statistics => ['Average']]})
И получил ту же ошибку.
stats = metric.statistics({[:start_time => Time.now - 300], [:statistics => ['Average']]})
Дает:
/Library/Ruby/Gems/1.8/gems/aws-sdk-1.12.0/lib/aws/core/option_grammar.rb:588:in `validate': unexpected option start_timeSat Jul 20 11:27:14 -0400 2013 (ArgumentError)
После документации AWS, я был в состоянии получить данные от кода, как это:
metric = CloudWatch::Metric.new('AWS/RDS', 'CPUUtilization')
stats = metric.statistics(:start_time => Time.now - 3600, :end_time => Time.now, :statistics => ['Average'])
stats.label #=> 'some-label'
stats.each do |datapoint|
puts datapoint
end
Но я не вижу, как сузить этот к конкретному экземпляру, который меня интересует, поскольку хеш datapoint не говорит, в каком экземпляре он находится.
Я довольно новичок в Ruby, но добился успеха с помощью EC2, ELB, AutoScaling частей SDK. CloudWatch меня бросает.
Я ценю любую помощь, которую может предложить любой.
Питер
Благодаря kino1. Потребовал мне время, чтобы найти время, чтобы проверить, но ваше решение привело меня к горбу. Я также отмечаю, что он работает без фигурных скобок: : dimensions => [: name => 'DBInstanceIdentifier',: value => 'my_db_instance'] – Peter
Без фигурных скобок это еще более СУХОЙ, отлично. Мне просто интересно, что Ruby построить на самом деле сейчас ... Я решил не редактировать пост, чтобы отразить комментарий @peter, хотя, поскольку я думаю, что для 2 + измерений вам понадобится скобки снова, то есть '[{: name => 'dim1 ',: value =>' val1 '}, {: name =>' dim2 ',: value =>' val2 '}] ' – kino1