in exporter/collector/metrics.go [238:276]
func (me *MetricsExporter) Start(ctx context.Context, _ component.Host) error {
me.shutdownC = make(chan struct{})
if me.cfg.MetricConfig.CumulativeNormalization {
me.mapper.normalizer = normalization.NewStandardNormalizer(me.shutdownC, me.obs.log)
}
clientOpts, err := generateClientOptions(ctx, &me.cfg.MetricConfig.ClientConfig, &me.cfg, monitoring.DefaultAuthScopes(), me.obs.meterProvider)
if err != nil {
return err
}
client, err := monitoring.NewMetricClient(ctx, clientOpts...)
if err != nil {
return err
}
if me.cfg.MetricConfig.ClientConfig.Compression == gzip.Name {
client.CallOptions.CreateMetricDescriptor = append(client.CallOptions.CreateMetricDescriptor,
gax.WithGRPCOptions(grpc.UseCompressor(gzip.Name)))
client.CallOptions.CreateTimeSeries = append(client.CallOptions.CreateTimeSeries,
gax.WithGRPCOptions(grpc.UseCompressor(gzip.Name)))
client.CallOptions.CreateServiceTimeSeries = append(client.CallOptions.CreateServiceTimeSeries,
gax.WithGRPCOptions(grpc.UseCompressor(gzip.Name)))
}
me.client = client
if me.cfg.MetricConfig.WALConfig != nil {
_, _, err = me.setupWAL()
if err != nil {
return err
}
// start WAL popper routine
me.goroutines.Add(1)
go me.runWALReadAndExportLoop(ctx)
}
// Fire up the metric descriptor exporter.
me.goroutines.Add(1)
go me.exportMetricDescriptorRunner()
return nil
}