in observability/custom-metrics-autoscaling/direct-to-sd/sd_dummy_exporter.go [148:180]
func exportMetric(client *monitoring.MetricClient, metricName string,
metricValue int64, metricLabels map[string]string, monitoredResource string, resourceLabels map[string]string) error {
dataPoint := &monitoringpb.Point{
Interval: &monitoringpb.TimeInterval{
EndTime: timestamppb.New(time.Now()),
},
Value: &monitoringpb.TypedValue{
Value: &monitoringpb.TypedValue_Int64Value{Int64Value: metricValue},
},
}
// Write time series data.
projectName := fmt.Sprintf("projects/%s", resourceLabels["project_id"])
request := &monitoringpb.CreateTimeSeriesRequest{
Name: projectName,
TimeSeries: []*monitoringpb.TimeSeries{
{
Metric: &metric.Metric{
Type: "custom.googleapis.com/" + metricName,
Labels: metricLabels,
},
Resource: &monitoredres.MonitoredResource{
Type: monitoredResource,
Labels: resourceLabels,
},
Points: []*monitoringpb.Point{
dataPoint,
},
},
},
}
err := client.CreateTimeSeries(context.Background(), request)
return err
}