Sha256: d8a7ada83843ad03470b1aa995fc214124c540191b561211eea02deee495df83
Contents?: true
Size: 1.73 KB
Versions: 5
Compression:
Stored size: 1.73 KB
Contents
require 'net/http' module PassengerMetrics class Cloudwatch DEFAULT_NAMESPACE = "Passenger" DEFAULT_METRIC_NAME = "MetricName" DEFAULT_DIMENSION_NAME = "InstanceId" DEFAULT_DIMENSION_VALUE = "InstanceId" METRIC_UNITS = { nil => "None", :count => "Count" } attr_accessor :metric def initialize(metric = nil) self.metric = metric end def put client.put_metric_data(put_metric_data_payload) end private def put_metric_data_payload {:namespace => namespace, :metric_data => metric_data} end def metric_data [ { :metric_name => metric_name, :dimensions => dimensions, :timestamp => timestamp, :value => value, :unit => unit } ] end def namespace ENV["AWS_CLOUDWATCH_NAMESPACE"] || DEFAULT_NAMESPACE end def metric_name metric.metric_name || ENV["AWS_CLOUDWATCH_METRIC_NAME"] || DEFAULT_METRIC_NAME end def dimension_name ENV["AWS_CLOUDWATCH_DIMENSION_NAME"] || DEFAULT_DIMENSION_NAME end def dimension_value ENV["AWS_CLOUDWATCH_DIMENSION_VALUE"] || instance_id || DEFAULT_DIMENSION_VALUE end def dimensions (ENV["AWS_CLOUDWATCH_DIMENSIONS"] && JSON.parse(ENV["AWS_CLOUDWATCH_DIMENSIONS"])) || default_dimensions end def default_dimensions [{:name => dimension_name, :value => dimension_value}] end def timestamp Time.now end def value metric.value end def unit METRIC_UNITS[metric.unit] end def client @client ||= ::Aws::CloudWatch::Client.new region: 'us-east-1' end def instance_id PassengerMetrics.instance_id end end end
Version data entries
5 entries across 5 versions & 1 rubygems