class PassengerMetrics::Cloudwatch

Constants

DEFAULT_DIMENSION_NAME
DEFAULT_DIMENSION_VALUE
DEFAULT_METRIC_NAME
DEFAULT_NAMESPACE
METRIC_UNITS

Attributes

metric[RW]

Public Class Methods

new(metric = nil) click to toggle source
# File lib/passenger-metrics/cloudwatch.rb, line 17
def initialize(metric = nil)
  self.metric = metric
end

Public Instance Methods

put() click to toggle source
# File lib/passenger-metrics/cloudwatch.rb, line 21
def put
  client.put_metric_data(put_metric_data_payload)
end

Private Instance Methods

client() click to toggle source
# File lib/passenger-metrics/cloudwatch.rb, line 79
def client
  @client ||= ::Aws::CloudWatch::Client.new region: 'us-east-1'
end
default_dimensions() click to toggle source
# File lib/passenger-metrics/cloudwatch.rb, line 63
def default_dimensions
  [{:name => dimension_name, :value => dimension_value}]
end
dimension_name() click to toggle source
# File lib/passenger-metrics/cloudwatch.rb, line 51
def dimension_name
  ENV["AWS_CLOUDWATCH_DIMENSION_NAME"] || DEFAULT_DIMENSION_NAME
end
dimension_value() click to toggle source
# File lib/passenger-metrics/cloudwatch.rb, line 55
def dimension_value
  ENV["AWS_CLOUDWATCH_DIMENSION_VALUE"] || instance_id || DEFAULT_DIMENSION_VALUE
end
dimensions() click to toggle source
# File lib/passenger-metrics/cloudwatch.rb, line 59
def dimensions
  (ENV["AWS_CLOUDWATCH_DIMENSIONS"] && JSON.parse(ENV["AWS_CLOUDWATCH_DIMENSIONS"])) || default_dimensions
end
instance_id() click to toggle source
# File lib/passenger-metrics/cloudwatch.rb, line 83
def instance_id
  PassengerMetrics.instance_id
end
metric_data() click to toggle source
# File lib/passenger-metrics/cloudwatch.rb, line 31
def metric_data
  [
    {
      :metric_name => metric_name,
      :dimensions => dimensions,
      :timestamp => timestamp,
      :value => value,
      :unit => unit
    }
  ]
end
metric_name() click to toggle source
# File lib/passenger-metrics/cloudwatch.rb, line 47
def metric_name
  metric.metric_name || ENV["AWS_CLOUDWATCH_METRIC_NAME"] || DEFAULT_METRIC_NAME
end
namespace() click to toggle source
# File lib/passenger-metrics/cloudwatch.rb, line 43
def namespace
  ENV["AWS_CLOUDWATCH_NAMESPACE"] || DEFAULT_NAMESPACE
end
put_metric_data_payload() click to toggle source
# File lib/passenger-metrics/cloudwatch.rb, line 27
def put_metric_data_payload
  {:namespace => namespace, :metric_data => metric_data}
end
timestamp() click to toggle source
# File lib/passenger-metrics/cloudwatch.rb, line 67
def timestamp
  Time.now
end
unit() click to toggle source
# File lib/passenger-metrics/cloudwatch.rb, line 75
def unit
  METRIC_UNITS[metric.unit]
end
value() click to toggle source
# File lib/passenger-metrics/cloudwatch.rb, line 71
def value
  metric.value
end