func()

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
}