Class: Fluent::StackdriverMonitoring::Writer

Inherits:
Object
  • Object
show all
Defined in:
lib/fluent/plugin/stackdriver/client.rb

Instance Method Summary collapse

Constructor Details

#initialize(project, custom_metrics, log) ⇒ Writer

Returns a new instance of Writer.



12
13
14
15
16
17
# 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

Instance Method Details

#startObject



19
20
21
22
# 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) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
# 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