class Fluent::StackdriverMonitoring::Writer
Public Class Methods
new(project, custom_metrics, log)
click to toggle source
# File lib/fluent/plugin/stackdriver/client.rb, line 12 def initialize(project, custom_metrics, log) @custom_metrics = custom_metrics @project_name = Google::Cloud::Monitoring::V3::MetricServiceClient.project_path project @metric_name = Google::Cloud::Monitoring::V3::MetricServiceClient.metric_descriptor_path project, custom_metrics.type @log = log end
Public Instance Methods
start()
click to toggle source
# File lib/fluent/plugin/stackdriver/client.rb, line 19 def start @metric_service_client = Google::Cloud::Monitoring::V3::MetricServiceClient.new @metric_descriptor = create_metric_descriptor end
write(start_time, end_time, value)
click to toggle source
# File lib/fluent/plugin/stackdriver/client.rb, line 24 def write(start_time, end_time, value) time_series = create_time_series point = Google::Monitoring::V3::Point.new point.interval = create_time_interval start_time, end_time point.value = create_typed_value value time_series.points.push point log.debug "Create time series", start_time: Time.at(start_time).to_s, end_time: Time.at(end_time).to_s, value: value, metric_name: @metric_name # Only one point can be written per TimeSeries per request. @metric_service_client.create_time_series @project_name, [time_series] end
Private Instance Methods
create_metric_descriptor()
click to toggle source
# File lib/fluent/plugin/stackdriver/client.rb, line 41 def create_metric_descriptor begin metric_descriptor = @metric_service_client.get_metric_descriptor(@metric_name) log.info "Succeed to get metric descripter", metric_name: @metric_name return metric_descriptor rescue Google::Gax::RetryError log.info "Failed to get metric descripter", metric_name: @metric_name end metric_descriptor = Google::Api::MetricDescriptor.new metric_descriptor.type = @custom_metrics.type metric_descriptor.metric_kind = @custom_metrics.metric_kind metric_descriptor.value_type = @custom_metrics.value_type metric_descriptor = @metric_service_client.create_metric_descriptor(@project_name, metric_descriptor) log.info "Succeed to create metric descripter", metric_name: @metric_name metric_descriptor end
create_time_interval(start_time, end_time)
click to toggle source
# File lib/fluent/plugin/stackdriver/client.rb, line 73 def create_time_interval(start_time, end_time) time_interval = Google::Monitoring::V3::TimeInterval.new time_interval.start_time = Google::Protobuf::Timestamp.new seconds: start_time time_interval.end_time = Google::Protobuf::Timestamp.new seconds: end_time time_interval end
create_time_series()
click to toggle source
# File lib/fluent/plugin/stackdriver/client.rb, line 60 def create_time_series time_series = Google::Monitoring::V3::TimeSeries.new metric = Google::Api::Metric.new metric.type = @metric_descriptor.type time_series.metric = metric time_series.metric_kind = @metric_descriptor.metric_kind time_series.value_type = @metric_descriptor.value_type time_series end
create_typed_value(value)
click to toggle source
# File lib/fluent/plugin/stackdriver/client.rb, line 80 def create_typed_value(value) typed_value = Google::Monitoring::V3::TypedValue.new case @metric_descriptor.value_type when :BOOL typed_value.bool_value = !!value when :INT64 typed_value.int64_value = value.to_i when :DOUBLE typed_value.double_value = value.to_f else raise Error.new 'Unknown value_type!' end typed_value end
log()
click to toggle source
# File lib/fluent/plugin/stackdriver/client.rb, line 37 def log @log end