Class: Fog::AWS::CloudWatch::Real

Inherits:
Object
  • Object
show all
Defined in:
lib/fog/aws/cloud_watch.rb,
lib/fog/aws/requests/cloud_watch/list_metrics.rb,
lib/fog/aws/requests/cloud_watch/delete_alarms.rb,
lib/fog/aws/requests/cloud_watch/describe_alarms.rb,
lib/fog/aws/requests/cloud_watch/put_metric_data.rb,
lib/fog/aws/requests/cloud_watch/set_alarm_state.rb,
lib/fog/aws/requests/cloud_watch/put_metric_alarm.rb,
lib/fog/aws/requests/cloud_watch/enable_alarm_actions.rb,
lib/fog/aws/requests/cloud_watch/disable_alarm_actions.rb,
lib/fog/aws/requests/cloud_watch/get_metric_statistics.rb,
lib/fog/aws/requests/cloud_watch/describe_alarm_history.rb,
lib/fog/aws/requests/cloud_watch/describe_alarms_for_metric.rb

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Real

Initialize connection to Cloudwatch

Notes

options parameter must include values for :aws_access_key_id and :aws_secret_access_key in order to create a connection

Examples

elb = CloudWatch.new(
 :aws_access_key_id => your_aws_access_key_id,
 :aws_secret_access_key => your_aws_secret_access_key
)

Parameters

  • options<~Hash> - config arguments for connection. Defaults to {}.

    • region<~String> - optional region to use, in [‘eu-west-1’, ‘us-east-1’, ‘us-west-1’, ‘us-west-2’, ‘ap-southeast-1’, ‘ap-northeast-1’]

Returns

  • CloudWatch object with connection to AWS.



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/fog/aws/cloud_watch.rb', line 64

def initialize(options={})
  @aws_access_key_id      = options[:aws_access_key_id]
  @aws_secret_access_key  = options[:aws_secret_access_key]
  @hmac = Fog::HMAC.new('sha256', @aws_secret_access_key)

  @connection_options = options[:connection_options] || {}
  options[:region] ||= 'us-east-1'
  @host = options[:host] || case options[:region]
  when 'ap-northeast-1'
    'monitoring.ap-northeast-1.amazonaws.com'
  when 'ap-southeast-1'
    'monitoring.ap-southeast-1.amazonaws.com'
  when 'eu-west-1'
    'monitoring.eu-west-1.amazonaws.com'
  when 'us-east-1'
    'monitoring.us-east-1.amazonaws.com'
  when 'us-west-1'
    'monitoring.us-west-1.amazonaws.com'
  when 'us-west-2'
    'monitoring.us-west-2.amazonaws.com'
  else
    raise ArgumentError, "Unknown region: #{options[:region].inspect}"
  end
  @path       = options[:path]        || '/'
  @persistent = options[:persistent]  || false
  @port       = options[:port]        || 443
  @scheme     = options[:scheme]      || 'https'
  @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}#{@path}", @persistent, @connection_options)
end

Instance Method Details

#delete_alarms(alarm_names) ⇒ Object

Delete a list of alarms

Options

  • AlarmNames<~Array>: A list of alarms to be deleted

Returns

  • response<~Excon::Response>:

See Also

docs.amazonwebservices.com/AmazonCloudWatch/latest/APIReference/index.html?API_DeleteAlarms.html



19
20
21
22
23
24
25
26
# File 'lib/fog/aws/requests/cloud_watch/delete_alarms.rb', line 19

def delete_alarms(alarm_names)
  options = {}
  options.merge!(AWS.indexed_param('AlarmNames.member.%d', [*alarm_names]))
  request({
      'Action'    => 'DeleteAlarms',
      :parser     => Fog::Parsers::AWS::CloudWatch::DeleteAlarms.new
    }.merge(options))
end

#describe_alarm_history(options = {}) ⇒ Object

Retrieves history for the specified alarm

Options

  • AlarmName<~String>: The name of the alarm

  • EndDate<~DateTime>: The ending date to retrieve alarm history

  • HistoryItemType<~String>: The type of alarm histories to retrieve

  • MaxRecords<~Integer>: The maximum number of alarm history records to retrieve

  • NextToken<~String> The token returned by a previous call to indicate that there is more data available

  • StartData<~DateTime>: The starting date to retrieve alarm history

Returns

  • response<~Excon::Response>:

See Also

docs.amazonwebservices.com/AmazonCloudWatch/latest/APIReference/index.html?API_DescribeAlarmHistory.html



