public void writeMetric()

in src/main/java/com/google/cloud/run/kafkascaler/MetricsService.java [81:121]


  public void writeMetric(String metricName, double value, Map<String, String> metricLabels) {
    if (Strings.isNullOrEmpty(metricName)) {
      throw new IllegalArgumentException("metricName cannot be null or empty.");
    }

    Instant now = Instant.now();

    TimeInterval interval =
        TimeInterval.newBuilder().setEndTime(Timestamps.fromMillis(now.toEpochMilli())).build();

    TypedValue typedValue = TypedValue.newBuilder().setDoubleValue(value).build();

    Point point = Point.newBuilder().setInterval(interval).setValue(typedValue).build();

    String metricType = String.format("custom.googleapis.com/%s", metricName);
    metricLabels = metricLabels != null ? metricLabels : new HashMap<>();
    Metric metric = Metric.newBuilder().setType(metricType).putAllLabels(metricLabels).build();

    MonitoredResource resource =
        MonitoredResource.newBuilder().setType("global").putAllLabels(resourceLabels).build();

    TimeSeries timeSeries =
        TimeSeries.newBuilder()
            .setMetric(metric)
            .setResource(resource)
            .addAllPoints(Collections.singletonList(point))
            .setMetricKind(MetricKind.GAUGE)
            .setValueType(ValueType.DOUBLE)
            .build();

    List<TimeSeries> timeSeriesList = new ArrayList<>();
    timeSeriesList.add(timeSeries);

    CreateTimeSeriesRequest request =
        CreateTimeSeriesRequest.newBuilder()
            .setName(projectName.toString())
            .addAllTimeSeries(timeSeriesList)
            .build();

    cloudMonitoringClient.createTimeSeries(request);
  }