func()

in opentelemetry_collector/receiver/nginxreceiver/nginx_stats_collector.go [201:233]


func (collector *NginxStatsCollector) scrapeAndExport() {
	metrics := make([]*metricspb.Metric, 0, 3)

	stats, err := collector.scrapeNginxStats()
	if err != nil {
		collector.logger.Error("Could not read nginx stats", zap.Error(err))
	} else {
		bucketOptions := metricgenerator.FormatBucketOptions(stats.LatencyBucketBounds)

		if err = stats.RequestLatency.checkConsistency(stats.LatencyBucketBounds); err != nil {
			collector.logger.Error("Invalid value received for RequestLatency", zap.Error(err))
		} else {
			metrics = collector.appendDistributionMetric(&stats.RequestLatency, bucketOptions, metrics, requestLatencyMetric)
		}
		if err = stats.WebsocketLatency.checkConsistency(stats.LatencyBucketBounds); err != nil {
			collector.logger.Error("Invalid value received for WebsocketLatency", zap.Error(err))
		} else {
			metrics = collector.appendDistributionMetric(&stats.WebsocketLatency, bucketOptions, metrics, websocketLatencyMetric)
		}

		if err = stats.UpstreamLatency.checkConsistency(stats.LatencyBucketBounds); err != nil {
			collector.logger.Error("Invalid value received for UpstreamLatency", zap.Error(err))
		} else {
			metrics = collector.appendDistributionMetric(&stats.UpstreamLatency, bucketOptions, metrics, upstreamLatencyMetric)
		}
	}

	ctx := context.Background()
	err = collector.consumer.ConsumeMetrics(ctx, opencensus.OCToMetrics(nil, nil, metrics))
	if err != nil {
		collector.logger.Error("Error sending nginx metrics", zap.Error(err))
	}
}