24
25
26
27
28
29
# File 'lib/fog/aws/requests/cloud_watch/describe_alarm_history.rb', line 24

def describe_alarm_history(options={})
  request({
      'Action'    => 'DescribeAlarmHistory',
      :parser     => Fog::Parsers::AWS::CloudWatch::DescribeAlarmHistory.new
    }.merge(options))
end

#describe_alarms(options = {}) ⇒ Object

Retrieves alarms with the specified names

Options

  • ActionPrefix<~String>: The action name prefix

  • AlarmNamePrefix<~String>: The alarm name prefix.

    AlarmNames cannot be specified if this parameter is specified
    
  • AlarmNames<~Array>: A list of alarm names to retrieve information for.

  • MaxRecords<~Integer>: The maximum number of alarm descriptions to retrieve

  • NextToken<~String>: The token returned by a previous call to indicate that there is more data available

  • NextToken<~String> The token returned by a previous call to indicate that there is more data available

  • StateValue<~String>: The state value to be used in matching alarms

Returns

  • response<~Excon::Response>:

See Also

docs.amazonwebservices.com/AmazonCloudWatch/latest/APIReference/API_DescribeAlarms.html



26
27
28
29
30
31
32
33
34
# File 'lib/fog/aws/requests/cloud_watch/describe_alarms.rb', line 26

def describe_alarms(options={})
  if alarm_names = options.delete('AlarmNames')
    options.merge!(AWS.indexed_param('AlarmNames.member.%d', [*alarm_names]))
  end
  request({
      'Action'    => 'DescribeAlarms',
      :parser     => Fog::Parsers::AWS::CloudWatch::DescribeAlarms.new
    }.merge(options))
end

#describe_alarms_for_metric(options) ⇒ Object

Retrieves all alarms for a single metric

Options

  • Dimensions<~Array>: a list of dimensions to filter against

    Name : The name of the dimension
    Value : The value to filter against
    
  • MetricName<~String>: The name of the metric

  • Namespace<~String>: The namespace of the metric

  • Period<~Integer>: The period in seconds over which the statistic is applied

  • Statistics<~String>: The statistic for the metric

  • Unit<~String> The unit for the metric

Returns

  • response<~Excon::Response>:

See Also

docs.amazonwebservices.com/AmazonCloudWatch/latest/APIReference/API_DescribeAlarms.html



26
27
28
29
30
31
32
33
34
35
# File 'lib/fog/aws/requests/cloud_watch/describe_alarms_for_metric.rb', line 26

def describe_alarms_for_metric(options)
  if dimensions = options.delete('Dimensions')
    options.merge!(AWS.indexed_param('Dimensions.member.%d.Name', dimensions.collect {|dimension| dimension['Name']}))
    options.merge!(AWS.indexed_param('Dimensions.member.%d.Value', dimensions.collect {|dimension| dimension['Value']}))
  end
  request({
      'Action'    => 'DescribeAlarmsForMetric',
      :parser     => Fog::Parsers::AWS::CloudWatch::DescribeAlarmsForMetric.new
    }.merge(options))
end

#disable_alarm_actions(alarm_names) ⇒ Object

Disables actions for the specified alarms

Options

  • AlarmNames<~Array>: The names of the alarms to disable actions for

Returns

  • response<~Excon::Response>:

See Also

docs.amazonwebservices.com/AmazonCloudWatch/latest/APIReference/API_DisableAlarmActions.html



19
20
21
22
23
24
25
26
# File 'lib/fog/aws/requests/cloud_watch/disable_alarm_actions.rb', line 19

def disable_alarm_actions(alarm_names)
  options = {}
  options.merge!(AWS.indexed_param('AlarmNames.member.%d', [*alarm_names]))
  request({
      'Action'    => 'DisableAlarmActions',
      :parser     => Fog::Parsers::AWS::CloudWatch::DisableAlarmActions.new
    }.merge(options))
end

#enable_alarm_actions(alarm_names) ⇒ Object

Enables actions for the specified alarms

Options

  • AlarmNames<~Array>: The names of the alarms to enable actions for

Returns

  • response<~Excon::Response>:

See Also

docs.amazonwebservices.com/AmazonCloudWatch/latest/APIReference/API_EnableAlarmActions.html



19
20
21
22
23
24
25
26
# File 'lib/fog/aws/requests/cloud_watch/enable_alarm_actions.rb', line 19

def enable_alarm_actions(alarm_names)
  options = {}
  options.merge!(AWS.indexed_param('AlarmNames.member.%d', [*alarm_names]))
  request({
      'Action'    => 'EnableAlarmActions',
      :parser     => Fog::Parsers::AWS::CloudWatch::EnableAlarmActions.new
    }.merge(options))
