in pkg/monitoring/monitoring.go [107:161]
func (c *Client) createToolchainConfigsMetrics(ctx context.Context) error {
metrics := []struct {
name string
metricType string
description string
}{
{
name: "RBE Toolchain Configs Generation",
metricType: mtypeToolchainConfigsGenRuns,
description: "Count number of times RBE Bazel C++/Java toolchain config generation completed",
},
{
name: "RBE Toolchain Configs Upload",
metricType: mtypeToolchainConfigsUploadRuns,
description: "Count number of times RBE Bazel C++/Java toolchain config upload completed",
},
{
name: "RBE Toolchain Configs E2E Test",
metricType: mtypeToolchainConfigsTestRuns,
description: "Count number of times RBE Bazel C++/Java toolchain config e2e test completed",
},
}
for _, m := range metrics {
md := &metric.MetricDescriptor{
Name: m.name,
Type: m.metricType,
Labels: []*label.LabelDescriptor{
{
Key: "docker_image",
ValueType: label.LabelDescriptor_STRING,
Description: "Name of the OS of the toolchain container image",
},
{
Key: "success",
ValueType: label.LabelDescriptor_BOOL,
Description: "Indicates of configs generation, upload & testing was successful",
},
},
MetricKind: metric.MetricDescriptor_CUMULATIVE,
ValueType: metric.MetricDescriptor_INT64,
Unit: "1",
Description: m.description,
DisplayName: m.name,
}
req := &monitoringpb.CreateMetricDescriptorRequest{
Name: "projects/" + c.projectID,
MetricDescriptor: md,
}
if _, err := c.mc.CreateMetricDescriptor(ctx, req); err != nil {
return fmt.Errorf("unable to create Google Cloud Monitoring Metric for %s: %v", m.name, err)
}
}
return nil
}