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);
}