in internal/satellite/telemetry/metricservice/server.go [97:124]
func (s *Server) sendMetrics() error {
if s.reportStream == nil {
if err := s.openBatchStream(); err != nil {
return err
}
}
appender := &MetricsAppender{
time: time.Now().UnixNano() / int64(time.Millisecond),
metrics: make([]*v3.MeterData, 0),
prefix: s.MetricPrefix,
}
for _, metric := range s.metrics {
metric.WriteMetric(appender)
}
if len(appender.metrics) == 0 {
return nil
}
appender.metrics[0].Service = s.service
appender.metrics[0].ServiceInstance = s.instance
if err := s.reportStream.Send(&v3.MeterDataCollection{MeterData: appender.metrics}); err != nil {
if openErr := s.openBatchStream(); openErr != nil {
log.Logger.Warnf("detect send message error and reopen stream failure: %v", openErr)
}
}
return nil
}