end

#get_metric_statistics(options = {}) ⇒ Object

Fetch datapoints for a metric. At most 1440 datapoints will be returned, the most datapoints that can be queried is 50850 StartTime is capped to 2 weeks ago

Options

  • Namespace<~String>: the namespace of the metric

  • MetricName<~String>: the name of the metric

  • StartTime<~Datetime>: when to start fetching datapoints from (inclusive)

  • EndTime<~Datetime>: used to determine the last datapoint to fetch (exclusive)

  • Period<~Integer>: Granularity, in seconds of the returned datapoints. Must be a multiple of 60, and at least 60

  • Statistics<~Array>: An array of up to 5 strings, which name the statistics to return

  • Unit<~String>: The unit for the metric

  • Dimensions<~Array>: a list of dimensions to filter against (optional)

    Name : The name of the dimension
    Value : The value to filter against
    

Returns

  • response<~Excon::Response>:

See Also

docs.amazonwebservices.com/AmazonCloudWatch/latest/APIReference/API_GetMetricStatistics.html



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/fog/aws/requests/cloud_watch/get_metric_statistics.rb', line 27

def get_metric_statistics(options={})
  %w{Statistics StartTime EndTime Period MetricName Namespace}.each do |required_parameter|
    raise ArgumentError, "Must prodide #{required_parameter}" unless options.has_key?(required_parameter)
  end
  statistics = options.delete 'Statistics'
  options.merge!(AWS.indexed_param('Statistics.member.%d', [*statistics]))

  if dimensions = options.delete('Dimensions')
    options.merge!(AWS.indexed_param('Dimensions.member.%d.Name', dimensions.collect {|dimension| dimension['Name']}))
    options.merge!(AWS.indexed_param('Dimensions.member.%d.Value', dimensions.collect {|dimension| dimension['Value']}))
  end

  request({
      'Action'    => 'GetMetricStatistics',
      :parser     => Fog::Parsers::AWS::CloudWatch::GetMetricStatistics.new
    }.merge(options))
end

#list_metrics(options = {}) ⇒ Object

List availabe metrics

Options

  • Dimensions<~Array>: a list of dimensions to filter against,

    Name : The name of the dimension
    Value : The value to filter against
    
  • MetricName<~String>: The name of the metric to filter against

  • Namespace<~String>: The namespace to filter against

  • NextToken<~String> The token returned by a previous call to indicate that there is more data available

Returns

  • response<~Excon::Response>:

See Also

docs.amazonwebservices.com/AmazonCloudWatch/latest/APIReference/API_ListMetrics.html



23
24
25
26
27
28
29
30
31
32
33
# File 'lib/fog/aws/requests/cloud_watch/list_metrics.rb', line 23

def list_metrics(options={})
  if dimensions = options.delete('Dimensions')
    options.merge!(AWS.indexed_param('Dimensions.member.%d.Name', dimensions.collect {|dimension| dimension['Name']}))
    options.merge!(AWS.indexed_param('Dimensions.member.%d.Value', dimensions.collect {|dimension| dimension['Value']}))
  end

  request({
      'Action'    => 'ListMetrics',
      :parser     => Fog::Parsers::AWS::CloudWatch::ListMetrics.new
    }.merge(options))
end

#put_metric_alarm(options) ⇒ Object

Creates or updates an alarm and associates it with the specified Amazon CloudWatch metric

Options

  • ActionsEnabled<~Boolean>: Indicates whether or not actions should be executed during any changes to the alarm’s state

  • AlarmActions<~Array>: A list of actions to execute

  • AlarmDescription<~String>: The description for the alarm

  • AlarmName<~String> The unique name for the alarm

  • ComparisonOperator<~String>: The arithmetic operation to use for comparison

  • Dimensions<~Array>: a list of dimensions to filter against,

    Name : The name of the dimension
    Value : The value to filter against
    
  • EvaluationPeriods<~Integer>: The number of periods over which data is compared to the specified threshold

  • InsufficientDataActions<~Array>: A list of actions to execute

  • MetricName<~String>: The name for the alarm’s associated metric

  • Namespace<~String>: The namespace for the alarm’s associated metric

  • OKActions<~Array>: A list of actions to execute

  • Period<~Integer>: The period in seconds over which the specified statistic is applied

  • Statistic<~String>: The statistic to apply to the alarm’s associated metric

  • Threshold<~Double>: The value against which the specified statistic is compared

  • Unit<~String>: The unit for the alarm’s associated metric

