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))
}
}