Returns

  • response<~Excon::Response>:

See Also

docs.amazonwebservices.com/AmazonCloudWatch/latest/APIReference/API_PutMetricAlarm.html



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/fog/aws/requests/cloud_watch/put_metric_alarm.rb', line 33

def put_metric_alarm(options)
  if dimensions = options.delete('Dimensions')
    options.merge!(AWS.indexed_param('Dimensions.member.%d.Name', dimensions.collect {|dimension| dimension['Name']}))
    options.merge!(AWS.indexed_param('Dimensions.member.%d.Value', dimensions.collect {|dimension| dimension['Value']}))
  end
  if alarm_actions = options.delete('AlarmActions')
    options.merge!(AWS.indexed_param('AlarmActions.member.%d', [*alarm_actions]))
  end
  if insufficient_data_actions = options.delete('InsufficientDataActions')
    options.merge!(AWS.indexed_param('InsufficientDataActions.member.%d', [*insufficient_data_actions]))
  end
  if ok_actions = options.delete('OKActions')
    options.merge!(AWS.indexed_param('OKActions.member.%d', [*ok_actions]))
  end

  request({
      'Action'    => 'PutMetricAlarm',
      :parser     => Fog::Parsers::AWS::CloudWatch::PutMetricAlarm.new
    }.merge(options))
end

#put_metric_data(namespace, metric_data) ⇒ Object

Publishes one or more data points to CloudWatch. A new metric is created if necessary

Options

  • Namespace<~String>: the namespace of the metric data

  • MetricData<~Array>: the datapoints to publish of the metric

    * MetricName<~String>: the name of the metric
    * Timestamp<~String>: the timestamp for the data point. If omitted defaults to the time at which the data is received by CloudWatch
    * Unit<~String>: the unit
    * Value<~Double> the value for the metric
    * StatisticValues<~Hash>:
        * Maximum<~Double>: the maximum value of the sample set
        * Sum<~Double>: the sum of the values of the sample set
        * SampleCount<~Double>: the number of samples used for the statistic set
        * Minimum<~Double>: the minimum value of the sample set
    * Dimensions<~Array>: the dimensions for the metric. From 0 to 10 may be included
         * Name<~String>
        * Value<~String>
    

Returns

  • response<~Excon::Response>:

See Also

docs.amazonwebservices.com/AmazonCloudWatch/latest/APIReference/API_PutMetricData.html



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/fog/aws/requests/cloud_watch/put_metric_data.rb', line 31

def put_metric_data(namespace, metric_data)
  options = {'Namespace' => namespace}

  #first index the dimensions for any of the datums that have dimensions
  metric_data.collect! do |metric_datum|
    if dimensions = metric_datum.delete('Dimensions')
      metric_datum.merge!(AWS.indexed_param('Dimensions.member.%d.Name', dimensions.collect {|dimension| dimension['Name']}))
      metric_datum.merge!(AWS.indexed_param('Dimensions.member.%d.Value', dimensions.collect {|dimension| dimension['Value']}))
    end
    metric_datum
  end
  #then flatten out an hashes in the metric_data array
  metric_data.collect! { |metric_datum| flatten_hash(metric_datum) }
  #then index the metric_data array
  options.merge!(AWS.indexed_param('MetricData.member.%d', [*metric_data]))
  #then finally flatten out an hashes in the overall options array
  options = flatten_hash(options)

  request({
      'Action'    => 'PutMetricData',
      :parser     => Fog::Parsers::AWS::CloudWatch::PutMetricData.new
    }.merge(options))
end

#reloadObject



94
95
96
# File 'lib/fog/aws/cloud_watch.rb', line 94

def reload
  @connection.reset
end

#set_alarm_state(options) ⇒ Object

Temporarily sets the state of an alarm

Options

  • AlarmName<~String>: The names of the alarm

  • StateReason<~String>: The reason that this alarm is set to this specific state (in human-readable text format)

  • StateReasonData<~String>: The reason that this alarm is set to this specific state (in machine-readable JSON format)

  • StateValue<~String>: The value of the state

Returns

  • response<~Excon::Response>:

See Also

docs.amazonwebservices.com/AmazonCloudWatch/latest/APIReference/API_SetAlarmState.html



22
23
24
25
26
27
# File 'lib/fog/aws/requests/cloud_watch/set_alarm_state.rb', line 22

def set_alarm_state(options)
  request({
      'Action'    => 'SetAlarmState',
      :parser     => Fog::Parsers::AWS::CloudWatch::SetAlarmState.new
    }.merge(options))
end