diff --git a/internal/collector/nginxossreceiver/documentation.md b/internal/collector/nginxossreceiver/documentation.md index 7cbfe0cbd..5aff6adf4 100644 --- a/internal/collector/nginxossreceiver/documentation.md +++ b/internal/collector/nginxossreceiver/documentation.md @@ -12,13 +12,13 @@ metrics: enabled: false ``` -### nginx.http.connections +### nginx.http.connection.count -The total number of connections. +The current number of connections. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| connections | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | +| ---- | ----------- | ---------- | +| connections | Gauge | Int | #### Attributes @@ -26,13 +26,13 @@ The total number of connections. | ---- | ----------- | ------ | | nginx.connections.outcome | The outcome of the connection. | Str: ``ACCEPTED``, ``ACTIVE``, ``HANDLED``, ``READING``, ``WRITING``, ``WAITING`` | -### nginx.http.connections.count +### nginx.http.connections -The current number of connections. +The total number of connections. -| Unit | Metric Type | Value Type | -| ---- | ----------- | ---------- | -| connections | Gauge | Int | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | +| ---- | ----------- | ---------- | ----------------------- | --------- | +| connections | Sum | Int | Cumulative | true | #### Attributes diff --git a/internal/collector/nginxossreceiver/internal/metadata/generated_config.go b/internal/collector/nginxossreceiver/internal/metadata/generated_config.go index c9d2b5cd0..3b9ed720a 100644 --- a/internal/collector/nginxossreceiver/internal/metadata/generated_config.go +++ b/internal/collector/nginxossreceiver/internal/metadata/generated_config.go @@ -28,18 +28,18 @@ func (ms *MetricConfig) Unmarshal(parser *confmap.Conf) error { // MetricsConfig provides config for nginx metrics. type MetricsConfig struct { - NginxHTTPConnections MetricConfig `mapstructure:"nginx.http.connections"` - NginxHTTPConnectionsCount MetricConfig `mapstructure:"nginx.http.connections.count"` - NginxHTTPRequests MetricConfig `mapstructure:"nginx.http.requests"` - NginxHTTPResponseStatus MetricConfig `mapstructure:"nginx.http.response.status"` + NginxHTTPConnectionCount MetricConfig `mapstructure:"nginx.http.connection.count"` + NginxHTTPConnections MetricConfig `mapstructure:"nginx.http.connections"` + NginxHTTPRequests MetricConfig `mapstructure:"nginx.http.requests"` + NginxHTTPResponseStatus MetricConfig `mapstructure:"nginx.http.response.status"` } func DefaultMetricsConfig() MetricsConfig { return MetricsConfig{ - NginxHTTPConnections: MetricConfig{ + NginxHTTPConnectionCount: MetricConfig{ Enabled: true, }, - NginxHTTPConnectionsCount: MetricConfig{ + NginxHTTPConnections: MetricConfig{ Enabled: true, }, NginxHTTPRequests: MetricConfig{ diff --git a/internal/collector/nginxossreceiver/internal/metadata/generated_config_test.go b/internal/collector/nginxossreceiver/internal/metadata/generated_config_test.go index cd1c3f0fa..060900463 100644 --- a/internal/collector/nginxossreceiver/internal/metadata/generated_config_test.go +++ b/internal/collector/nginxossreceiver/internal/metadata/generated_config_test.go @@ -25,10 +25,10 @@ func TestMetricsBuilderConfig(t *testing.T) { name: "all_set", want: MetricsBuilderConfig{ Metrics: MetricsConfig{ - NginxHTTPConnections: MetricConfig{Enabled: true}, - NginxHTTPConnectionsCount: MetricConfig{Enabled: true}, - NginxHTTPRequests: MetricConfig{Enabled: true}, - NginxHTTPResponseStatus: MetricConfig{Enabled: true}, + NginxHTTPConnectionCount: MetricConfig{Enabled: true}, + NginxHTTPConnections: MetricConfig{Enabled: true}, + NginxHTTPRequests: MetricConfig{Enabled: true}, + NginxHTTPResponseStatus: MetricConfig{Enabled: true}, }, ResourceAttributes: ResourceAttributesConfig{ InstanceID: ResourceAttributeConfig{Enabled: true}, @@ -40,10 +40,10 @@ func TestMetricsBuilderConfig(t *testing.T) { name: "none_set", want: MetricsBuilderConfig{ Metrics: MetricsConfig{ - NginxHTTPConnections: MetricConfig{Enabled: false}, - NginxHTTPConnectionsCount: MetricConfig{Enabled: false}, - NginxHTTPRequests: MetricConfig{Enabled: false}, - NginxHTTPResponseStatus: MetricConfig{Enabled: false}, + NginxHTTPConnectionCount: MetricConfig{Enabled: false}, + NginxHTTPConnections: MetricConfig{Enabled: false}, + NginxHTTPRequests: MetricConfig{Enabled: false}, + NginxHTTPResponseStatus: MetricConfig{Enabled: false}, }, ResourceAttributes: ResourceAttributesConfig{ InstanceID: ResourceAttributeConfig{Enabled: false}, diff --git a/internal/collector/nginxossreceiver/internal/metadata/generated_metrics.go b/internal/collector/nginxossreceiver/internal/metadata/generated_metrics.go index 74377a40c..2b4447878 100644 --- a/internal/collector/nginxossreceiver/internal/metadata/generated_metrics.go +++ b/internal/collector/nginxossreceiver/internal/metadata/generated_metrics.go @@ -92,28 +92,26 @@ var MapAttributeNginxStatusRange = map[string]AttributeNginxStatusRange{ "5xx": AttributeNginxStatusRange5xx, } -type metricNginxHTTPConnections struct { +type metricNginxHTTPConnectionCount struct { data pmetric.Metric // data buffer for generated metric. config MetricConfig // metric config provided by user. capacity int // max observed number of data points added to the metric. } -// init fills nginx.http.connections metric with initial data. -func (m *metricNginxHTTPConnections) init() { - m.data.SetName("nginx.http.connections") - m.data.SetDescription("The total number of connections.") +// init fills nginx.http.connection.count metric with initial data. +func (m *metricNginxHTTPConnectionCount) init() { + m.data.SetName("nginx.http.connection.count") + m.data.SetDescription("The current number of connections.") m.data.SetUnit("connections") - m.data.SetEmptySum() - m.data.Sum().SetIsMonotonic(true) - m.data.Sum().SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) - m.data.Sum().DataPoints().EnsureCapacity(m.capacity) + m.data.SetEmptyGauge() + m.data.Gauge().DataPoints().EnsureCapacity(m.capacity) } -func (m *metricNginxHTTPConnections) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxConnectionsOutcomeAttributeValue string) { +func (m *metricNginxHTTPConnectionCount) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxConnectionsOutcomeAttributeValue string) { if !m.config.Enabled { return } - dp := m.data.Sum().DataPoints().AppendEmpty() + dp := m.data.Gauge().DataPoints().AppendEmpty() dp.SetStartTimestamp(start) dp.SetTimestamp(ts) dp.SetIntValue(val) @@ -121,23 +119,23 @@ func (m *metricNginxHTTPConnections) recordDataPoint(start pcommon.Timestamp, ts } // updateCapacity saves max length of data point slices that will be used for the slice capacity. -func (m *metricNginxHTTPConnections) updateCapacity() { - if m.data.Sum().DataPoints().Len() > m.capacity { - m.capacity = m.data.Sum().DataPoints().Len() +func (m *metricNginxHTTPConnectionCount) updateCapacity() { + if m.data.Gauge().DataPoints().Len() > m.capacity { + m.capacity = m.data.Gauge().DataPoints().Len() } } // emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. -func (m *metricNginxHTTPConnections) emit(metrics pmetric.MetricSlice) { - if m.config.Enabled && m.data.Sum().DataPoints().Len() > 0 { +func (m *metricNginxHTTPConnectionCount) emit(metrics pmetric.MetricSlice) { + if m.config.Enabled && m.data.Gauge().DataPoints().Len() > 0 { m.updateCapacity() m.data.MoveTo(metrics.AppendEmpty()) m.init() } } -func newMetricNginxHTTPConnections(cfg MetricConfig) metricNginxHTTPConnections { - m := metricNginxHTTPConnections{config: cfg} +func newMetricNginxHTTPConnectionCount(cfg MetricConfig) metricNginxHTTPConnectionCount { + m := metricNginxHTTPConnectionCount{config: cfg} if cfg.Enabled { m.data = pmetric.NewMetric() m.init() @@ -145,26 +143,28 @@ func newMetricNginxHTTPConnections(cfg MetricConfig) metricNginxHTTPConnections return m } -type metricNginxHTTPConnectionsCount struct { +type metricNginxHTTPConnections struct { data pmetric.Metric // data buffer for generated metric. config MetricConfig // metric config provided by user. capacity int // max observed number of data points added to the metric. } -// init fills nginx.http.connections.count metric with initial data. -func (m *metricNginxHTTPConnectionsCount) init() { - m.data.SetName("nginx.http.connections.count") - m.data.SetDescription("The current number of connections.") +// init fills nginx.http.connections metric with initial data. +func (m *metricNginxHTTPConnections) init() { + m.data.SetName("nginx.http.connections") + m.data.SetDescription("The total number of connections.") m.data.SetUnit("connections") - m.data.SetEmptyGauge() - m.data.Gauge().DataPoints().EnsureCapacity(m.capacity) + m.data.SetEmptySum() + m.data.Sum().SetIsMonotonic(true) + m.data.Sum().SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) + m.data.Sum().DataPoints().EnsureCapacity(m.capacity) } -func (m *metricNginxHTTPConnectionsCount) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxConnectionsOutcomeAttributeValue string) { +func (m *metricNginxHTTPConnections) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxConnectionsOutcomeAttributeValue string) { if !m.config.Enabled { return } - dp := m.data.Gauge().DataPoints().AppendEmpty() + dp := m.data.Sum().DataPoints().AppendEmpty() dp.SetStartTimestamp(start) dp.SetTimestamp(ts) dp.SetIntValue(val) @@ -172,23 +172,23 @@ func (m *metricNginxHTTPConnectionsCount) recordDataPoint(start pcommon.Timestam } // updateCapacity saves max length of data point slices that will be used for the slice capacity. -func (m *metricNginxHTTPConnectionsCount) updateCapacity() { - if m.data.Gauge().DataPoints().Len() > m.capacity { - m.capacity = m.data.Gauge().DataPoints().Len() +func (m *metricNginxHTTPConnections) updateCapacity() { + if m.data.Sum().DataPoints().Len() > m.capacity { + m.capacity = m.data.Sum().DataPoints().Len() } } // emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. -func (m *metricNginxHTTPConnectionsCount) emit(metrics pmetric.MetricSlice) { - if m.config.Enabled && m.data.Gauge().DataPoints().Len() > 0 { +func (m *metricNginxHTTPConnections) emit(metrics pmetric.MetricSlice) { + if m.config.Enabled && m.data.Sum().DataPoints().Len() > 0 { m.updateCapacity() m.data.MoveTo(metrics.AppendEmpty()) m.init() } } -func newMetricNginxHTTPConnectionsCount(cfg MetricConfig) metricNginxHTTPConnectionsCount { - m := metricNginxHTTPConnectionsCount{config: cfg} +func newMetricNginxHTTPConnections(cfg MetricConfig) metricNginxHTTPConnections { + m := metricNginxHTTPConnections{config: cfg} if cfg.Enabled { m.data = pmetric.NewMetric() m.init() @@ -303,17 +303,17 @@ func newMetricNginxHTTPResponseStatus(cfg MetricConfig) metricNginxHTTPResponseS // MetricsBuilder provides an interface for scrapers to report metrics while taking care of all the transformations // required to produce metric representation defined in metadata and user config. type MetricsBuilder struct { - config MetricsBuilderConfig // config of the metrics builder. - startTime pcommon.Timestamp // start time that will be applied to all recorded data points. - metricsCapacity int // maximum observed number of metrics per resource. - metricsBuffer pmetric.Metrics // accumulates metrics data before emitting. - buildInfo component.BuildInfo // contains version information. - resourceAttributeIncludeFilter map[string]filter.Filter - resourceAttributeExcludeFilter map[string]filter.Filter - metricNginxHTTPConnections metricNginxHTTPConnections - metricNginxHTTPConnectionsCount metricNginxHTTPConnectionsCount - metricNginxHTTPRequests metricNginxHTTPRequests - metricNginxHTTPResponseStatus metricNginxHTTPResponseStatus + config MetricsBuilderConfig // config of the metrics builder. + startTime pcommon.Timestamp // start time that will be applied to all recorded data points. + metricsCapacity int // maximum observed number of metrics per resource. + metricsBuffer pmetric.Metrics // accumulates metrics data before emitting. + buildInfo component.BuildInfo // contains version information. + resourceAttributeIncludeFilter map[string]filter.Filter + resourceAttributeExcludeFilter map[string]filter.Filter + metricNginxHTTPConnectionCount metricNginxHTTPConnectionCount + metricNginxHTTPConnections metricNginxHTTPConnections + metricNginxHTTPRequests metricNginxHTTPRequests + metricNginxHTTPResponseStatus metricNginxHTTPResponseStatus } // MetricBuilderOption applies changes to default metrics builder. @@ -336,16 +336,16 @@ func WithStartTime(startTime pcommon.Timestamp) MetricBuilderOption { func NewMetricsBuilder(mbc MetricsBuilderConfig, settings receiver.Settings, options ...MetricBuilderOption) *MetricsBuilder { mb := &MetricsBuilder{ - config: mbc, - startTime: pcommon.NewTimestampFromTime(time.Now()), - metricsBuffer: pmetric.NewMetrics(), - buildInfo: settings.BuildInfo, - metricNginxHTTPConnections: newMetricNginxHTTPConnections(mbc.Metrics.NginxHTTPConnections), - metricNginxHTTPConnectionsCount: newMetricNginxHTTPConnectionsCount(mbc.Metrics.NginxHTTPConnectionsCount), - metricNginxHTTPRequests: newMetricNginxHTTPRequests(mbc.Metrics.NginxHTTPRequests), - metricNginxHTTPResponseStatus: newMetricNginxHTTPResponseStatus(mbc.Metrics.NginxHTTPResponseStatus), - resourceAttributeIncludeFilter: make(map[string]filter.Filter), - resourceAttributeExcludeFilter: make(map[string]filter.Filter), + config: mbc, + startTime: pcommon.NewTimestampFromTime(time.Now()), + metricsBuffer: pmetric.NewMetrics(), + buildInfo: settings.BuildInfo, + metricNginxHTTPConnectionCount: newMetricNginxHTTPConnectionCount(mbc.Metrics.NginxHTTPConnectionCount), + metricNginxHTTPConnections: newMetricNginxHTTPConnections(mbc.Metrics.NginxHTTPConnections), + metricNginxHTTPRequests: newMetricNginxHTTPRequests(mbc.Metrics.NginxHTTPRequests), + metricNginxHTTPResponseStatus: newMetricNginxHTTPResponseStatus(mbc.Metrics.NginxHTTPResponseStatus), + resourceAttributeIncludeFilter: make(map[string]filter.Filter), + resourceAttributeExcludeFilter: make(map[string]filter.Filter), } if mbc.ResourceAttributes.InstanceID.MetricsInclude != nil { mb.resourceAttributeIncludeFilter["instance.id"] = filter.CreateFilter(mbc.ResourceAttributes.InstanceID.MetricsInclude) @@ -428,8 +428,8 @@ func (mb *MetricsBuilder) EmitForResource(options ...ResourceMetricsOption) { ils.Scope().SetName("otelcol/nginxreceiver") ils.Scope().SetVersion(mb.buildInfo.Version) ils.Metrics().EnsureCapacity(mb.metricsCapacity) + mb.metricNginxHTTPConnectionCount.emit(ils.Metrics()) mb.metricNginxHTTPConnections.emit(ils.Metrics()) - mb.metricNginxHTTPConnectionsCount.emit(ils.Metrics()) mb.metricNginxHTTPRequests.emit(ils.Metrics()) mb.metricNginxHTTPResponseStatus.emit(ils.Metrics()) @@ -463,16 +463,16 @@ func (mb *MetricsBuilder) Emit(options ...ResourceMetricsOption) pmetric.Metrics return metrics } +// RecordNginxHTTPConnectionCountDataPoint adds a data point to nginx.http.connection.count metric. +func (mb *MetricsBuilder) RecordNginxHTTPConnectionCountDataPoint(ts pcommon.Timestamp, val int64, nginxConnectionsOutcomeAttributeValue AttributeNginxConnectionsOutcome) { + mb.metricNginxHTTPConnectionCount.recordDataPoint(mb.startTime, ts, val, nginxConnectionsOutcomeAttributeValue.String()) +} + // RecordNginxHTTPConnectionsDataPoint adds a data point to nginx.http.connections metric. func (mb *MetricsBuilder) RecordNginxHTTPConnectionsDataPoint(ts pcommon.Timestamp, val int64, nginxConnectionsOutcomeAttributeValue AttributeNginxConnectionsOutcome) { mb.metricNginxHTTPConnections.recordDataPoint(mb.startTime, ts, val, nginxConnectionsOutcomeAttributeValue.String()) } -// RecordNginxHTTPConnectionsCountDataPoint adds a data point to nginx.http.connections.count metric. -func (mb *MetricsBuilder) RecordNginxHTTPConnectionsCountDataPoint(ts pcommon.Timestamp, val int64, nginxConnectionsOutcomeAttributeValue AttributeNginxConnectionsOutcome) { - mb.metricNginxHTTPConnectionsCount.recordDataPoint(mb.startTime, ts, val, nginxConnectionsOutcomeAttributeValue.String()) -} - // RecordNginxHTTPRequestsDataPoint adds a data point to nginx.http.requests metric. func (mb *MetricsBuilder) RecordNginxHTTPRequestsDataPoint(ts pcommon.Timestamp, val int64) { mb.metricNginxHTTPRequests.recordDataPoint(mb.startTime, ts, val) diff --git a/internal/collector/nginxossreceiver/internal/metadata/generated_metrics_test.go b/internal/collector/nginxossreceiver/internal/metadata/generated_metrics_test.go index c97d39ec7..45360330f 100644 --- a/internal/collector/nginxossreceiver/internal/metadata/generated_metrics_test.go +++ b/internal/collector/nginxossreceiver/internal/metadata/generated_metrics_test.go @@ -70,11 +70,11 @@ func TestMetricsBuilder(t *testing.T) { defaultMetricsCount++ allMetricsCount++ - mb.RecordNginxHTTPConnectionsDataPoint(ts, 1, AttributeNginxConnectionsOutcomeACCEPTED) + mb.RecordNginxHTTPConnectionCountDataPoint(ts, 1, AttributeNginxConnectionsOutcomeACCEPTED) defaultMetricsCount++ allMetricsCount++ - mb.RecordNginxHTTPConnectionsCountDataPoint(ts, 1, AttributeNginxConnectionsOutcomeACCEPTED) + mb.RecordNginxHTTPConnectionsDataPoint(ts, 1, AttributeNginxConnectionsOutcomeACCEPTED) defaultMetricsCount++ allMetricsCount++ @@ -109,6 +109,21 @@ func TestMetricsBuilder(t *testing.T) { validatedMetrics := make(map[string]bool) for i := 0; i < ms.Len(); i++ { switch ms.At(i).Name() { + case "nginx.http.connection.count": + assert.False(t, validatedMetrics["nginx.http.connection.count"], "Found a duplicate in the metrics slice: nginx.http.connection.count") + validatedMetrics["nginx.http.connection.count"] = true + assert.Equal(t, pmetric.MetricTypeGauge, ms.At(i).Type()) + assert.Equal(t, 1, ms.At(i).Gauge().DataPoints().Len()) + assert.Equal(t, "The current number of connections.", ms.At(i).Description()) + assert.Equal(t, "connections", ms.At(i).Unit()) + dp := ms.At(i).Gauge().DataPoints().At(0) + assert.Equal(t, start, dp.StartTimestamp()) + assert.Equal(t, ts, dp.Timestamp()) + assert.Equal(t, pmetric.NumberDataPointValueTypeInt, dp.ValueType()) + assert.Equal(t, int64(1), dp.IntValue()) + attrVal, ok := dp.Attributes().Get("nginx.connections.outcome") + assert.True(t, ok) + assert.EqualValues(t, "ACCEPTED", attrVal.Str()) case "nginx.http.connections": assert.False(t, validatedMetrics["nginx.http.connections"], "Found a duplicate in the metrics slice: nginx.http.connections") validatedMetrics["nginx.http.connections"] = true @@ -126,21 +141,6 @@ func TestMetricsBuilder(t *testing.T) { attrVal, ok := dp.Attributes().Get("nginx.connections.outcome") assert.True(t, ok) assert.EqualValues(t, "ACCEPTED", attrVal.Str()) - case "nginx.http.connections.count": - assert.False(t, validatedMetrics["nginx.http.connections.count"], "Found a duplicate in the metrics slice: nginx.http.connections.count") - validatedMetrics["nginx.http.connections.count"] = true - assert.Equal(t, pmetric.MetricTypeGauge, ms.At(i).Type()) - assert.Equal(t, 1, ms.At(i).Gauge().DataPoints().Len()) - assert.Equal(t, "The current number of connections.", ms.At(i).Description()) - assert.Equal(t, "connections", ms.At(i).Unit()) - dp := ms.At(i).Gauge().DataPoints().At(0) - assert.Equal(t, start, dp.StartTimestamp()) - assert.Equal(t, ts, dp.Timestamp()) - assert.Equal(t, pmetric.NumberDataPointValueTypeInt, dp.ValueType()) - assert.Equal(t, int64(1), dp.IntValue()) - attrVal, ok := dp.Attributes().Get("nginx.connections.outcome") - assert.True(t, ok) - assert.EqualValues(t, "ACCEPTED", attrVal.Str()) case "nginx.http.requests": assert.False(t, validatedMetrics["nginx.http.requests"], "Found a duplicate in the metrics slice: nginx.http.requests") validatedMetrics["nginx.http.requests"] = true diff --git a/internal/collector/nginxossreceiver/internal/metadata/testdata/config.yaml b/internal/collector/nginxossreceiver/internal/metadata/testdata/config.yaml index 40fddcc0c..166168e56 100644 --- a/internal/collector/nginxossreceiver/internal/metadata/testdata/config.yaml +++ b/internal/collector/nginxossreceiver/internal/metadata/testdata/config.yaml @@ -1,9 +1,9 @@ default: all_set: metrics: - nginx.http.connections: + nginx.http.connection.count: enabled: true - nginx.http.connections.count: + nginx.http.connections: enabled: true nginx.http.requests: enabled: true @@ -16,9 +16,9 @@ all_set: enabled: true none_set: metrics: - nginx.http.connections: + nginx.http.connection.count: enabled: false - nginx.http.connections.count: + nginx.http.connections: enabled: false nginx.http.requests: enabled: false diff --git a/internal/collector/nginxossreceiver/internal/scraper/stubstatus/stub_status_scraper.go b/internal/collector/nginxossreceiver/internal/scraper/stubstatus/stub_status_scraper.go index 38779570b..2cf0f2d0c 100644 --- a/internal/collector/nginxossreceiver/internal/scraper/stubstatus/stub_status_scraper.go +++ b/internal/collector/nginxossreceiver/internal/scraper/stubstatus/stub_status_scraper.go @@ -106,22 +106,22 @@ func (s *NginxStubStatusScraper) Scrape(context.Context) (pmetric.Metrics, error metadata.AttributeNginxConnectionsOutcomeHANDLED, ) - s.mb.RecordNginxHTTPConnectionsCountDataPoint( + s.mb.RecordNginxHTTPConnectionCountDataPoint( now, stats.Connections.Active, metadata.AttributeNginxConnectionsOutcomeACTIVE, ) - s.mb.RecordNginxHTTPConnectionsCountDataPoint( + s.mb.RecordNginxHTTPConnectionCountDataPoint( now, stats.Connections.Reading, metadata.AttributeNginxConnectionsOutcomeREADING, ) - s.mb.RecordNginxHTTPConnectionsCountDataPoint( + s.mb.RecordNginxHTTPConnectionCountDataPoint( now, stats.Connections.Writing, metadata.AttributeNginxConnectionsOutcomeWRITING, ) - s.mb.RecordNginxHTTPConnectionsCountDataPoint( + s.mb.RecordNginxHTTPConnectionCountDataPoint( now, stats.Connections.Waiting, metadata.AttributeNginxConnectionsOutcomeWAITING, diff --git a/internal/collector/nginxossreceiver/internal/scraper/stubstatus/testdata/expected.yaml b/internal/collector/nginxossreceiver/internal/scraper/stubstatus/testdata/expected.yaml index ef46a6ccd..16597fed3 100644 --- a/internal/collector/nginxossreceiver/internal/scraper/stubstatus/testdata/expected.yaml +++ b/internal/collector/nginxossreceiver/internal/scraper/stubstatus/testdata/expected.yaml @@ -24,7 +24,7 @@ resourceMetrics: isMonotonic: true unit: connections - description: The current number of connections. - name: nginx.http.connections.count + name: nginx.http.connection.count gauge: aggregationTemporality: 2 dataPoints: diff --git a/internal/collector/nginxossreceiver/metadata.yaml b/internal/collector/nginxossreceiver/metadata.yaml index 4a4d70bfc..2c385aec7 100644 --- a/internal/collector/nginxossreceiver/metadata.yaml +++ b/internal/collector/nginxossreceiver/metadata.yaml @@ -7,7 +7,7 @@ status: beta: [metrics] distributions: [contrib] codeowners: - active: [olli-holmala, oliveromahony, apgralG, dhurley, craigell, sean-breen] + active: [apgralG, dhurley, craigell, sean-breen, Rashmiti, CVanF5] resource_attributes: instance.id: @@ -59,7 +59,7 @@ metrics: unit: "connections" attributes: - nginx.connections.outcome - nginx.http.connections.count: + nginx.http.connection.count: enabled: true description: The current number of connections. gauge: diff --git a/internal/collector/nginxplusreceiver/documentation.md b/internal/collector/nginxplusreceiver/documentation.md index f60bde97f..147892184 100644 --- a/internal/collector/nginxplusreceiver/documentation.md +++ b/internal/collector/nginxplusreceiver/documentation.md @@ -12,7 +12,7 @@ metrics: enabled: false ``` -### nginx.cache.bytes +### nginx.cache.bytes_read The total number of bytes read from the cache or proxied server. @@ -78,13 +78,13 @@ The total number of NGINX config reloads. | ---- | ----------- | ---------- | ----------------------- | --------- | | reloads | Sum | Int | Cumulative | true | -### nginx.http.connections +### nginx.http.connection.count -The total number of connections. +The current number of connections. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| connections | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | +| ---- | ----------- | ---------- | +| connections | Gauge | Int | #### Attributes @@ -92,13 +92,13 @@ The total number of connections. | ---- | ----------- | ------ | | nginx.connections.outcome | The outcome of the connection. | Str: ``ACCEPTED``, ``ACTIVE``, ``DROPPED``, ``IDLE`` | -### nginx.http.connections.count +### nginx.http.connections -The current number of connections. +The total number of connections. -| Unit | Metric Type | Value Type | -| ---- | ----------- | ---------- | -| connections | Gauge | Int | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | +| ---- | ----------- | ---------- | ----------------------- | --------- | +| connections | Sum | Int | Cumulative | true | #### Attributes @@ -136,34 +136,42 @@ The total number of requests to an endpoint with a limit_req directive. | nginx.limit_req.outcome | The outcome for attempting to establish a connection to an endpoint that has a limit_req directive configured. | Str: ``PASSED``, ``REJECTED``, ``REJECTED_DRY_RUN``, ``DELAYED``, ``DELAYED_DRY_RUN`` | | nginx.zone.name | The name of the shared memory zone. | Any Str | -### nginx.http.request.byte.io +### nginx.http.request.count -The total number of HTTP byte IO. +The current number of client requests received from clients. + +| Unit | Metric Type | Value Type | +| ---- | ----------- | ---------- | +| requests | Gauge | Int | + +### nginx.http.request.discarded + +The total number of requests completed without sending a response. | Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | | ---- | ----------- | ---------- | ----------------------- | --------- | -| bytes | Sum | Int | Cumulative | true | +| requests | Sum | Int | Cumulative | true | #### Attributes | Name | Description | Values | | ---- | ----------- | ------ | -| nginx.byte.io.direction | The direction of byte traffic. | Str: ``RX``, ``TX`` | | nginx.zone.name | The name of the shared memory zone. | Any Str | | nginx.zone.type | The type of shared memory zone, depending on what block it was defined in the NGINX configuration. | Str: ``SERVER``, ``LOCATION`` | -### nginx.http.request.discarded +### nginx.http.request.io -The total number of requests completed without sending a response. +The total number of HTTP byte IO. | Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | | ---- | ----------- | ---------- | ----------------------- | --------- | -| requests | Sum | Int | Cumulative | true | +| bytes | Sum | Int | Cumulative | true | #### Attributes | Name | Description | Values | | ---- | ----------- | ------ | +| nginx.io.direction | The direction of byte traffic. | Str: ``receive``, ``transmit`` | | nginx.zone.name | The name of the shared memory zone. | Any Str | | nginx.zone.type | The type of shared memory zone, depending on what block it was defined in the NGINX configuration. | Str: ``SERVER``, ``LOCATION`` | @@ -197,14 +205,6 @@ The total number of client requests received from clients. | nginx.zone.name | The name of the shared memory zone. | Any Str | | nginx.zone.type | The type of shared memory zone, depending on what block it was defined in the NGINX configuration. | Str: ``SERVER``, ``LOCATION`` | -### nginx.http.requests.count - -The current number of client requests received from clients. - -| Unit | Metric Type | Value Type | -| ---- | ----------- | ---------- | -| requests | Gauge | Int | - ### nginx.http.response.status The number of responses, grouped by status code range. @@ -223,7 +223,7 @@ The number of responses, grouped by status code range. ### nginx.http.responses -The total number of client requests received from clients. +The total number of HTTP responses sent to clients. | Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | | ---- | ----------- | ---------- | ----------------------- | --------- | @@ -251,25 +251,7 @@ The current number of idle keepalive connections per HTTP upstream. | nginx.zone.name | The name of the shared memory zone. | Any Str | | nginx.upstream.name | The name of the upstream block. | Any Str | -### nginx.http.upstream.peer.byte.io - -The total number of byte IO per HTTP upstream peer. - -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| bytes | Sum | Int | Cumulative | true | - -#### Attributes - -| Name | Description | Values | -| ---- | ----------- | ------ | -| nginx.byte.io.direction | The direction of byte traffic. | Str: ``RX``, ``TX`` | -| nginx.zone.name | The name of the shared memory zone. | Any Str | -| nginx.upstream.name | The name of the upstream block. | Any Str | -| nginx.peer.address | The address of the peer. | Any Str | -| nginx.peer.name | The name of the peer. | Any Str | - -### nginx.http.upstream.peer.connections.count +### nginx.http.upstream.peer.connection.count The average number of active connections per HTTP upstream peer. @@ -306,9 +288,9 @@ The current count of peers on the HTTP upstream grouped by state. The total number of unsuccessful attempts to communicate with the HTTP upstream peer. -| Unit | Metric Type | Value Type | -| ---- | ----------- | ---------- | -| attempts | Gauge | Int | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | +| ---- | ----------- | ---------- | ----------------------- | --------- | +| attempts | Sum | Int | Cumulative | true | #### Attributes @@ -354,6 +336,24 @@ The total number of health check requests made to a HTTP upstream peer. | nginx.peer.address | The address of the peer. | Any Str | | nginx.peer.name | The name of the peer. | Any Str | +### nginx.http.upstream.peer.io + +The total number of byte IO per HTTP upstream peer. + +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | +| ---- | ----------- | ---------- | ----------------------- | --------- | +| bytes | Sum | Int | Cumulative | true | + +#### Attributes + +| Name | Description | Values | +| ---- | ----------- | ------ | +| nginx.io.direction | The direction of byte traffic. | Str: ``receive``, ``transmit`` | +| nginx.zone.name | The name of the shared memory zone. | Any Str | +| nginx.upstream.name | The name of the upstream block. | Any Str | +| nginx.peer.address | The address of the peer. | Any Str | +| nginx.peer.name | The name of the peer. | Any Str | + ### nginx.http.upstream.peer.requests The total number of client requests forwarded to the HTTP upstream peer. @@ -632,22 +632,7 @@ The total number of SSL handshakes. | nginx.ssl.status | The status of a SSL handshake. | Str: ``FAILED``, ``REUSE`` | | nginx.ssl.handshake.reason | The reason for a SSL handshake failure. | Str: ``NO_COMMON_PROTOCOL``, ``NO_COMMON_CIPHER``, ``TIMEOUT``, ``CERT_REJECTED`` | -### nginx.stream.byte.io - -The total number of Stream byte IO. - -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| bytes | Sum | Int | Cumulative | true | - -#### Attributes - -| Name | Description | Values | -| ---- | ----------- | ------ | -| nginx.byte.io.direction | The direction of byte traffic. | Str: ``RX``, ``TX`` | -| nginx.zone.name | The name of the shared memory zone. | Any Str | - -### nginx.stream.connections.accepted +### nginx.stream.connection.accepted The total number of connections accepted from clients. @@ -661,7 +646,7 @@ The total number of connections accepted from clients. | ---- | ----------- | ------ | | nginx.zone.name | The name of the shared memory zone. | Any Str | -### nginx.stream.connections.discarded +### nginx.stream.connection.discarded Total number of connections completed without creating a session. @@ -675,7 +660,7 @@ Total number of connections completed without creating a session. | ---- | ----------- | ------ | | nginx.zone.name | The name of the shared memory zone. | Any Str | -### nginx.stream.connections.processing.count +### nginx.stream.connection.processing.count The number of client connections that are currently being processed. @@ -689,46 +674,43 @@ The number of client connections that are currently being processed. | ---- | ----------- | ------ | | nginx.zone.name | The name of the shared memory zone. | Any Str | -### nginx.stream.session.status +### nginx.stream.io -The total number of completed sessions. +The total number of Stream byte IO. | Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | | ---- | ----------- | ---------- | ----------------------- | --------- | -| sessions | Sum | Int | Cumulative | true | +| bytes | Sum | Int | Cumulative | true | #### Attributes | Name | Description | Values | | ---- | ----------- | ------ | -| nginx.status_range | A status code range or bucket for a HTTP response's status code. | Str: ``1xx``, ``2xx``, ``3xx``, ``4xx``, ``5xx`` | +| nginx.io.direction | The direction of byte traffic. | Str: ``receive``, ``transmit`` | | nginx.zone.name | The name of the shared memory zone. | Any Str | -### nginx.stream.upstream.peer.byte.io +### nginx.stream.session.status -The total number of Stream Upstream Peer byte IO. +The total number of completed sessions. | Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | | ---- | ----------- | ---------- | ----------------------- | --------- | -| bytes | Sum | Int | Cumulative | true | +| sessions | Sum | Int | Cumulative | true | #### Attributes | Name | Description | Values | | ---- | ----------- | ------ | -| nginx.byte.io.direction | The direction of byte traffic. | Str: ``RX``, ``TX`` | +| nginx.status_range | A status code range or bucket for a HTTP response's status code. | Str: ``1xx``, ``2xx``, ``3xx``, ``4xx``, ``5xx`` | | nginx.zone.name | The name of the shared memory zone. | Any Str | -| nginx.upstream.name | The name of the upstream block. | Any Str | -| nginx.peer.address | The address of the peer. | Any Str | -| nginx.peer.name | The name of the peer. | Any Str | -### nginx.stream.upstream.peer.connections +### nginx.stream.upstream.peer.connection.count -The total number of client connections forwarded to this stream upstream peer. +The current number of Stream Upstream Peer connections. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| connections | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | +| ---- | ----------- | ---------- | +| connections | Gauge | Int | #### Attributes @@ -739,13 +721,13 @@ The total number of client connections forwarded to this stream upstream peer. | nginx.peer.address | The address of the peer. | Any Str | | nginx.peer.name | The name of the peer. | Any Str | -### nginx.stream.upstream.peer.connections.count +### nginx.stream.upstream.peer.connection.time -The current number of Stream Upstream Peer connections. +The average time to connect to the stream upstream peer. | Unit | Metric Type | Value Type | | ---- | ----------- | ---------- | -| connections | Gauge | Int | +| ms | Gauge | Int | #### Attributes @@ -756,13 +738,13 @@ The current number of Stream Upstream Peer connections. | nginx.peer.address | The address of the peer. | Any Str | | nginx.peer.name | The name of the peer. | Any Str | -### nginx.stream.upstream.peer.connections.time +### nginx.stream.upstream.peer.connections -The average time to connect to the stream upstream peer. +The total number of client connections forwarded to this stream upstream peer. -| Unit | Metric Type | Value Type | -| ---- | ----------- | ---------- | -| ms | Gauge | Int | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | +| ---- | ----------- | ---------- | ----------------------- | --------- | +| connections | Sum | Int | Cumulative | true | #### Attributes @@ -775,11 +757,11 @@ The average time to connect to the stream upstream peer. ### nginx.stream.upstream.peer.count -The total number of stream upstream peers grouped by state. +The current number of stream upstream peers grouped by state. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| peers | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | +| ---- | ----------- | ---------- | +| peers | Gauge | Int | #### Attributes @@ -795,7 +777,7 @@ The total number of unsuccessful attempts to communicate with the stream upstrea | Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | | ---- | ----------- | ---------- | ----------------------- | --------- | -| peers | Sum | Int | Cumulative | true | +| attempts | Sum | Int | Cumulative | true | #### Attributes @@ -823,6 +805,24 @@ The total number of health check requests made to the stream upstream peer. | nginx.peer.address | The address of the peer. | Any Str | | nginx.peer.name | The name of the peer. | Any Str | +### nginx.stream.upstream.peer.io + +The total number of Stream Upstream Peer byte IO. + +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | +| ---- | ----------- | ---------- | ----------------------- | --------- | +| bytes | Sum | Int | Cumulative | true | + +#### Attributes + +| Name | Description | Values | +| ---- | ----------- | ------ | +| nginx.io.direction | The direction of byte traffic. | Str: ``receive``, ``transmit`` | +| nginx.zone.name | The name of the shared memory zone. | Any Str | +| nginx.upstream.name | The name of the upstream block. | Any Str | +| nginx.peer.address | The address of the peer. | Any Str | +| nginx.peer.name | The name of the peer. | Any Str | + ### nginx.stream.upstream.peer.response.time The average time to receive the last byte of data for the stream upstream peer. @@ -875,7 +875,7 @@ The average time to receive the first byte of data for the stream upstream peer. | nginx.peer.address | The address of the peer. | Any Str | | nginx.peer.name | The name of the peer. | Any Str | -### nginx.stream.upstream.peer.unavailable +### nginx.stream.upstream.peer.unavailables How many times the server became unavailable for client connections (state “unavail”) due to the number of unsuccessful attempts reaching the max_fails threshold. diff --git a/internal/collector/nginxplusreceiver/internal/metadata/generated_config.go b/internal/collector/nginxplusreceiver/internal/metadata/generated_config.go index 556c5f6d0..1afcfcc59 100644 --- a/internal/collector/nginxplusreceiver/internal/metadata/generated_config.go +++ b/internal/collector/nginxplusreceiver/internal/metadata/generated_config.go @@ -28,69 +28,69 @@ func (ms *MetricConfig) Unmarshal(parser *confmap.Conf) error { // MetricsConfig provides config for nginxplus metrics. type MetricsConfig struct { - NginxCacheBytes MetricConfig `mapstructure:"nginx.cache.bytes"` - NginxCacheMemoryLimit MetricConfig `mapstructure:"nginx.cache.memory.limit"` - NginxCacheMemoryUsage MetricConfig `mapstructure:"nginx.cache.memory.usage"` - NginxCacheResponses MetricConfig `mapstructure:"nginx.cache.responses"` - NginxConfigReloads MetricConfig `mapstructure:"nginx.config.reloads"` - NginxHTTPConnections MetricConfig `mapstructure:"nginx.http.connections"` - NginxHTTPConnectionsCount MetricConfig `mapstructure:"nginx.http.connections.count"` - NginxHTTPLimitConnRequests MetricConfig `mapstructure:"nginx.http.limit_conn.requests"` - NginxHTTPLimitReqRequests MetricConfig `mapstructure:"nginx.http.limit_req.requests"` - NginxHTTPRequestByteIo MetricConfig `mapstructure:"nginx.http.request.byte.io"` - NginxHTTPRequestDiscarded MetricConfig `mapstructure:"nginx.http.request.discarded"` - NginxHTTPRequestProcessingCount MetricConfig `mapstructure:"nginx.http.request.processing.count"` - NginxHTTPRequests MetricConfig `mapstructure:"nginx.http.requests"` - NginxHTTPRequestsCount MetricConfig `mapstructure:"nginx.http.requests.count"` - NginxHTTPResponseStatus MetricConfig `mapstructure:"nginx.http.response.status"` - NginxHTTPResponses MetricConfig `mapstructure:"nginx.http.responses"` - NginxHTTPUpstreamKeepaliveCount MetricConfig `mapstructure:"nginx.http.upstream.keepalive.count"` - NginxHTTPUpstreamPeerByteIo MetricConfig `mapstructure:"nginx.http.upstream.peer.byte.io"` - NginxHTTPUpstreamPeerConnectionsCount MetricConfig `mapstructure:"nginx.http.upstream.peer.connections.count"` - NginxHTTPUpstreamPeerCount MetricConfig `mapstructure:"nginx.http.upstream.peer.count"` - NginxHTTPUpstreamPeerFails MetricConfig `mapstructure:"nginx.http.upstream.peer.fails"` - NginxHTTPUpstreamPeerHeaderTime MetricConfig `mapstructure:"nginx.http.upstream.peer.header.time"` - NginxHTTPUpstreamPeerHealthChecks MetricConfig `mapstructure:"nginx.http.upstream.peer.health_checks"` - NginxHTTPUpstreamPeerRequests MetricConfig `mapstructure:"nginx.http.upstream.peer.requests"` - NginxHTTPUpstreamPeerResponseTime MetricConfig `mapstructure:"nginx.http.upstream.peer.response.time"` - NginxHTTPUpstreamPeerResponses MetricConfig `mapstructure:"nginx.http.upstream.peer.responses"` - NginxHTTPUpstreamPeerState MetricConfig `mapstructure:"nginx.http.upstream.peer.state"` - NginxHTTPUpstreamPeerUnavailables MetricConfig `mapstructure:"nginx.http.upstream.peer.unavailables"` - NginxHTTPUpstreamQueueLimit MetricConfig `mapstructure:"nginx.http.upstream.queue.limit"` - NginxHTTPUpstreamQueueOverflows MetricConfig `mapstructure:"nginx.http.upstream.queue.overflows"` - NginxHTTPUpstreamQueueUsage MetricConfig `mapstructure:"nginx.http.upstream.queue.usage"` - NginxHTTPUpstreamZombieCount MetricConfig `mapstructure:"nginx.http.upstream.zombie.count"` - NginxSlabPageFree MetricConfig `mapstructure:"nginx.slab.page.free"` - NginxSlabPageLimit MetricConfig `mapstructure:"nginx.slab.page.limit"` - NginxSlabPageUsage MetricConfig `mapstructure:"nginx.slab.page.usage"` - NginxSlabPageUtilization MetricConfig `mapstructure:"nginx.slab.page.utilization"` - NginxSlabSlotAllocations MetricConfig `mapstructure:"nginx.slab.slot.allocations"` - NginxSlabSlotFree MetricConfig `mapstructure:"nginx.slab.slot.free"` - NginxSlabSlotUsage MetricConfig `mapstructure:"nginx.slab.slot.usage"` - NginxSslCertificateVerifyFailures MetricConfig `mapstructure:"nginx.ssl.certificate.verify_failures"` - NginxSslHandshakes MetricConfig `mapstructure:"nginx.ssl.handshakes"` - NginxStreamByteIo MetricConfig `mapstructure:"nginx.stream.byte.io"` - NginxStreamConnectionsAccepted MetricConfig `mapstructure:"nginx.stream.connections.accepted"` - NginxStreamConnectionsDiscarded MetricConfig `mapstructure:"nginx.stream.connections.discarded"` - NginxStreamConnectionsProcessingCount MetricConfig `mapstructure:"nginx.stream.connections.processing.count"` - NginxStreamSessionStatus MetricConfig `mapstructure:"nginx.stream.session.status"` - NginxStreamUpstreamPeerByteIo MetricConfig `mapstructure:"nginx.stream.upstream.peer.byte.io"` - NginxStreamUpstreamPeerConnections MetricConfig `mapstructure:"nginx.stream.upstream.peer.connections"` - NginxStreamUpstreamPeerConnectionsCount MetricConfig `mapstructure:"nginx.stream.upstream.peer.connections.count"` - NginxStreamUpstreamPeerConnectionsTime MetricConfig `mapstructure:"nginx.stream.upstream.peer.connections.time"` - NginxStreamUpstreamPeerCount MetricConfig `mapstructure:"nginx.stream.upstream.peer.count"` - NginxStreamUpstreamPeerFails MetricConfig `mapstructure:"nginx.stream.upstream.peer.fails"` - NginxStreamUpstreamPeerHealthChecks MetricConfig `mapstructure:"nginx.stream.upstream.peer.health_checks"` - NginxStreamUpstreamPeerResponseTime MetricConfig `mapstructure:"nginx.stream.upstream.peer.response.time"` - NginxStreamUpstreamPeerState MetricConfig `mapstructure:"nginx.stream.upstream.peer.state"` - NginxStreamUpstreamPeerTtfbTime MetricConfig `mapstructure:"nginx.stream.upstream.peer.ttfb.time"` - NginxStreamUpstreamPeerUnavailable MetricConfig `mapstructure:"nginx.stream.upstream.peer.unavailable"` - NginxStreamUpstreamZombieCount MetricConfig `mapstructure:"nginx.stream.upstream.zombie.count"` + NginxCacheBytesRead MetricConfig `mapstructure:"nginx.cache.bytes_read"` + NginxCacheMemoryLimit MetricConfig `mapstructure:"nginx.cache.memory.limit"` + NginxCacheMemoryUsage MetricConfig `mapstructure:"nginx.cache.memory.usage"` + NginxCacheResponses MetricConfig `mapstructure:"nginx.cache.responses"` + NginxConfigReloads MetricConfig `mapstructure:"nginx.config.reloads"` + NginxHTTPConnectionCount MetricConfig `mapstructure:"nginx.http.connection.count"` + NginxHTTPConnections MetricConfig `mapstructure:"nginx.http.connections"` + NginxHTTPLimitConnRequests MetricConfig `mapstructure:"nginx.http.limit_conn.requests"` + NginxHTTPLimitReqRequests MetricConfig `mapstructure:"nginx.http.limit_req.requests"` + NginxHTTPRequestCount MetricConfig `mapstructure:"nginx.http.request.count"` + NginxHTTPRequestDiscarded MetricConfig `mapstructure:"nginx.http.request.discarded"` + NginxHTTPRequestIo MetricConfig `mapstructure:"nginx.http.request.io"` + NginxHTTPRequestProcessingCount MetricConfig `mapstructure:"nginx.http.request.processing.count"` + NginxHTTPRequests MetricConfig `mapstructure:"nginx.http.requests"` + NginxHTTPResponseStatus MetricConfig `mapstructure:"nginx.http.response.status"` + NginxHTTPResponses MetricConfig `mapstructure:"nginx.http.responses"` + NginxHTTPUpstreamKeepaliveCount MetricConfig `mapstructure:"nginx.http.upstream.keepalive.count"` + NginxHTTPUpstreamPeerConnectionCount MetricConfig `mapstructure:"nginx.http.upstream.peer.connection.count"` + NginxHTTPUpstreamPeerCount MetricConfig `mapstructure:"nginx.http.upstream.peer.count"` + NginxHTTPUpstreamPeerFails MetricConfig `mapstructure:"nginx.http.upstream.peer.fails"` + NginxHTTPUpstreamPeerHeaderTime MetricConfig `mapstructure:"nginx.http.upstream.peer.header.time"` + NginxHTTPUpstreamPeerHealthChecks MetricConfig `mapstructure:"nginx.http.upstream.peer.health_checks"` + NginxHTTPUpstreamPeerIo MetricConfig `mapstructure:"nginx.http.upstream.peer.io"` + NginxHTTPUpstreamPeerRequests MetricConfig `mapstructure:"nginx.http.upstream.peer.requests"` + NginxHTTPUpstreamPeerResponseTime MetricConfig `mapstructure:"nginx.http.upstream.peer.response.time"` + NginxHTTPUpstreamPeerResponses MetricConfig `mapstructure:"nginx.http.upstream.peer.responses"` + NginxHTTPUpstreamPeerState MetricConfig `mapstructure:"nginx.http.upstream.peer.state"` + NginxHTTPUpstreamPeerUnavailables MetricConfig `mapstructure:"nginx.http.upstream.peer.unavailables"` + NginxHTTPUpstreamQueueLimit MetricConfig `mapstructure:"nginx.http.upstream.queue.limit"` + NginxHTTPUpstreamQueueOverflows MetricConfig `mapstructure:"nginx.http.upstream.queue.overflows"` + NginxHTTPUpstreamQueueUsage MetricConfig `mapstructure:"nginx.http.upstream.queue.usage"` + NginxHTTPUpstreamZombieCount MetricConfig `mapstructure:"nginx.http.upstream.zombie.count"` + NginxSlabPageFree MetricConfig `mapstructure:"nginx.slab.page.free"` + NginxSlabPageLimit MetricConfig `mapstructure:"nginx.slab.page.limit"` + NginxSlabPageUsage MetricConfig `mapstructure:"nginx.slab.page.usage"` + NginxSlabPageUtilization MetricConfig `mapstructure:"nginx.slab.page.utilization"` + NginxSlabSlotAllocations MetricConfig `mapstructure:"nginx.slab.slot.allocations"` + NginxSlabSlotFree MetricConfig `mapstructure:"nginx.slab.slot.free"` + NginxSlabSlotUsage MetricConfig `mapstructure:"nginx.slab.slot.usage"` + NginxSslCertificateVerifyFailures MetricConfig `mapstructure:"nginx.ssl.certificate.verify_failures"` + NginxSslHandshakes MetricConfig `mapstructure:"nginx.ssl.handshakes"` + NginxStreamConnectionAccepted MetricConfig `mapstructure:"nginx.stream.connection.accepted"` + NginxStreamConnectionDiscarded MetricConfig `mapstructure:"nginx.stream.connection.discarded"` + NginxStreamConnectionProcessingCount MetricConfig `mapstructure:"nginx.stream.connection.processing.count"` + NginxStreamIo MetricConfig `mapstructure:"nginx.stream.io"` + NginxStreamSessionStatus MetricConfig `mapstructure:"nginx.stream.session.status"` + NginxStreamUpstreamPeerConnectionCount MetricConfig `mapstructure:"nginx.stream.upstream.peer.connection.count"` + NginxStreamUpstreamPeerConnectionTime MetricConfig `mapstructure:"nginx.stream.upstream.peer.connection.time"` + NginxStreamUpstreamPeerConnections MetricConfig `mapstructure:"nginx.stream.upstream.peer.connections"` + NginxStreamUpstreamPeerCount MetricConfig `mapstructure:"nginx.stream.upstream.peer.count"` + NginxStreamUpstreamPeerFails MetricConfig `mapstructure:"nginx.stream.upstream.peer.fails"` + NginxStreamUpstreamPeerHealthChecks MetricConfig `mapstructure:"nginx.stream.upstream.peer.health_checks"` + NginxStreamUpstreamPeerIo MetricConfig `mapstructure:"nginx.stream.upstream.peer.io"` + NginxStreamUpstreamPeerResponseTime MetricConfig `mapstructure:"nginx.stream.upstream.peer.response.time"` + NginxStreamUpstreamPeerState MetricConfig `mapstructure:"nginx.stream.upstream.peer.state"` + NginxStreamUpstreamPeerTtfbTime MetricConfig `mapstructure:"nginx.stream.upstream.peer.ttfb.time"` + NginxStreamUpstreamPeerUnavailables MetricConfig `mapstructure:"nginx.stream.upstream.peer.unavailables"` + NginxStreamUpstreamZombieCount MetricConfig `mapstructure:"nginx.stream.upstream.zombie.count"` } func DefaultMetricsConfig() MetricsConfig { return MetricsConfig{ - NginxCacheBytes: MetricConfig{ + NginxCacheBytesRead: MetricConfig{ Enabled: true, }, NginxCacheMemoryLimit: MetricConfig{ @@ -105,10 +105,10 @@ func DefaultMetricsConfig() MetricsConfig { NginxConfigReloads: MetricConfig{ Enabled: true, }, - NginxHTTPConnections: MetricConfig{ + NginxHTTPConnectionCount: MetricConfig{ Enabled: true, }, - NginxHTTPConnectionsCount: MetricConfig{ + NginxHTTPConnections: MetricConfig{ Enabled: true, }, NginxHTTPLimitConnRequests: MetricConfig{ @@ -117,19 +117,19 @@ func DefaultMetricsConfig() MetricsConfig { NginxHTTPLimitReqRequests: MetricConfig{ Enabled: true, }, - NginxHTTPRequestByteIo: MetricConfig{ + NginxHTTPRequestCount: MetricConfig{ Enabled: true, }, NginxHTTPRequestDiscarded: MetricConfig{ Enabled: true, }, - NginxHTTPRequestProcessingCount: MetricConfig{ + NginxHTTPRequestIo: MetricConfig{ Enabled: true, }, - NginxHTTPRequests: MetricConfig{ + NginxHTTPRequestProcessingCount: MetricConfig{ Enabled: true, }, - NginxHTTPRequestsCount: MetricConfig{ + NginxHTTPRequests: MetricConfig{ Enabled: true, }, NginxHTTPResponseStatus: MetricConfig{ @@ -141,10 +141,7 @@ func DefaultMetricsConfig() MetricsConfig { NginxHTTPUpstreamKeepaliveCount: MetricConfig{ Enabled: true, }, - NginxHTTPUpstreamPeerByteIo: MetricConfig{ - Enabled: true, - }, - NginxHTTPUpstreamPeerConnectionsCount: MetricConfig{ + NginxHTTPUpstreamPeerConnectionCount: MetricConfig{ Enabled: true, }, NginxHTTPUpstreamPeerCount: MetricConfig{ @@ -159,6 +156,9 @@ func DefaultMetricsConfig() MetricsConfig { NginxHTTPUpstreamPeerHealthChecks: MetricConfig{ Enabled: true, }, + NginxHTTPUpstreamPeerIo: MetricConfig{ + Enabled: true, + }, NginxHTTPUpstreamPeerRequests: MetricConfig{ Enabled: true, }, @@ -213,31 +213,28 @@ func DefaultMetricsConfig() MetricsConfig { NginxSslHandshakes: MetricConfig{ Enabled: true, }, - NginxStreamByteIo: MetricConfig{ + NginxStreamConnectionAccepted: MetricConfig{ Enabled: true, }, - NginxStreamConnectionsAccepted: MetricConfig{ + NginxStreamConnectionDiscarded: MetricConfig{ Enabled: true, }, - NginxStreamConnectionsDiscarded: MetricConfig{ + NginxStreamConnectionProcessingCount: MetricConfig{ Enabled: true, }, - NginxStreamConnectionsProcessingCount: MetricConfig{ + NginxStreamIo: MetricConfig{ Enabled: true, }, NginxStreamSessionStatus: MetricConfig{ Enabled: true, }, - NginxStreamUpstreamPeerByteIo: MetricConfig{ - Enabled: true, - }, - NginxStreamUpstreamPeerConnections: MetricConfig{ + NginxStreamUpstreamPeerConnectionCount: MetricConfig{ Enabled: true, }, - NginxStreamUpstreamPeerConnectionsCount: MetricConfig{ + NginxStreamUpstreamPeerConnectionTime: MetricConfig{ Enabled: true, }, - NginxStreamUpstreamPeerConnectionsTime: MetricConfig{ + NginxStreamUpstreamPeerConnections: MetricConfig{ Enabled: true, }, NginxStreamUpstreamPeerCount: MetricConfig{ @@ -249,6 +246,9 @@ func DefaultMetricsConfig() MetricsConfig { NginxStreamUpstreamPeerHealthChecks: MetricConfig{ Enabled: true, }, + NginxStreamUpstreamPeerIo: MetricConfig{ + Enabled: true, + }, NginxStreamUpstreamPeerResponseTime: MetricConfig{ Enabled: true, }, @@ -258,7 +258,7 @@ func DefaultMetricsConfig() MetricsConfig { NginxStreamUpstreamPeerTtfbTime: MetricConfig{ Enabled: true, }, - NginxStreamUpstreamPeerUnavailable: MetricConfig{ + NginxStreamUpstreamPeerUnavailables: MetricConfig{ Enabled: true, }, NginxStreamUpstreamZombieCount: MetricConfig{ diff --git a/internal/collector/nginxplusreceiver/internal/metadata/generated_config_test.go b/internal/collector/nginxplusreceiver/internal/metadata/generated_config_test.go index d9d9d705c..fece3f949 100644 --- a/internal/collector/nginxplusreceiver/internal/metadata/generated_config_test.go +++ b/internal/collector/nginxplusreceiver/internal/metadata/generated_config_test.go @@ -25,64 +25,64 @@ func TestMetricsBuilderConfig(t *testing.T) { name: "all_set", want: MetricsBuilderConfig{ Metrics: MetricsConfig{ - NginxCacheBytes: MetricConfig{Enabled: true}, - NginxCacheMemoryLimit: MetricConfig{Enabled: true}, - NginxCacheMemoryUsage: MetricConfig{Enabled: true}, - NginxCacheResponses: MetricConfig{Enabled: true}, - NginxConfigReloads: MetricConfig{Enabled: true}, - NginxHTTPConnections: MetricConfig{Enabled: true}, - NginxHTTPConnectionsCount: MetricConfig{Enabled: true}, - NginxHTTPLimitConnRequests: MetricConfig{Enabled: true}, - NginxHTTPLimitReqRequests: MetricConfig{Enabled: true}, - NginxHTTPRequestByteIo: MetricConfig{Enabled: true}, - NginxHTTPRequestDiscarded: MetricConfig{Enabled: true}, - NginxHTTPRequestProcessingCount: MetricConfig{Enabled: true}, - NginxHTTPRequests: MetricConfig{Enabled: true}, - NginxHTTPRequestsCount: MetricConfig{Enabled: true}, - NginxHTTPResponseStatus: MetricConfig{Enabled: true}, - NginxHTTPResponses: MetricConfig{Enabled: true}, - NginxHTTPUpstreamKeepaliveCount: MetricConfig{Enabled: true}, - NginxHTTPUpstreamPeerByteIo: MetricConfig{Enabled: true}, - NginxHTTPUpstreamPeerConnectionsCount: MetricConfig{Enabled: true}, - NginxHTTPUpstreamPeerCount: MetricConfig{Enabled: true}, - NginxHTTPUpstreamPeerFails: MetricConfig{Enabled: true}, - NginxHTTPUpstreamPeerHeaderTime: MetricConfig{Enabled: true}, - NginxHTTPUpstreamPeerHealthChecks: MetricConfig{Enabled: true}, - NginxHTTPUpstreamPeerRequests: MetricConfig{Enabled: true}, - NginxHTTPUpstreamPeerResponseTime: MetricConfig{Enabled: true}, - NginxHTTPUpstreamPeerResponses: MetricConfig{Enabled: true}, - NginxHTTPUpstreamPeerState: MetricConfig{Enabled: true}, - NginxHTTPUpstreamPeerUnavailables: MetricConfig{Enabled: true}, - NginxHTTPUpstreamQueueLimit: MetricConfig{Enabled: true}, - NginxHTTPUpstreamQueueOverflows: MetricConfig{Enabled: true}, - NginxHTTPUpstreamQueueUsage: MetricConfig{Enabled: true}, - NginxHTTPUpstreamZombieCount: MetricConfig{Enabled: true}, - NginxSlabPageFree: MetricConfig{Enabled: true}, - NginxSlabPageLimit: MetricConfig{Enabled: true}, - NginxSlabPageUsage: MetricConfig{Enabled: true}, - NginxSlabPageUtilization: MetricConfig{Enabled: true}, - NginxSlabSlotAllocations: MetricConfig{Enabled: true}, - NginxSlabSlotFree: MetricConfig{Enabled: true}, - NginxSlabSlotUsage: MetricConfig{Enabled: true}, - NginxSslCertificateVerifyFailures: MetricConfig{Enabled: true}, - NginxSslHandshakes: MetricConfig{Enabled: true}, - NginxStreamByteIo: MetricConfig{Enabled: true}, - NginxStreamConnectionsAccepted: MetricConfig{Enabled: true}, - NginxStreamConnectionsDiscarded: MetricConfig{Enabled: true}, - NginxStreamConnectionsProcessingCount: MetricConfig{Enabled: true}, - NginxStreamSessionStatus: MetricConfig{Enabled: true}, - NginxStreamUpstreamPeerByteIo: MetricConfig{Enabled: true}, - NginxStreamUpstreamPeerConnections: MetricConfig{Enabled: true}, - NginxStreamUpstreamPeerConnectionsCount: MetricConfig{Enabled: true}, - NginxStreamUpstreamPeerConnectionsTime: MetricConfig{Enabled: true}, - NginxStreamUpstreamPeerCount: MetricConfig{Enabled: true}, - NginxStreamUpstreamPeerFails: MetricConfig{Enabled: true}, - NginxStreamUpstreamPeerHealthChecks: MetricConfig{Enabled: true}, - NginxStreamUpstreamPeerResponseTime: MetricConfig{Enabled: true}, - NginxStreamUpstreamPeerState: MetricConfig{Enabled: true}, - NginxStreamUpstreamPeerTtfbTime: MetricConfig{Enabled: true}, - NginxStreamUpstreamPeerUnavailable: MetricConfig{Enabled: true}, - NginxStreamUpstreamZombieCount: MetricConfig{Enabled: true}, + NginxCacheBytesRead: MetricConfig{Enabled: true}, + NginxCacheMemoryLimit: MetricConfig{Enabled: true}, + NginxCacheMemoryUsage: MetricConfig{Enabled: true}, + NginxCacheResponses: MetricConfig{Enabled: true}, + NginxConfigReloads: MetricConfig{Enabled: true}, + NginxHTTPConnectionCount: MetricConfig{Enabled: true}, + NginxHTTPConnections: MetricConfig{Enabled: true}, + NginxHTTPLimitConnRequests: MetricConfig{Enabled: true}, + NginxHTTPLimitReqRequests: MetricConfig{Enabled: true}, + NginxHTTPRequestCount: MetricConfig{Enabled: true}, + NginxHTTPRequestDiscarded: MetricConfig{Enabled: true}, + NginxHTTPRequestIo: MetricConfig{Enabled: true}, + NginxHTTPRequestProcessingCount: MetricConfig{Enabled: true}, + NginxHTTPRequests: MetricConfig{Enabled: true}, + NginxHTTPResponseStatus: MetricConfig{Enabled: true}, + NginxHTTPResponses: MetricConfig{Enabled: true}, + NginxHTTPUpstreamKeepaliveCount: MetricConfig{Enabled: true}, + NginxHTTPUpstreamPeerConnectionCount: MetricConfig{Enabled: true}, + NginxHTTPUpstreamPeerCount: MetricConfig{Enabled: true}, + NginxHTTPUpstreamPeerFails: MetricConfig{Enabled: true}, + NginxHTTPUpstreamPeerHeaderTime: MetricConfig{Enabled: true}, + NginxHTTPUpstreamPeerHealthChecks: MetricConfig{Enabled: true}, + NginxHTTPUpstreamPeerIo: MetricConfig{Enabled: true}, + NginxHTTPUpstreamPeerRequests: MetricConfig{Enabled: true}, + NginxHTTPUpstreamPeerResponseTime: MetricConfig{Enabled: true}, + NginxHTTPUpstreamPeerResponses: MetricConfig{Enabled: true}, + NginxHTTPUpstreamPeerState: MetricConfig{Enabled: true}, + NginxHTTPUpstreamPeerUnavailables: MetricConfig{Enabled: true}, + NginxHTTPUpstreamQueueLimit: MetricConfig{Enabled: true}, + NginxHTTPUpstreamQueueOverflows: MetricConfig{Enabled: true}, + NginxHTTPUpstreamQueueUsage: MetricConfig{Enabled: true}, + NginxHTTPUpstreamZombieCount: MetricConfig{Enabled: true}, + NginxSlabPageFree: MetricConfig{Enabled: true}, + NginxSlabPageLimit: MetricConfig{Enabled: true}, + NginxSlabPageUsage: MetricConfig{Enabled: true}, + NginxSlabPageUtilization: MetricConfig{Enabled: true}, + NginxSlabSlotAllocations: MetricConfig{Enabled: true}, + NginxSlabSlotFree: MetricConfig{Enabled: true}, + NginxSlabSlotUsage: MetricConfig{Enabled: true}, + NginxSslCertificateVerifyFailures: MetricConfig{Enabled: true}, + NginxSslHandshakes: MetricConfig{Enabled: true}, + NginxStreamConnectionAccepted: MetricConfig{Enabled: true}, + NginxStreamConnectionDiscarded: MetricConfig{Enabled: true}, + NginxStreamConnectionProcessingCount: MetricConfig{Enabled: true}, + NginxStreamIo: MetricConfig{Enabled: true}, + NginxStreamSessionStatus: MetricConfig{Enabled: true}, + NginxStreamUpstreamPeerConnectionCount: MetricConfig{Enabled: true}, + NginxStreamUpstreamPeerConnectionTime: MetricConfig{Enabled: true}, + NginxStreamUpstreamPeerConnections: MetricConfig{Enabled: true}, + NginxStreamUpstreamPeerCount: MetricConfig{Enabled: true}, + NginxStreamUpstreamPeerFails: MetricConfig{Enabled: true}, + NginxStreamUpstreamPeerHealthChecks: MetricConfig{Enabled: true}, + NginxStreamUpstreamPeerIo: MetricConfig{Enabled: true}, + NginxStreamUpstreamPeerResponseTime: MetricConfig{Enabled: true}, + NginxStreamUpstreamPeerState: MetricConfig{Enabled: true}, + NginxStreamUpstreamPeerTtfbTime: MetricConfig{Enabled: true}, + NginxStreamUpstreamPeerUnavailables: MetricConfig{Enabled: true}, + NginxStreamUpstreamZombieCount: MetricConfig{Enabled: true}, }, ResourceAttributes: ResourceAttributesConfig{ InstanceID: ResourceAttributeConfig{Enabled: true}, @@ -94,64 +94,64 @@ func TestMetricsBuilderConfig(t *testing.T) { name: "none_set", want: MetricsBuilderConfig{ Metrics: MetricsConfig{ - NginxCacheBytes: MetricConfig{Enabled: false}, - NginxCacheMemoryLimit: MetricConfig{Enabled: false}, - NginxCacheMemoryUsage: MetricConfig{Enabled: false}, - NginxCacheResponses: MetricConfig{Enabled: false}, - NginxConfigReloads: MetricConfig{Enabled: false}, - NginxHTTPConnections: MetricConfig{Enabled: false}, - NginxHTTPConnectionsCount: MetricConfig{Enabled: false}, - NginxHTTPLimitConnRequests: MetricConfig{Enabled: false}, - NginxHTTPLimitReqRequests: MetricConfig{Enabled: false}, - NginxHTTPRequestByteIo: MetricConfig{Enabled: false}, - NginxHTTPRequestDiscarded: MetricConfig{Enabled: false}, - NginxHTTPRequestProcessingCount: MetricConfig{Enabled: false}, - NginxHTTPRequests: MetricConfig{Enabled: false}, - NginxHTTPRequestsCount: MetricConfig{Enabled: false}, - NginxHTTPResponseStatus: MetricConfig{Enabled: false}, - NginxHTTPResponses: MetricConfig{Enabled: false}, - NginxHTTPUpstreamKeepaliveCount: MetricConfig{Enabled: false}, - NginxHTTPUpstreamPeerByteIo: MetricConfig{Enabled: false}, - NginxHTTPUpstreamPeerConnectionsCount: MetricConfig{Enabled: false}, - NginxHTTPUpstreamPeerCount: MetricConfig{Enabled: false}, - NginxHTTPUpstreamPeerFails: MetricConfig{Enabled: false}, - NginxHTTPUpstreamPeerHeaderTime: MetricConfig{Enabled: false}, - NginxHTTPUpstreamPeerHealthChecks: MetricConfig{Enabled: false}, - NginxHTTPUpstreamPeerRequests: MetricConfig{Enabled: false}, - NginxHTTPUpstreamPeerResponseTime: MetricConfig{Enabled: false}, - NginxHTTPUpstreamPeerResponses: MetricConfig{Enabled: false}, - NginxHTTPUpstreamPeerState: MetricConfig{Enabled: false}, - NginxHTTPUpstreamPeerUnavailables: MetricConfig{Enabled: false}, - NginxHTTPUpstreamQueueLimit: MetricConfig{Enabled: false}, - NginxHTTPUpstreamQueueOverflows: MetricConfig{Enabled: false}, - NginxHTTPUpstreamQueueUsage: MetricConfig{Enabled: false}, - NginxHTTPUpstreamZombieCount: MetricConfig{Enabled: false}, - NginxSlabPageFree: MetricConfig{Enabled: false}, - NginxSlabPageLimit: MetricConfig{Enabled: false}, - NginxSlabPageUsage: MetricConfig{Enabled: false}, - NginxSlabPageUtilization: MetricConfig{Enabled: false}, - NginxSlabSlotAllocations: MetricConfig{Enabled: false}, - NginxSlabSlotFree: MetricConfig{Enabled: false}, - NginxSlabSlotUsage: MetricConfig{Enabled: false}, - NginxSslCertificateVerifyFailures: MetricConfig{Enabled: false}, - NginxSslHandshakes: MetricConfig{Enabled: false}, - NginxStreamByteIo: MetricConfig{Enabled: false}, - NginxStreamConnectionsAccepted: MetricConfig{Enabled: false}, - NginxStreamConnectionsDiscarded: MetricConfig{Enabled: false}, - NginxStreamConnectionsProcessingCount: MetricConfig{Enabled: false}, - NginxStreamSessionStatus: MetricConfig{Enabled: false}, - NginxStreamUpstreamPeerByteIo: MetricConfig{Enabled: false}, - NginxStreamUpstreamPeerConnections: MetricConfig{Enabled: false}, - NginxStreamUpstreamPeerConnectionsCount: MetricConfig{Enabled: false}, - NginxStreamUpstreamPeerConnectionsTime: MetricConfig{Enabled: false}, - NginxStreamUpstreamPeerCount: MetricConfig{Enabled: false}, - NginxStreamUpstreamPeerFails: MetricConfig{Enabled: false}, - NginxStreamUpstreamPeerHealthChecks: MetricConfig{Enabled: false}, - NginxStreamUpstreamPeerResponseTime: MetricConfig{Enabled: false}, - NginxStreamUpstreamPeerState: MetricConfig{Enabled: false}, - NginxStreamUpstreamPeerTtfbTime: MetricConfig{Enabled: false}, - NginxStreamUpstreamPeerUnavailable: MetricConfig{Enabled: false}, - NginxStreamUpstreamZombieCount: MetricConfig{Enabled: false}, + NginxCacheBytesRead: MetricConfig{Enabled: false}, + NginxCacheMemoryLimit: MetricConfig{Enabled: false}, + NginxCacheMemoryUsage: MetricConfig{Enabled: false}, + NginxCacheResponses: MetricConfig{Enabled: false}, + NginxConfigReloads: MetricConfig{Enabled: false}, + NginxHTTPConnectionCount: MetricConfig{Enabled: false}, + NginxHTTPConnections: MetricConfig{Enabled: false}, + NginxHTTPLimitConnRequests: MetricConfig{Enabled: false}, + NginxHTTPLimitReqRequests: MetricConfig{Enabled: false}, + NginxHTTPRequestCount: MetricConfig{Enabled: false}, + NginxHTTPRequestDiscarded: MetricConfig{Enabled: false}, + NginxHTTPRequestIo: MetricConfig{Enabled: false}, + NginxHTTPRequestProcessingCount: MetricConfig{Enabled: false}, + NginxHTTPRequests: MetricConfig{Enabled: false}, + NginxHTTPResponseStatus: MetricConfig{Enabled: false}, + NginxHTTPResponses: MetricConfig{Enabled: false}, + NginxHTTPUpstreamKeepaliveCount: MetricConfig{Enabled: false}, + NginxHTTPUpstreamPeerConnectionCount: MetricConfig{Enabled: false}, + NginxHTTPUpstreamPeerCount: MetricConfig{Enabled: false}, + NginxHTTPUpstreamPeerFails: MetricConfig{Enabled: false}, + NginxHTTPUpstreamPeerHeaderTime: MetricConfig{Enabled: false}, + NginxHTTPUpstreamPeerHealthChecks: MetricConfig{Enabled: false}, + NginxHTTPUpstreamPeerIo: MetricConfig{Enabled: false}, + NginxHTTPUpstreamPeerRequests: MetricConfig{Enabled: false}, + NginxHTTPUpstreamPeerResponseTime: MetricConfig{Enabled: false}, + NginxHTTPUpstreamPeerResponses: MetricConfig{Enabled: false}, + NginxHTTPUpstreamPeerState: MetricConfig{Enabled: false}, + NginxHTTPUpstreamPeerUnavailables: MetricConfig{Enabled: false}, + NginxHTTPUpstreamQueueLimit: MetricConfig{Enabled: false}, + NginxHTTPUpstreamQueueOverflows: MetricConfig{Enabled: false}, + NginxHTTPUpstreamQueueUsage: MetricConfig{Enabled: false}, + NginxHTTPUpstreamZombieCount: MetricConfig{Enabled: false}, + NginxSlabPageFree: MetricConfig{Enabled: false}, + NginxSlabPageLimit: MetricConfig{Enabled: false}, + NginxSlabPageUsage: MetricConfig{Enabled: false}, + NginxSlabPageUtilization: MetricConfig{Enabled: false}, + NginxSlabSlotAllocations: MetricConfig{Enabled: false}, + NginxSlabSlotFree: MetricConfig{Enabled: false}, + NginxSlabSlotUsage: MetricConfig{Enabled: false}, + NginxSslCertificateVerifyFailures: MetricConfig{Enabled: false}, + NginxSslHandshakes: MetricConfig{Enabled: false}, + NginxStreamConnectionAccepted: MetricConfig{Enabled: false}, + NginxStreamConnectionDiscarded: MetricConfig{Enabled: false}, + NginxStreamConnectionProcessingCount: MetricConfig{Enabled: false}, + NginxStreamIo: MetricConfig{Enabled: false}, + NginxStreamSessionStatus: MetricConfig{Enabled: false}, + NginxStreamUpstreamPeerConnectionCount: MetricConfig{Enabled: false}, + NginxStreamUpstreamPeerConnectionTime: MetricConfig{Enabled: false}, + NginxStreamUpstreamPeerConnections: MetricConfig{Enabled: false}, + NginxStreamUpstreamPeerCount: MetricConfig{Enabled: false}, + NginxStreamUpstreamPeerFails: MetricConfig{Enabled: false}, + NginxStreamUpstreamPeerHealthChecks: MetricConfig{Enabled: false}, + NginxStreamUpstreamPeerIo: MetricConfig{Enabled: false}, + NginxStreamUpstreamPeerResponseTime: MetricConfig{Enabled: false}, + NginxStreamUpstreamPeerState: MetricConfig{Enabled: false}, + NginxStreamUpstreamPeerTtfbTime: MetricConfig{Enabled: false}, + NginxStreamUpstreamPeerUnavailables: MetricConfig{Enabled: false}, + NginxStreamUpstreamZombieCount: MetricConfig{Enabled: false}, }, ResourceAttributes: ResourceAttributesConfig{ InstanceID: ResourceAttributeConfig{Enabled: false}, diff --git a/internal/collector/nginxplusreceiver/internal/metadata/generated_metrics.go b/internal/collector/nginxplusreceiver/internal/metadata/generated_metrics.go index 41451c39a..b18149467 100644 --- a/internal/collector/nginxplusreceiver/internal/metadata/generated_metrics.go +++ b/internal/collector/nginxplusreceiver/internal/metadata/generated_metrics.go @@ -12,32 +12,6 @@ import ( "go.opentelemetry.io/collector/receiver" ) -// AttributeNginxByteIoDirection specifies the a value nginx.byte.io.direction attribute. -type AttributeNginxByteIoDirection int - -const ( - _ AttributeNginxByteIoDirection = iota - AttributeNginxByteIoDirectionRX - AttributeNginxByteIoDirectionTX -) - -// String returns the string representation of the AttributeNginxByteIoDirection. -func (av AttributeNginxByteIoDirection) String() string { - switch av { - case AttributeNginxByteIoDirectionRX: - return "RX" - case AttributeNginxByteIoDirectionTX: - return "TX" - } - return "" -} - -// MapAttributeNginxByteIoDirection is a helper map of string to AttributeNginxByteIoDirection attribute value. -var MapAttributeNginxByteIoDirection = map[string]AttributeNginxByteIoDirection{ - "RX": AttributeNginxByteIoDirectionRX, - "TX": AttributeNginxByteIoDirectionTX, -} - // AttributeNginxCacheOutcome specifies the a value nginx.cache.outcome attribute. type AttributeNginxCacheOutcome int @@ -144,6 +118,32 @@ var MapAttributeNginxHealthCheck = map[string]AttributeNginxHealthCheck{ "FAIL": AttributeNginxHealthCheckFAIL, } +// AttributeNginxIoDirection specifies the a value nginx.io.direction attribute. +type AttributeNginxIoDirection int + +const ( + _ AttributeNginxIoDirection = iota + AttributeNginxIoDirectionReceive + AttributeNginxIoDirectionTransmit +) + +// String returns the string representation of the AttributeNginxIoDirection. +func (av AttributeNginxIoDirection) String() string { + switch av { + case AttributeNginxIoDirectionReceive: + return "receive" + case AttributeNginxIoDirectionTransmit: + return "transmit" + } + return "" +} + +// MapAttributeNginxIoDirection is a helper map of string to AttributeNginxIoDirection attribute value. +var MapAttributeNginxIoDirection = map[string]AttributeNginxIoDirection{ + "receive": AttributeNginxIoDirectionReceive, + "transmit": AttributeNginxIoDirectionTransmit, +} + // AttributeNginxLimitConnOutcome specifies the a value nginx.limit_conn.outcome attribute. type AttributeNginxLimitConnOutcome int @@ -442,15 +442,15 @@ var MapAttributeNginxZoneType = map[string]AttributeNginxZoneType{ "LOCATION": AttributeNginxZoneTypeLOCATION, } -type metricNginxCacheBytes struct { +type metricNginxCacheBytesRead struct { data pmetric.Metric // data buffer for generated metric. config MetricConfig // metric config provided by user. capacity int // max observed number of data points added to the metric. } -// init fills nginx.cache.bytes metric with initial data. -func (m *metricNginxCacheBytes) init() { - m.data.SetName("nginx.cache.bytes") +// init fills nginx.cache.bytes_read metric with initial data. +func (m *metricNginxCacheBytesRead) init() { + m.data.SetName("nginx.cache.bytes_read") m.data.SetDescription("The total number of bytes read from the cache or proxied server.") m.data.SetUnit("bytes") m.data.SetEmptySum() @@ -459,7 +459,7 @@ func (m *metricNginxCacheBytes) init() { m.data.Sum().DataPoints().EnsureCapacity(m.capacity) } -func (m *metricNginxCacheBytes) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxCacheOutcomeAttributeValue string, nginxCacheNameAttributeValue string) { +func (m *metricNginxCacheBytesRead) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxCacheOutcomeAttributeValue string, nginxCacheNameAttributeValue string) { if !m.config.Enabled { return } @@ -472,14 +472,14 @@ func (m *metricNginxCacheBytes) recordDataPoint(start pcommon.Timestamp, ts pcom } // updateCapacity saves max length of data point slices that will be used for the slice capacity. -func (m *metricNginxCacheBytes) updateCapacity() { +func (m *metricNginxCacheBytesRead) updateCapacity() { if m.data.Sum().DataPoints().Len() > m.capacity { m.capacity = m.data.Sum().DataPoints().Len() } } // emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. -func (m *metricNginxCacheBytes) emit(metrics pmetric.MetricSlice) { +func (m *metricNginxCacheBytesRead) emit(metrics pmetric.MetricSlice) { if m.config.Enabled && m.data.Sum().DataPoints().Len() > 0 { m.updateCapacity() m.data.MoveTo(metrics.AppendEmpty()) @@ -487,8 +487,8 @@ func (m *metricNginxCacheBytes) emit(metrics pmetric.MetricSlice) { } } -func newMetricNginxCacheBytes(cfg MetricConfig) metricNginxCacheBytes { - m := metricNginxCacheBytes{config: cfg} +func newMetricNginxCacheBytesRead(cfg MetricConfig) metricNginxCacheBytesRead { + m := metricNginxCacheBytesRead{config: cfg} if cfg.Enabled { m.data = pmetric.NewMetric() m.init() @@ -703,28 +703,26 @@ func newMetricNginxConfigReloads(cfg MetricConfig) metricNginxConfigReloads { return m } -type metricNginxHTTPConnections struct { +type metricNginxHTTPConnectionCount struct { data pmetric.Metric // data buffer for generated metric. config MetricConfig // metric config provided by user. capacity int // max observed number of data points added to the metric. } -// init fills nginx.http.connections metric with initial data. -func (m *metricNginxHTTPConnections) init() { - m.data.SetName("nginx.http.connections") - m.data.SetDescription("The total number of connections.") +// init fills nginx.http.connection.count metric with initial data. +func (m *metricNginxHTTPConnectionCount) init() { + m.data.SetName("nginx.http.connection.count") + m.data.SetDescription("The current number of connections.") m.data.SetUnit("connections") - m.data.SetEmptySum() - m.data.Sum().SetIsMonotonic(true) - m.data.Sum().SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) - m.data.Sum().DataPoints().EnsureCapacity(m.capacity) + m.data.SetEmptyGauge() + m.data.Gauge().DataPoints().EnsureCapacity(m.capacity) } -func (m *metricNginxHTTPConnections) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxConnectionsOutcomeAttributeValue string) { +func (m *metricNginxHTTPConnectionCount) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxConnectionsOutcomeAttributeValue string) { if !m.config.Enabled { return } - dp := m.data.Sum().DataPoints().AppendEmpty() + dp := m.data.Gauge().DataPoints().AppendEmpty() dp.SetStartTimestamp(start) dp.SetTimestamp(ts) dp.SetIntValue(val) @@ -732,23 +730,23 @@ func (m *metricNginxHTTPConnections) recordDataPoint(start pcommon.Timestamp, ts } // updateCapacity saves max length of data point slices that will be used for the slice capacity. -func (m *metricNginxHTTPConnections) updateCapacity() { - if m.data.Sum().DataPoints().Len() > m.capacity { - m.capacity = m.data.Sum().DataPoints().Len() +func (m *metricNginxHTTPConnectionCount) updateCapacity() { + if m.data.Gauge().DataPoints().Len() > m.capacity { + m.capacity = m.data.Gauge().DataPoints().Len() } } // emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. -func (m *metricNginxHTTPConnections) emit(metrics pmetric.MetricSlice) { - if m.config.Enabled && m.data.Sum().DataPoints().Len() > 0 { +func (m *metricNginxHTTPConnectionCount) emit(metrics pmetric.MetricSlice) { + if m.config.Enabled && m.data.Gauge().DataPoints().Len() > 0 { m.updateCapacity() m.data.MoveTo(metrics.AppendEmpty()) m.init() } } -func newMetricNginxHTTPConnections(cfg MetricConfig) metricNginxHTTPConnections { - m := metricNginxHTTPConnections{config: cfg} +func newMetricNginxHTTPConnectionCount(cfg MetricConfig) metricNginxHTTPConnectionCount { + m := metricNginxHTTPConnectionCount{config: cfg} if cfg.Enabled { m.data = pmetric.NewMetric() m.init() @@ -756,26 +754,28 @@ func newMetricNginxHTTPConnections(cfg MetricConfig) metricNginxHTTPConnections return m } -type metricNginxHTTPConnectionsCount struct { +type metricNginxHTTPConnections struct { data pmetric.Metric // data buffer for generated metric. config MetricConfig // metric config provided by user. capacity int // max observed number of data points added to the metric. } -// init fills nginx.http.connections.count metric with initial data. -func (m *metricNginxHTTPConnectionsCount) init() { - m.data.SetName("nginx.http.connections.count") - m.data.SetDescription("The current number of connections.") +// init fills nginx.http.connections metric with initial data. +func (m *metricNginxHTTPConnections) init() { + m.data.SetName("nginx.http.connections") + m.data.SetDescription("The total number of connections.") m.data.SetUnit("connections") - m.data.SetEmptyGauge() - m.data.Gauge().DataPoints().EnsureCapacity(m.capacity) + m.data.SetEmptySum() + m.data.Sum().SetIsMonotonic(true) + m.data.Sum().SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) + m.data.Sum().DataPoints().EnsureCapacity(m.capacity) } -func (m *metricNginxHTTPConnectionsCount) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxConnectionsOutcomeAttributeValue string) { +func (m *metricNginxHTTPConnections) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxConnectionsOutcomeAttributeValue string) { if !m.config.Enabled { return } - dp := m.data.Gauge().DataPoints().AppendEmpty() + dp := m.data.Sum().DataPoints().AppendEmpty() dp.SetStartTimestamp(start) dp.SetTimestamp(ts) dp.SetIntValue(val) @@ -783,23 +783,23 @@ func (m *metricNginxHTTPConnectionsCount) recordDataPoint(start pcommon.Timestam } // updateCapacity saves max length of data point slices that will be used for the slice capacity. -func (m *metricNginxHTTPConnectionsCount) updateCapacity() { - if m.data.Gauge().DataPoints().Len() > m.capacity { - m.capacity = m.data.Gauge().DataPoints().Len() +func (m *metricNginxHTTPConnections) updateCapacity() { + if m.data.Sum().DataPoints().Len() > m.capacity { + m.capacity = m.data.Sum().DataPoints().Len() } } // emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. -func (m *metricNginxHTTPConnectionsCount) emit(metrics pmetric.MetricSlice) { - if m.config.Enabled && m.data.Gauge().DataPoints().Len() > 0 { +func (m *metricNginxHTTPConnections) emit(metrics pmetric.MetricSlice) { + if m.config.Enabled && m.data.Sum().DataPoints().Len() > 0 { m.updateCapacity() m.data.MoveTo(metrics.AppendEmpty()) m.init() } } -func newMetricNginxHTTPConnectionsCount(cfg MetricConfig) metricNginxHTTPConnectionsCount { - m := metricNginxHTTPConnectionsCount{config: cfg} +func newMetricNginxHTTPConnections(cfg MetricConfig) metricNginxHTTPConnections { + m := metricNginxHTTPConnections{config: cfg} if cfg.Enabled { m.data = pmetric.NewMetric() m.init() @@ -915,54 +915,48 @@ func newMetricNginxHTTPLimitReqRequests(cfg MetricConfig) metricNginxHTTPLimitRe return m } -type metricNginxHTTPRequestByteIo struct { +type metricNginxHTTPRequestCount struct { data pmetric.Metric // data buffer for generated metric. config MetricConfig // metric config provided by user. capacity int // max observed number of data points added to the metric. } -// init fills nginx.http.request.byte.io metric with initial data. -func (m *metricNginxHTTPRequestByteIo) init() { - m.data.SetName("nginx.http.request.byte.io") - m.data.SetDescription("The total number of HTTP byte IO.") - m.data.SetUnit("bytes") - m.data.SetEmptySum() - m.data.Sum().SetIsMonotonic(true) - m.data.Sum().SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) - m.data.Sum().DataPoints().EnsureCapacity(m.capacity) +// init fills nginx.http.request.count metric with initial data. +func (m *metricNginxHTTPRequestCount) init() { + m.data.SetName("nginx.http.request.count") + m.data.SetDescription("The current number of client requests received from clients.") + m.data.SetUnit("requests") + m.data.SetEmptyGauge() } -func (m *metricNginxHTTPRequestByteIo) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxByteIoDirectionAttributeValue string, nginxZoneNameAttributeValue string, nginxZoneTypeAttributeValue string) { +func (m *metricNginxHTTPRequestCount) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64) { if !m.config.Enabled { return } - dp := m.data.Sum().DataPoints().AppendEmpty() + dp := m.data.Gauge().DataPoints().AppendEmpty() dp.SetStartTimestamp(start) dp.SetTimestamp(ts) dp.SetIntValue(val) - dp.Attributes().PutStr("nginx.byte.io.direction", nginxByteIoDirectionAttributeValue) - dp.Attributes().PutStr("nginx.zone.name", nginxZoneNameAttributeValue) - dp.Attributes().PutStr("nginx.zone.type", nginxZoneTypeAttributeValue) } // updateCapacity saves max length of data point slices that will be used for the slice capacity. -func (m *metricNginxHTTPRequestByteIo) updateCapacity() { - if m.data.Sum().DataPoints().Len() > m.capacity { - m.capacity = m.data.Sum().DataPoints().Len() +func (m *metricNginxHTTPRequestCount) updateCapacity() { + if m.data.Gauge().DataPoints().Len() > m.capacity { + m.capacity = m.data.Gauge().DataPoints().Len() } } // emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. -func (m *metricNginxHTTPRequestByteIo) emit(metrics pmetric.MetricSlice) { - if m.config.Enabled && m.data.Sum().DataPoints().Len() > 0 { +func (m *metricNginxHTTPRequestCount) emit(metrics pmetric.MetricSlice) { + if m.config.Enabled && m.data.Gauge().DataPoints().Len() > 0 { m.updateCapacity() m.data.MoveTo(metrics.AppendEmpty()) m.init() } } -func newMetricNginxHTTPRequestByteIo(cfg MetricConfig) metricNginxHTTPRequestByteIo { - m := metricNginxHTTPRequestByteIo{config: cfg} +func newMetricNginxHTTPRequestCount(cfg MetricConfig) metricNginxHTTPRequestCount { + m := metricNginxHTTPRequestCount{config: cfg} if cfg.Enabled { m.data = pmetric.NewMetric() m.init() @@ -1024,6 +1018,61 @@ func newMetricNginxHTTPRequestDiscarded(cfg MetricConfig) metricNginxHTTPRequest return m } +type metricNginxHTTPRequestIo struct { + data pmetric.Metric // data buffer for generated metric. + config MetricConfig // metric config provided by user. + capacity int // max observed number of data points added to the metric. +} + +// init fills nginx.http.request.io metric with initial data. +func (m *metricNginxHTTPRequestIo) init() { + m.data.SetName("nginx.http.request.io") + m.data.SetDescription("The total number of HTTP byte IO.") + m.data.SetUnit("bytes") + m.data.SetEmptySum() + m.data.Sum().SetIsMonotonic(true) + m.data.Sum().SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) + m.data.Sum().DataPoints().EnsureCapacity(m.capacity) +} + +func (m *metricNginxHTTPRequestIo) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxIoDirectionAttributeValue string, nginxZoneNameAttributeValue string, nginxZoneTypeAttributeValue string) { + if !m.config.Enabled { + return + } + dp := m.data.Sum().DataPoints().AppendEmpty() + dp.SetStartTimestamp(start) + dp.SetTimestamp(ts) + dp.SetIntValue(val) + dp.Attributes().PutStr("nginx.io.direction", nginxIoDirectionAttributeValue) + dp.Attributes().PutStr("nginx.zone.name", nginxZoneNameAttributeValue) + dp.Attributes().PutStr("nginx.zone.type", nginxZoneTypeAttributeValue) +} + +// updateCapacity saves max length of data point slices that will be used for the slice capacity. +func (m *metricNginxHTTPRequestIo) updateCapacity() { + if m.data.Sum().DataPoints().Len() > m.capacity { + m.capacity = m.data.Sum().DataPoints().Len() + } +} + +// emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. +func (m *metricNginxHTTPRequestIo) emit(metrics pmetric.MetricSlice) { + if m.config.Enabled && m.data.Sum().DataPoints().Len() > 0 { + m.updateCapacity() + m.data.MoveTo(metrics.AppendEmpty()) + m.init() + } +} + +func newMetricNginxHTTPRequestIo(cfg MetricConfig) metricNginxHTTPRequestIo { + m := metricNginxHTTPRequestIo{config: cfg} + if cfg.Enabled { + m.data = pmetric.NewMetric() + m.init() + } + return m +} + type metricNginxHTTPRequestProcessingCount struct { data pmetric.Metric // data buffer for generated metric. config MetricConfig // metric config provided by user. @@ -1130,55 +1179,6 @@ func newMetricNginxHTTPRequests(cfg MetricConfig) metricNginxHTTPRequests { return m } -type metricNginxHTTPRequestsCount struct { - data pmetric.Metric // data buffer for generated metric. - config MetricConfig // metric config provided by user. - capacity int // max observed number of data points added to the metric. -} - -// init fills nginx.http.requests.count metric with initial data. -func (m *metricNginxHTTPRequestsCount) init() { - m.data.SetName("nginx.http.requests.count") - m.data.SetDescription("The current number of client requests received from clients.") - m.data.SetUnit("requests") - m.data.SetEmptyGauge() -} - -func (m *metricNginxHTTPRequestsCount) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64) { - if !m.config.Enabled { - return - } - dp := m.data.Gauge().DataPoints().AppendEmpty() - dp.SetStartTimestamp(start) - dp.SetTimestamp(ts) - dp.SetIntValue(val) -} - -// updateCapacity saves max length of data point slices that will be used for the slice capacity. -func (m *metricNginxHTTPRequestsCount) updateCapacity() { - if m.data.Gauge().DataPoints().Len() > m.capacity { - m.capacity = m.data.Gauge().DataPoints().Len() - } -} - -// emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. -func (m *metricNginxHTTPRequestsCount) emit(metrics pmetric.MetricSlice) { - if m.config.Enabled && m.data.Gauge().DataPoints().Len() > 0 { - m.updateCapacity() - m.data.MoveTo(metrics.AppendEmpty()) - m.init() - } -} - -func newMetricNginxHTTPRequestsCount(cfg MetricConfig) metricNginxHTTPRequestsCount { - m := metricNginxHTTPRequestsCount{config: cfg} - if cfg.Enabled { - m.data = pmetric.NewMetric() - m.init() - } - return m -} - type metricNginxHTTPResponseStatus struct { data pmetric.Metric // data buffer for generated metric. config MetricConfig // metric config provided by user. @@ -1243,7 +1243,7 @@ type metricNginxHTTPResponses struct { // init fills nginx.http.responses metric with initial data. func (m *metricNginxHTTPResponses) init() { m.data.SetName("nginx.http.responses") - m.data.SetDescription("The total number of client requests received from clients.") + m.data.SetDescription("The total number of HTTP responses sent to clients.") m.data.SetUnit("responses") m.data.SetEmptySum() m.data.Sum().SetIsMonotonic(true) @@ -1340,79 +1340,22 @@ func newMetricNginxHTTPUpstreamKeepaliveCount(cfg MetricConfig) metricNginxHTTPU return m } -type metricNginxHTTPUpstreamPeerByteIo struct { +type metricNginxHTTPUpstreamPeerConnectionCount struct { data pmetric.Metric // data buffer for generated metric. config MetricConfig // metric config provided by user. capacity int // max observed number of data points added to the metric. } -// init fills nginx.http.upstream.peer.byte.io metric with initial data. -func (m *metricNginxHTTPUpstreamPeerByteIo) init() { - m.data.SetName("nginx.http.upstream.peer.byte.io") - m.data.SetDescription("The total number of byte IO per HTTP upstream peer.") - m.data.SetUnit("bytes") - m.data.SetEmptySum() - m.data.Sum().SetIsMonotonic(true) - m.data.Sum().SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) - m.data.Sum().DataPoints().EnsureCapacity(m.capacity) -} - -func (m *metricNginxHTTPUpstreamPeerByteIo) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxByteIoDirectionAttributeValue string, nginxZoneNameAttributeValue string, nginxUpstreamNameAttributeValue string, nginxPeerAddressAttributeValue string, nginxPeerNameAttributeValue string) { - if !m.config.Enabled { - return - } - dp := m.data.Sum().DataPoints().AppendEmpty() - dp.SetStartTimestamp(start) - dp.SetTimestamp(ts) - dp.SetIntValue(val) - dp.Attributes().PutStr("nginx.byte.io.direction", nginxByteIoDirectionAttributeValue) - dp.Attributes().PutStr("nginx.zone.name", nginxZoneNameAttributeValue) - dp.Attributes().PutStr("nginx.upstream.name", nginxUpstreamNameAttributeValue) - dp.Attributes().PutStr("nginx.peer.address", nginxPeerAddressAttributeValue) - dp.Attributes().PutStr("nginx.peer.name", nginxPeerNameAttributeValue) -} - -// updateCapacity saves max length of data point slices that will be used for the slice capacity. -func (m *metricNginxHTTPUpstreamPeerByteIo) updateCapacity() { - if m.data.Sum().DataPoints().Len() > m.capacity { - m.capacity = m.data.Sum().DataPoints().Len() - } -} - -// emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. -func (m *metricNginxHTTPUpstreamPeerByteIo) emit(metrics pmetric.MetricSlice) { - if m.config.Enabled && m.data.Sum().DataPoints().Len() > 0 { - m.updateCapacity() - m.data.MoveTo(metrics.AppendEmpty()) - m.init() - } -} - -func newMetricNginxHTTPUpstreamPeerByteIo(cfg MetricConfig) metricNginxHTTPUpstreamPeerByteIo { - m := metricNginxHTTPUpstreamPeerByteIo{config: cfg} - if cfg.Enabled { - m.data = pmetric.NewMetric() - m.init() - } - return m -} - -type metricNginxHTTPUpstreamPeerConnectionsCount struct { - data pmetric.Metric // data buffer for generated metric. - config MetricConfig // metric config provided by user. - capacity int // max observed number of data points added to the metric. -} - -// init fills nginx.http.upstream.peer.connections.count metric with initial data. -func (m *metricNginxHTTPUpstreamPeerConnectionsCount) init() { - m.data.SetName("nginx.http.upstream.peer.connections.count") +// init fills nginx.http.upstream.peer.connection.count metric with initial data. +func (m *metricNginxHTTPUpstreamPeerConnectionCount) init() { + m.data.SetName("nginx.http.upstream.peer.connection.count") m.data.SetDescription("The average number of active connections per HTTP upstream peer.") m.data.SetUnit("connections") m.data.SetEmptyGauge() m.data.Gauge().DataPoints().EnsureCapacity(m.capacity) } -func (m *metricNginxHTTPUpstreamPeerConnectionsCount) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxZoneNameAttributeValue string, nginxUpstreamNameAttributeValue string, nginxPeerAddressAttributeValue string, nginxPeerNameAttributeValue string) { +func (m *metricNginxHTTPUpstreamPeerConnectionCount) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxZoneNameAttributeValue string, nginxUpstreamNameAttributeValue string, nginxPeerAddressAttributeValue string, nginxPeerNameAttributeValue string) { if !m.config.Enabled { return } @@ -1427,14 +1370,14 @@ func (m *metricNginxHTTPUpstreamPeerConnectionsCount) recordDataPoint(start pcom } // updateCapacity saves max length of data point slices that will be used for the slice capacity. -func (m *metricNginxHTTPUpstreamPeerConnectionsCount) updateCapacity() { +func (m *metricNginxHTTPUpstreamPeerConnectionCount) updateCapacity() { if m.data.Gauge().DataPoints().Len() > m.capacity { m.capacity = m.data.Gauge().DataPoints().Len() } } // emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. -func (m *metricNginxHTTPUpstreamPeerConnectionsCount) emit(metrics pmetric.MetricSlice) { +func (m *metricNginxHTTPUpstreamPeerConnectionCount) emit(metrics pmetric.MetricSlice) { if m.config.Enabled && m.data.Gauge().DataPoints().Len() > 0 { m.updateCapacity() m.data.MoveTo(metrics.AppendEmpty()) @@ -1442,8 +1385,8 @@ func (m *metricNginxHTTPUpstreamPeerConnectionsCount) emit(metrics pmetric.Metri } } -func newMetricNginxHTTPUpstreamPeerConnectionsCount(cfg MetricConfig) metricNginxHTTPUpstreamPeerConnectionsCount { - m := metricNginxHTTPUpstreamPeerConnectionsCount{config: cfg} +func newMetricNginxHTTPUpstreamPeerConnectionCount(cfg MetricConfig) metricNginxHTTPUpstreamPeerConnectionCount { + m := metricNginxHTTPUpstreamPeerConnectionCount{config: cfg} if cfg.Enabled { m.data = pmetric.NewMetric() m.init() @@ -1515,15 +1458,17 @@ func (m *metricNginxHTTPUpstreamPeerFails) init() { m.data.SetName("nginx.http.upstream.peer.fails") m.data.SetDescription("The total number of unsuccessful attempts to communicate with the HTTP upstream peer.") m.data.SetUnit("attempts") - m.data.SetEmptyGauge() - m.data.Gauge().DataPoints().EnsureCapacity(m.capacity) + m.data.SetEmptySum() + m.data.Sum().SetIsMonotonic(true) + m.data.Sum().SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) + m.data.Sum().DataPoints().EnsureCapacity(m.capacity) } func (m *metricNginxHTTPUpstreamPeerFails) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxZoneNameAttributeValue string, nginxUpstreamNameAttributeValue string, nginxPeerAddressAttributeValue string, nginxPeerNameAttributeValue string) { if !m.config.Enabled { return } - dp := m.data.Gauge().DataPoints().AppendEmpty() + dp := m.data.Sum().DataPoints().AppendEmpty() dp.SetStartTimestamp(start) dp.SetTimestamp(ts) dp.SetIntValue(val) @@ -1535,14 +1480,14 @@ func (m *metricNginxHTTPUpstreamPeerFails) recordDataPoint(start pcommon.Timesta // updateCapacity saves max length of data point slices that will be used for the slice capacity. func (m *metricNginxHTTPUpstreamPeerFails) updateCapacity() { - if m.data.Gauge().DataPoints().Len() > m.capacity { - m.capacity = m.data.Gauge().DataPoints().Len() + if m.data.Sum().DataPoints().Len() > m.capacity { + m.capacity = m.data.Sum().DataPoints().Len() } } // emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. func (m *metricNginxHTTPUpstreamPeerFails) emit(metrics pmetric.MetricSlice) { - if m.config.Enabled && m.data.Gauge().DataPoints().Len() > 0 { + if m.config.Enabled && m.data.Sum().DataPoints().Len() > 0 { m.updateCapacity() m.data.MoveTo(metrics.AppendEmpty()) m.init() @@ -1669,6 +1614,63 @@ func newMetricNginxHTTPUpstreamPeerHealthChecks(cfg MetricConfig) metricNginxHTT return m } +type metricNginxHTTPUpstreamPeerIo struct { + data pmetric.Metric // data buffer for generated metric. + config MetricConfig // metric config provided by user. + capacity int // max observed number of data points added to the metric. +} + +// init fills nginx.http.upstream.peer.io metric with initial data. +func (m *metricNginxHTTPUpstreamPeerIo) init() { + m.data.SetName("nginx.http.upstream.peer.io") + m.data.SetDescription("The total number of byte IO per HTTP upstream peer.") + m.data.SetUnit("bytes") + m.data.SetEmptySum() + m.data.Sum().SetIsMonotonic(true) + m.data.Sum().SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) + m.data.Sum().DataPoints().EnsureCapacity(m.capacity) +} + +func (m *metricNginxHTTPUpstreamPeerIo) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxIoDirectionAttributeValue string, nginxZoneNameAttributeValue string, nginxUpstreamNameAttributeValue string, nginxPeerAddressAttributeValue string, nginxPeerNameAttributeValue string) { + if !m.config.Enabled { + return + } + dp := m.data.Sum().DataPoints().AppendEmpty() + dp.SetStartTimestamp(start) + dp.SetTimestamp(ts) + dp.SetIntValue(val) + dp.Attributes().PutStr("nginx.io.direction", nginxIoDirectionAttributeValue) + dp.Attributes().PutStr("nginx.zone.name", nginxZoneNameAttributeValue) + dp.Attributes().PutStr("nginx.upstream.name", nginxUpstreamNameAttributeValue) + dp.Attributes().PutStr("nginx.peer.address", nginxPeerAddressAttributeValue) + dp.Attributes().PutStr("nginx.peer.name", nginxPeerNameAttributeValue) +} + +// updateCapacity saves max length of data point slices that will be used for the slice capacity. +func (m *metricNginxHTTPUpstreamPeerIo) updateCapacity() { + if m.data.Sum().DataPoints().Len() > m.capacity { + m.capacity = m.data.Sum().DataPoints().Len() + } +} + +// emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. +func (m *metricNginxHTTPUpstreamPeerIo) emit(metrics pmetric.MetricSlice) { + if m.config.Enabled && m.data.Sum().DataPoints().Len() > 0 { + m.updateCapacity() + m.data.MoveTo(metrics.AppendEmpty()) + m.init() + } +} + +func newMetricNginxHTTPUpstreamPeerIo(cfg MetricConfig) metricNginxHTTPUpstreamPeerIo { + m := metricNginxHTTPUpstreamPeerIo{config: cfg} + if cfg.Enabled { + m.data = pmetric.NewMetric() + m.init() + } + return m +} + type metricNginxHTTPUpstreamPeerRequests struct { data pmetric.Metric // data buffer for generated metric. config MetricConfig // metric config provided by user. @@ -2627,24 +2629,24 @@ func newMetricNginxSslHandshakes(cfg MetricConfig) metricNginxSslHandshakes { return m } -type metricNginxStreamByteIo struct { +type metricNginxStreamConnectionAccepted struct { data pmetric.Metric // data buffer for generated metric. config MetricConfig // metric config provided by user. capacity int // max observed number of data points added to the metric. } -// init fills nginx.stream.byte.io metric with initial data. -func (m *metricNginxStreamByteIo) init() { - m.data.SetName("nginx.stream.byte.io") - m.data.SetDescription("The total number of Stream byte IO.") - m.data.SetUnit("bytes") +// init fills nginx.stream.connection.accepted metric with initial data. +func (m *metricNginxStreamConnectionAccepted) init() { + m.data.SetName("nginx.stream.connection.accepted") + m.data.SetDescription("The total number of connections accepted from clients.") + m.data.SetUnit("connections") m.data.SetEmptySum() m.data.Sum().SetIsMonotonic(true) m.data.Sum().SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) m.data.Sum().DataPoints().EnsureCapacity(m.capacity) } -func (m *metricNginxStreamByteIo) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxByteIoDirectionAttributeValue string, nginxZoneNameAttributeValue string) { +func (m *metricNginxStreamConnectionAccepted) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxZoneNameAttributeValue string) { if !m.config.Enabled { return } @@ -2652,19 +2654,18 @@ func (m *metricNginxStreamByteIo) recordDataPoint(start pcommon.Timestamp, ts pc dp.SetStartTimestamp(start) dp.SetTimestamp(ts) dp.SetIntValue(val) - dp.Attributes().PutStr("nginx.byte.io.direction", nginxByteIoDirectionAttributeValue) dp.Attributes().PutStr("nginx.zone.name", nginxZoneNameAttributeValue) } // updateCapacity saves max length of data point slices that will be used for the slice capacity. -func (m *metricNginxStreamByteIo) updateCapacity() { +func (m *metricNginxStreamConnectionAccepted) updateCapacity() { if m.data.Sum().DataPoints().Len() > m.capacity { m.capacity = m.data.Sum().DataPoints().Len() } } // emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. -func (m *metricNginxStreamByteIo) emit(metrics pmetric.MetricSlice) { +func (m *metricNginxStreamConnectionAccepted) emit(metrics pmetric.MetricSlice) { if m.config.Enabled && m.data.Sum().DataPoints().Len() > 0 { m.updateCapacity() m.data.MoveTo(metrics.AppendEmpty()) @@ -2672,8 +2673,8 @@ func (m *metricNginxStreamByteIo) emit(metrics pmetric.MetricSlice) { } } -func newMetricNginxStreamByteIo(cfg MetricConfig) metricNginxStreamByteIo { - m := metricNginxStreamByteIo{config: cfg} +func newMetricNginxStreamConnectionAccepted(cfg MetricConfig) metricNginxStreamConnectionAccepted { + m := metricNginxStreamConnectionAccepted{config: cfg} if cfg.Enabled { m.data = pmetric.NewMetric() m.init() @@ -2681,16 +2682,16 @@ func newMetricNginxStreamByteIo(cfg MetricConfig) metricNginxStreamByteIo { return m } -type metricNginxStreamConnectionsAccepted struct { +type metricNginxStreamConnectionDiscarded struct { data pmetric.Metric // data buffer for generated metric. config MetricConfig // metric config provided by user. capacity int // max observed number of data points added to the metric. } -// init fills nginx.stream.connections.accepted metric with initial data. -func (m *metricNginxStreamConnectionsAccepted) init() { - m.data.SetName("nginx.stream.connections.accepted") - m.data.SetDescription("The total number of connections accepted from clients.") +// init fills nginx.stream.connection.discarded metric with initial data. +func (m *metricNginxStreamConnectionDiscarded) init() { + m.data.SetName("nginx.stream.connection.discarded") + m.data.SetDescription("Total number of connections completed without creating a session.") m.data.SetUnit("connections") m.data.SetEmptySum() m.data.Sum().SetIsMonotonic(true) @@ -2698,7 +2699,7 @@ func (m *metricNginxStreamConnectionsAccepted) init() { m.data.Sum().DataPoints().EnsureCapacity(m.capacity) } -func (m *metricNginxStreamConnectionsAccepted) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxZoneNameAttributeValue string) { +func (m *metricNginxStreamConnectionDiscarded) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxZoneNameAttributeValue string) { if !m.config.Enabled { return } @@ -2710,14 +2711,14 @@ func (m *metricNginxStreamConnectionsAccepted) recordDataPoint(start pcommon.Tim } // updateCapacity saves max length of data point slices that will be used for the slice capacity. -func (m *metricNginxStreamConnectionsAccepted) updateCapacity() { +func (m *metricNginxStreamConnectionDiscarded) updateCapacity() { if m.data.Sum().DataPoints().Len() > m.capacity { m.capacity = m.data.Sum().DataPoints().Len() } } // emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. -func (m *metricNginxStreamConnectionsAccepted) emit(metrics pmetric.MetricSlice) { +func (m *metricNginxStreamConnectionDiscarded) emit(metrics pmetric.MetricSlice) { if m.config.Enabled && m.data.Sum().DataPoints().Len() > 0 { m.updateCapacity() m.data.MoveTo(metrics.AppendEmpty()) @@ -2725,8 +2726,8 @@ func (m *metricNginxStreamConnectionsAccepted) emit(metrics pmetric.MetricSlice) } } -func newMetricNginxStreamConnectionsAccepted(cfg MetricConfig) metricNginxStreamConnectionsAccepted { - m := metricNginxStreamConnectionsAccepted{config: cfg} +func newMetricNginxStreamConnectionDiscarded(cfg MetricConfig) metricNginxStreamConnectionDiscarded { + m := metricNginxStreamConnectionDiscarded{config: cfg} if cfg.Enabled { m.data = pmetric.NewMetric() m.init() @@ -2734,28 +2735,26 @@ func newMetricNginxStreamConnectionsAccepted(cfg MetricConfig) metricNginxStream return m } -type metricNginxStreamConnectionsDiscarded struct { +type metricNginxStreamConnectionProcessingCount struct { data pmetric.Metric // data buffer for generated metric. config MetricConfig // metric config provided by user. capacity int // max observed number of data points added to the metric. } -// init fills nginx.stream.connections.discarded metric with initial data. -func (m *metricNginxStreamConnectionsDiscarded) init() { - m.data.SetName("nginx.stream.connections.discarded") - m.data.SetDescription("Total number of connections completed without creating a session.") +// init fills nginx.stream.connection.processing.count metric with initial data. +func (m *metricNginxStreamConnectionProcessingCount) init() { + m.data.SetName("nginx.stream.connection.processing.count") + m.data.SetDescription("The number of client connections that are currently being processed.") m.data.SetUnit("connections") - m.data.SetEmptySum() - m.data.Sum().SetIsMonotonic(true) - m.data.Sum().SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) - m.data.Sum().DataPoints().EnsureCapacity(m.capacity) + m.data.SetEmptyGauge() + m.data.Gauge().DataPoints().EnsureCapacity(m.capacity) } -func (m *metricNginxStreamConnectionsDiscarded) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxZoneNameAttributeValue string) { +func (m *metricNginxStreamConnectionProcessingCount) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxZoneNameAttributeValue string) { if !m.config.Enabled { return } - dp := m.data.Sum().DataPoints().AppendEmpty() + dp := m.data.Gauge().DataPoints().AppendEmpty() dp.SetStartTimestamp(start) dp.SetTimestamp(ts) dp.SetIntValue(val) @@ -2763,23 +2762,23 @@ func (m *metricNginxStreamConnectionsDiscarded) recordDataPoint(start pcommon.Ti } // updateCapacity saves max length of data point slices that will be used for the slice capacity. -func (m *metricNginxStreamConnectionsDiscarded) updateCapacity() { - if m.data.Sum().DataPoints().Len() > m.capacity { - m.capacity = m.data.Sum().DataPoints().Len() +func (m *metricNginxStreamConnectionProcessingCount) updateCapacity() { + if m.data.Gauge().DataPoints().Len() > m.capacity { + m.capacity = m.data.Gauge().DataPoints().Len() } } // emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. -func (m *metricNginxStreamConnectionsDiscarded) emit(metrics pmetric.MetricSlice) { - if m.config.Enabled && m.data.Sum().DataPoints().Len() > 0 { +func (m *metricNginxStreamConnectionProcessingCount) emit(metrics pmetric.MetricSlice) { + if m.config.Enabled && m.data.Gauge().DataPoints().Len() > 0 { m.updateCapacity() m.data.MoveTo(metrics.AppendEmpty()) m.init() } } -func newMetricNginxStreamConnectionsDiscarded(cfg MetricConfig) metricNginxStreamConnectionsDiscarded { - m := metricNginxStreamConnectionsDiscarded{config: cfg} +func newMetricNginxStreamConnectionProcessingCount(cfg MetricConfig) metricNginxStreamConnectionProcessingCount { + m := metricNginxStreamConnectionProcessingCount{config: cfg} if cfg.Enabled { m.data = pmetric.NewMetric() m.init() @@ -2787,50 +2786,53 @@ func newMetricNginxStreamConnectionsDiscarded(cfg MetricConfig) metricNginxStrea return m } -type metricNginxStreamConnectionsProcessingCount struct { +type metricNginxStreamIo struct { data pmetric.Metric // data buffer for generated metric. config MetricConfig // metric config provided by user. capacity int // max observed number of data points added to the metric. } -// init fills nginx.stream.connections.processing.count metric with initial data. -func (m *metricNginxStreamConnectionsProcessingCount) init() { - m.data.SetName("nginx.stream.connections.processing.count") - m.data.SetDescription("The number of client connections that are currently being processed.") - m.data.SetUnit("connections") - m.data.SetEmptyGauge() - m.data.Gauge().DataPoints().EnsureCapacity(m.capacity) +// init fills nginx.stream.io metric with initial data. +func (m *metricNginxStreamIo) init() { + m.data.SetName("nginx.stream.io") + m.data.SetDescription("The total number of Stream byte IO.") + m.data.SetUnit("bytes") + m.data.SetEmptySum() + m.data.Sum().SetIsMonotonic(true) + m.data.Sum().SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) + m.data.Sum().DataPoints().EnsureCapacity(m.capacity) } -func (m *metricNginxStreamConnectionsProcessingCount) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxZoneNameAttributeValue string) { +func (m *metricNginxStreamIo) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxIoDirectionAttributeValue string, nginxZoneNameAttributeValue string) { if !m.config.Enabled { return } - dp := m.data.Gauge().DataPoints().AppendEmpty() + dp := m.data.Sum().DataPoints().AppendEmpty() dp.SetStartTimestamp(start) dp.SetTimestamp(ts) dp.SetIntValue(val) + dp.Attributes().PutStr("nginx.io.direction", nginxIoDirectionAttributeValue) dp.Attributes().PutStr("nginx.zone.name", nginxZoneNameAttributeValue) } // updateCapacity saves max length of data point slices that will be used for the slice capacity. -func (m *metricNginxStreamConnectionsProcessingCount) updateCapacity() { - if m.data.Gauge().DataPoints().Len() > m.capacity { - m.capacity = m.data.Gauge().DataPoints().Len() +func (m *metricNginxStreamIo) updateCapacity() { + if m.data.Sum().DataPoints().Len() > m.capacity { + m.capacity = m.data.Sum().DataPoints().Len() } } // emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. -func (m *metricNginxStreamConnectionsProcessingCount) emit(metrics pmetric.MetricSlice) { - if m.config.Enabled && m.data.Gauge().DataPoints().Len() > 0 { +func (m *metricNginxStreamIo) emit(metrics pmetric.MetricSlice) { + if m.config.Enabled && m.data.Sum().DataPoints().Len() > 0 { m.updateCapacity() m.data.MoveTo(metrics.AppendEmpty()) m.init() } } -func newMetricNginxStreamConnectionsProcessingCount(cfg MetricConfig) metricNginxStreamConnectionsProcessingCount { - m := metricNginxStreamConnectionsProcessingCount{config: cfg} +func newMetricNginxStreamIo(cfg MetricConfig) metricNginxStreamIo { + m := metricNginxStreamIo{config: cfg} if cfg.Enabled { m.data = pmetric.NewMetric() m.init() @@ -2892,32 +2894,29 @@ func newMetricNginxStreamSessionStatus(cfg MetricConfig) metricNginxStreamSessio return m } -type metricNginxStreamUpstreamPeerByteIo struct { +type metricNginxStreamUpstreamPeerConnectionCount struct { data pmetric.Metric // data buffer for generated metric. config MetricConfig // metric config provided by user. capacity int // max observed number of data points added to the metric. } -// init fills nginx.stream.upstream.peer.byte.io metric with initial data. -func (m *metricNginxStreamUpstreamPeerByteIo) init() { - m.data.SetName("nginx.stream.upstream.peer.byte.io") - m.data.SetDescription("The total number of Stream Upstream Peer byte IO.") - m.data.SetUnit("bytes") - m.data.SetEmptySum() - m.data.Sum().SetIsMonotonic(true) - m.data.Sum().SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) - m.data.Sum().DataPoints().EnsureCapacity(m.capacity) +// init fills nginx.stream.upstream.peer.connection.count metric with initial data. +func (m *metricNginxStreamUpstreamPeerConnectionCount) init() { + m.data.SetName("nginx.stream.upstream.peer.connection.count") + m.data.SetDescription("The current number of Stream Upstream Peer connections.") + m.data.SetUnit("connections") + m.data.SetEmptyGauge() + m.data.Gauge().DataPoints().EnsureCapacity(m.capacity) } -func (m *metricNginxStreamUpstreamPeerByteIo) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxByteIoDirectionAttributeValue string, nginxZoneNameAttributeValue string, nginxUpstreamNameAttributeValue string, nginxPeerAddressAttributeValue string, nginxPeerNameAttributeValue string) { +func (m *metricNginxStreamUpstreamPeerConnectionCount) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxZoneNameAttributeValue string, nginxUpstreamNameAttributeValue string, nginxPeerAddressAttributeValue string, nginxPeerNameAttributeValue string) { if !m.config.Enabled { return } - dp := m.data.Sum().DataPoints().AppendEmpty() + dp := m.data.Gauge().DataPoints().AppendEmpty() dp.SetStartTimestamp(start) dp.SetTimestamp(ts) dp.SetIntValue(val) - dp.Attributes().PutStr("nginx.byte.io.direction", nginxByteIoDirectionAttributeValue) dp.Attributes().PutStr("nginx.zone.name", nginxZoneNameAttributeValue) dp.Attributes().PutStr("nginx.upstream.name", nginxUpstreamNameAttributeValue) dp.Attributes().PutStr("nginx.peer.address", nginxPeerAddressAttributeValue) @@ -2925,23 +2924,23 @@ func (m *metricNginxStreamUpstreamPeerByteIo) recordDataPoint(start pcommon.Time } // updateCapacity saves max length of data point slices that will be used for the slice capacity. -func (m *metricNginxStreamUpstreamPeerByteIo) updateCapacity() { - if m.data.Sum().DataPoints().Len() > m.capacity { - m.capacity = m.data.Sum().DataPoints().Len() +func (m *metricNginxStreamUpstreamPeerConnectionCount) updateCapacity() { + if m.data.Gauge().DataPoints().Len() > m.capacity { + m.capacity = m.data.Gauge().DataPoints().Len() } } // emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. -func (m *metricNginxStreamUpstreamPeerByteIo) emit(metrics pmetric.MetricSlice) { - if m.config.Enabled && m.data.Sum().DataPoints().Len() > 0 { +func (m *metricNginxStreamUpstreamPeerConnectionCount) emit(metrics pmetric.MetricSlice) { + if m.config.Enabled && m.data.Gauge().DataPoints().Len() > 0 { m.updateCapacity() m.data.MoveTo(metrics.AppendEmpty()) m.init() } } -func newMetricNginxStreamUpstreamPeerByteIo(cfg MetricConfig) metricNginxStreamUpstreamPeerByteIo { - m := metricNginxStreamUpstreamPeerByteIo{config: cfg} +func newMetricNginxStreamUpstreamPeerConnectionCount(cfg MetricConfig) metricNginxStreamUpstreamPeerConnectionCount { + m := metricNginxStreamUpstreamPeerConnectionCount{config: cfg} if cfg.Enabled { m.data = pmetric.NewMetric() m.init() @@ -2949,28 +2948,26 @@ func newMetricNginxStreamUpstreamPeerByteIo(cfg MetricConfig) metricNginxStreamU return m } -type metricNginxStreamUpstreamPeerConnections struct { +type metricNginxStreamUpstreamPeerConnectionTime struct { data pmetric.Metric // data buffer for generated metric. config MetricConfig // metric config provided by user. capacity int // max observed number of data points added to the metric. } -// init fills nginx.stream.upstream.peer.connections metric with initial data. -func (m *metricNginxStreamUpstreamPeerConnections) init() { - m.data.SetName("nginx.stream.upstream.peer.connections") - m.data.SetDescription("The total number of client connections forwarded to this stream upstream peer.") - m.data.SetUnit("connections") - m.data.SetEmptySum() - m.data.Sum().SetIsMonotonic(true) - m.data.Sum().SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) - m.data.Sum().DataPoints().EnsureCapacity(m.capacity) +// init fills nginx.stream.upstream.peer.connection.time metric with initial data. +func (m *metricNginxStreamUpstreamPeerConnectionTime) init() { + m.data.SetName("nginx.stream.upstream.peer.connection.time") + m.data.SetDescription("The average time to connect to the stream upstream peer.") + m.data.SetUnit("ms") + m.data.SetEmptyGauge() + m.data.Gauge().DataPoints().EnsureCapacity(m.capacity) } -func (m *metricNginxStreamUpstreamPeerConnections) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxZoneNameAttributeValue string, nginxUpstreamNameAttributeValue string, nginxPeerAddressAttributeValue string, nginxPeerNameAttributeValue string) { +func (m *metricNginxStreamUpstreamPeerConnectionTime) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxZoneNameAttributeValue string, nginxUpstreamNameAttributeValue string, nginxPeerAddressAttributeValue string, nginxPeerNameAttributeValue string) { if !m.config.Enabled { return } - dp := m.data.Sum().DataPoints().AppendEmpty() + dp := m.data.Gauge().DataPoints().AppendEmpty() dp.SetStartTimestamp(start) dp.SetTimestamp(ts) dp.SetIntValue(val) @@ -2981,23 +2978,23 @@ func (m *metricNginxStreamUpstreamPeerConnections) recordDataPoint(start pcommon } // updateCapacity saves max length of data point slices that will be used for the slice capacity. -func (m *metricNginxStreamUpstreamPeerConnections) updateCapacity() { - if m.data.Sum().DataPoints().Len() > m.capacity { - m.capacity = m.data.Sum().DataPoints().Len() +func (m *metricNginxStreamUpstreamPeerConnectionTime) updateCapacity() { + if m.data.Gauge().DataPoints().Len() > m.capacity { + m.capacity = m.data.Gauge().DataPoints().Len() } } // emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. -func (m *metricNginxStreamUpstreamPeerConnections) emit(metrics pmetric.MetricSlice) { - if m.config.Enabled && m.data.Sum().DataPoints().Len() > 0 { +func (m *metricNginxStreamUpstreamPeerConnectionTime) emit(metrics pmetric.MetricSlice) { + if m.config.Enabled && m.data.Gauge().DataPoints().Len() > 0 { m.updateCapacity() m.data.MoveTo(metrics.AppendEmpty()) m.init() } } -func newMetricNginxStreamUpstreamPeerConnections(cfg MetricConfig) metricNginxStreamUpstreamPeerConnections { - m := metricNginxStreamUpstreamPeerConnections{config: cfg} +func newMetricNginxStreamUpstreamPeerConnectionTime(cfg MetricConfig) metricNginxStreamUpstreamPeerConnectionTime { + m := metricNginxStreamUpstreamPeerConnectionTime{config: cfg} if cfg.Enabled { m.data = pmetric.NewMetric() m.init() @@ -3005,26 +3002,28 @@ func newMetricNginxStreamUpstreamPeerConnections(cfg MetricConfig) metricNginxSt return m } -type metricNginxStreamUpstreamPeerConnectionsCount struct { +type metricNginxStreamUpstreamPeerConnections struct { data pmetric.Metric // data buffer for generated metric. config MetricConfig // metric config provided by user. capacity int // max observed number of data points added to the metric. } -// init fills nginx.stream.upstream.peer.connections.count metric with initial data. -func (m *metricNginxStreamUpstreamPeerConnectionsCount) init() { - m.data.SetName("nginx.stream.upstream.peer.connections.count") - m.data.SetDescription("The current number of Stream Upstream Peer connections.") +// init fills nginx.stream.upstream.peer.connections metric with initial data. +func (m *metricNginxStreamUpstreamPeerConnections) init() { + m.data.SetName("nginx.stream.upstream.peer.connections") + m.data.SetDescription("The total number of client connections forwarded to this stream upstream peer.") m.data.SetUnit("connections") - m.data.SetEmptyGauge() - m.data.Gauge().DataPoints().EnsureCapacity(m.capacity) + m.data.SetEmptySum() + m.data.Sum().SetIsMonotonic(true) + m.data.Sum().SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) + m.data.Sum().DataPoints().EnsureCapacity(m.capacity) } -func (m *metricNginxStreamUpstreamPeerConnectionsCount) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxZoneNameAttributeValue string, nginxUpstreamNameAttributeValue string, nginxPeerAddressAttributeValue string, nginxPeerNameAttributeValue string) { +func (m *metricNginxStreamUpstreamPeerConnections) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxZoneNameAttributeValue string, nginxUpstreamNameAttributeValue string, nginxPeerAddressAttributeValue string, nginxPeerNameAttributeValue string) { if !m.config.Enabled { return } - dp := m.data.Gauge().DataPoints().AppendEmpty() + dp := m.data.Sum().DataPoints().AppendEmpty() dp.SetStartTimestamp(start) dp.SetTimestamp(ts) dp.SetIntValue(val) @@ -3035,23 +3034,23 @@ func (m *metricNginxStreamUpstreamPeerConnectionsCount) recordDataPoint(start pc } // updateCapacity saves max length of data point slices that will be used for the slice capacity. -func (m *metricNginxStreamUpstreamPeerConnectionsCount) updateCapacity() { - if m.data.Gauge().DataPoints().Len() > m.capacity { - m.capacity = m.data.Gauge().DataPoints().Len() +func (m *metricNginxStreamUpstreamPeerConnections) updateCapacity() { + if m.data.Sum().DataPoints().Len() > m.capacity { + m.capacity = m.data.Sum().DataPoints().Len() } } // emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. -func (m *metricNginxStreamUpstreamPeerConnectionsCount) emit(metrics pmetric.MetricSlice) { - if m.config.Enabled && m.data.Gauge().DataPoints().Len() > 0 { +func (m *metricNginxStreamUpstreamPeerConnections) emit(metrics pmetric.MetricSlice) { + if m.config.Enabled && m.data.Sum().DataPoints().Len() > 0 { m.updateCapacity() m.data.MoveTo(metrics.AppendEmpty()) m.init() } } -func newMetricNginxStreamUpstreamPeerConnectionsCount(cfg MetricConfig) metricNginxStreamUpstreamPeerConnectionsCount { - m := metricNginxStreamUpstreamPeerConnectionsCount{config: cfg} +func newMetricNginxStreamUpstreamPeerConnections(cfg MetricConfig) metricNginxStreamUpstreamPeerConnections { + m := metricNginxStreamUpstreamPeerConnections{config: cfg} if cfg.Enabled { m.data = pmetric.NewMetric() m.init() @@ -3059,22 +3058,22 @@ func newMetricNginxStreamUpstreamPeerConnectionsCount(cfg MetricConfig) metricNg return m } -type metricNginxStreamUpstreamPeerConnectionsTime struct { +type metricNginxStreamUpstreamPeerCount struct { data pmetric.Metric // data buffer for generated metric. config MetricConfig // metric config provided by user. capacity int // max observed number of data points added to the metric. } -// init fills nginx.stream.upstream.peer.connections.time metric with initial data. -func (m *metricNginxStreamUpstreamPeerConnectionsTime) init() { - m.data.SetName("nginx.stream.upstream.peer.connections.time") - m.data.SetDescription("The average time to connect to the stream upstream peer.") - m.data.SetUnit("ms") +// init fills nginx.stream.upstream.peer.count metric with initial data. +func (m *metricNginxStreamUpstreamPeerCount) init() { + m.data.SetName("nginx.stream.upstream.peer.count") + m.data.SetDescription("The current number of stream upstream peers grouped by state.") + m.data.SetUnit("peers") m.data.SetEmptyGauge() m.data.Gauge().DataPoints().EnsureCapacity(m.capacity) } -func (m *metricNginxStreamUpstreamPeerConnectionsTime) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxZoneNameAttributeValue string, nginxUpstreamNameAttributeValue string, nginxPeerAddressAttributeValue string, nginxPeerNameAttributeValue string) { +func (m *metricNginxStreamUpstreamPeerCount) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxPeerStateAttributeValue string, nginxZoneNameAttributeValue string, nginxUpstreamNameAttributeValue string) { if !m.config.Enabled { return } @@ -3082,21 +3081,20 @@ func (m *metricNginxStreamUpstreamPeerConnectionsTime) recordDataPoint(start pco dp.SetStartTimestamp(start) dp.SetTimestamp(ts) dp.SetIntValue(val) + dp.Attributes().PutStr("nginx.peer.state", nginxPeerStateAttributeValue) dp.Attributes().PutStr("nginx.zone.name", nginxZoneNameAttributeValue) dp.Attributes().PutStr("nginx.upstream.name", nginxUpstreamNameAttributeValue) - dp.Attributes().PutStr("nginx.peer.address", nginxPeerAddressAttributeValue) - dp.Attributes().PutStr("nginx.peer.name", nginxPeerNameAttributeValue) } // updateCapacity saves max length of data point slices that will be used for the slice capacity. -func (m *metricNginxStreamUpstreamPeerConnectionsTime) updateCapacity() { +func (m *metricNginxStreamUpstreamPeerCount) updateCapacity() { if m.data.Gauge().DataPoints().Len() > m.capacity { m.capacity = m.data.Gauge().DataPoints().Len() } } // emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. -func (m *metricNginxStreamUpstreamPeerConnectionsTime) emit(metrics pmetric.MetricSlice) { +func (m *metricNginxStreamUpstreamPeerCount) emit(metrics pmetric.MetricSlice) { if m.config.Enabled && m.data.Gauge().DataPoints().Len() > 0 { m.updateCapacity() m.data.MoveTo(metrics.AppendEmpty()) @@ -3104,8 +3102,8 @@ func (m *metricNginxStreamUpstreamPeerConnectionsTime) emit(metrics pmetric.Metr } } -func newMetricNginxStreamUpstreamPeerConnectionsTime(cfg MetricConfig) metricNginxStreamUpstreamPeerConnectionsTime { - m := metricNginxStreamUpstreamPeerConnectionsTime{config: cfg} +func newMetricNginxStreamUpstreamPeerCount(cfg MetricConfig) metricNginxStreamUpstreamPeerCount { + m := metricNginxStreamUpstreamPeerCount{config: cfg} if cfg.Enabled { m.data = pmetric.NewMetric() m.init() @@ -3113,24 +3111,24 @@ func newMetricNginxStreamUpstreamPeerConnectionsTime(cfg MetricConfig) metricNgi return m } -type metricNginxStreamUpstreamPeerCount struct { +type metricNginxStreamUpstreamPeerFails struct { data pmetric.Metric // data buffer for generated metric. config MetricConfig // metric config provided by user. capacity int // max observed number of data points added to the metric. } -// init fills nginx.stream.upstream.peer.count metric with initial data. -func (m *metricNginxStreamUpstreamPeerCount) init() { - m.data.SetName("nginx.stream.upstream.peer.count") - m.data.SetDescription("The total number of stream upstream peers grouped by state.") - m.data.SetUnit("peers") +// init fills nginx.stream.upstream.peer.fails metric with initial data. +func (m *metricNginxStreamUpstreamPeerFails) init() { + m.data.SetName("nginx.stream.upstream.peer.fails") + m.data.SetDescription("The total number of unsuccessful attempts to communicate with the stream upstream peer.") + m.data.SetUnit("attempts") m.data.SetEmptySum() m.data.Sum().SetIsMonotonic(true) m.data.Sum().SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) m.data.Sum().DataPoints().EnsureCapacity(m.capacity) } -func (m *metricNginxStreamUpstreamPeerCount) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxPeerStateAttributeValue string, nginxZoneNameAttributeValue string, nginxUpstreamNameAttributeValue string) { +func (m *metricNginxStreamUpstreamPeerFails) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxZoneNameAttributeValue string, nginxUpstreamNameAttributeValue string, nginxPeerAddressAttributeValue string) { if !m.config.Enabled { return } @@ -3138,20 +3136,20 @@ func (m *metricNginxStreamUpstreamPeerCount) recordDataPoint(start pcommon.Times dp.SetStartTimestamp(start) dp.SetTimestamp(ts) dp.SetIntValue(val) - dp.Attributes().PutStr("nginx.peer.state", nginxPeerStateAttributeValue) dp.Attributes().PutStr("nginx.zone.name", nginxZoneNameAttributeValue) dp.Attributes().PutStr("nginx.upstream.name", nginxUpstreamNameAttributeValue) + dp.Attributes().PutStr("nginx.peer.address", nginxPeerAddressAttributeValue) } // updateCapacity saves max length of data point slices that will be used for the slice capacity. -func (m *metricNginxStreamUpstreamPeerCount) updateCapacity() { +func (m *metricNginxStreamUpstreamPeerFails) updateCapacity() { if m.data.Sum().DataPoints().Len() > m.capacity { m.capacity = m.data.Sum().DataPoints().Len() } } // emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. -func (m *metricNginxStreamUpstreamPeerCount) emit(metrics pmetric.MetricSlice) { +func (m *metricNginxStreamUpstreamPeerFails) emit(metrics pmetric.MetricSlice) { if m.config.Enabled && m.data.Sum().DataPoints().Len() > 0 { m.updateCapacity() m.data.MoveTo(metrics.AppendEmpty()) @@ -3159,8 +3157,8 @@ func (m *metricNginxStreamUpstreamPeerCount) emit(metrics pmetric.MetricSlice) { } } -func newMetricNginxStreamUpstreamPeerCount(cfg MetricConfig) metricNginxStreamUpstreamPeerCount { - m := metricNginxStreamUpstreamPeerCount{config: cfg} +func newMetricNginxStreamUpstreamPeerFails(cfg MetricConfig) metricNginxStreamUpstreamPeerFails { + m := metricNginxStreamUpstreamPeerFails{config: cfg} if cfg.Enabled { m.data = pmetric.NewMetric() m.init() @@ -3168,24 +3166,24 @@ func newMetricNginxStreamUpstreamPeerCount(cfg MetricConfig) metricNginxStreamUp return m } -type metricNginxStreamUpstreamPeerFails struct { +type metricNginxStreamUpstreamPeerHealthChecks struct { data pmetric.Metric // data buffer for generated metric. config MetricConfig // metric config provided by user. capacity int // max observed number of data points added to the metric. } -// init fills nginx.stream.upstream.peer.fails metric with initial data. -func (m *metricNginxStreamUpstreamPeerFails) init() { - m.data.SetName("nginx.stream.upstream.peer.fails") - m.data.SetDescription("The total number of unsuccessful attempts to communicate with the stream upstream peer.") - m.data.SetUnit("peers") +// init fills nginx.stream.upstream.peer.health_checks metric with initial data. +func (m *metricNginxStreamUpstreamPeerHealthChecks) init() { + m.data.SetName("nginx.stream.upstream.peer.health_checks") + m.data.SetDescription("The total number of health check requests made to the stream upstream peer.") + m.data.SetUnit("requests") m.data.SetEmptySum() m.data.Sum().SetIsMonotonic(true) m.data.Sum().SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) m.data.Sum().DataPoints().EnsureCapacity(m.capacity) } -func (m *metricNginxStreamUpstreamPeerFails) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxZoneNameAttributeValue string, nginxUpstreamNameAttributeValue string, nginxPeerAddressAttributeValue string) { +func (m *metricNginxStreamUpstreamPeerHealthChecks) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxHealthCheckAttributeValue string, nginxZoneNameAttributeValue string, nginxUpstreamNameAttributeValue string, nginxPeerAddressAttributeValue string, nginxPeerNameAttributeValue string) { if !m.config.Enabled { return } @@ -3193,20 +3191,22 @@ func (m *metricNginxStreamUpstreamPeerFails) recordDataPoint(start pcommon.Times dp.SetStartTimestamp(start) dp.SetTimestamp(ts) dp.SetIntValue(val) + dp.Attributes().PutStr("nginx.health_check", nginxHealthCheckAttributeValue) dp.Attributes().PutStr("nginx.zone.name", nginxZoneNameAttributeValue) dp.Attributes().PutStr("nginx.upstream.name", nginxUpstreamNameAttributeValue) dp.Attributes().PutStr("nginx.peer.address", nginxPeerAddressAttributeValue) + dp.Attributes().PutStr("nginx.peer.name", nginxPeerNameAttributeValue) } // updateCapacity saves max length of data point slices that will be used for the slice capacity. -func (m *metricNginxStreamUpstreamPeerFails) updateCapacity() { +func (m *metricNginxStreamUpstreamPeerHealthChecks) updateCapacity() { if m.data.Sum().DataPoints().Len() > m.capacity { m.capacity = m.data.Sum().DataPoints().Len() } } // emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. -func (m *metricNginxStreamUpstreamPeerFails) emit(metrics pmetric.MetricSlice) { +func (m *metricNginxStreamUpstreamPeerHealthChecks) emit(metrics pmetric.MetricSlice) { if m.config.Enabled && m.data.Sum().DataPoints().Len() > 0 { m.updateCapacity() m.data.MoveTo(metrics.AppendEmpty()) @@ -3214,8 +3214,8 @@ func (m *metricNginxStreamUpstreamPeerFails) emit(metrics pmetric.MetricSlice) { } } -func newMetricNginxStreamUpstreamPeerFails(cfg MetricConfig) metricNginxStreamUpstreamPeerFails { - m := metricNginxStreamUpstreamPeerFails{config: cfg} +func newMetricNginxStreamUpstreamPeerHealthChecks(cfg MetricConfig) metricNginxStreamUpstreamPeerHealthChecks { + m := metricNginxStreamUpstreamPeerHealthChecks{config: cfg} if cfg.Enabled { m.data = pmetric.NewMetric() m.init() @@ -3223,24 +3223,24 @@ func newMetricNginxStreamUpstreamPeerFails(cfg MetricConfig) metricNginxStreamUp return m } -type metricNginxStreamUpstreamPeerHealthChecks struct { +type metricNginxStreamUpstreamPeerIo struct { data pmetric.Metric // data buffer for generated metric. config MetricConfig // metric config provided by user. capacity int // max observed number of data points added to the metric. } -// init fills nginx.stream.upstream.peer.health_checks metric with initial data. -func (m *metricNginxStreamUpstreamPeerHealthChecks) init() { - m.data.SetName("nginx.stream.upstream.peer.health_checks") - m.data.SetDescription("The total number of health check requests made to the stream upstream peer.") - m.data.SetUnit("requests") +// init fills nginx.stream.upstream.peer.io metric with initial data. +func (m *metricNginxStreamUpstreamPeerIo) init() { + m.data.SetName("nginx.stream.upstream.peer.io") + m.data.SetDescription("The total number of Stream Upstream Peer byte IO.") + m.data.SetUnit("bytes") m.data.SetEmptySum() m.data.Sum().SetIsMonotonic(true) m.data.Sum().SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) m.data.Sum().DataPoints().EnsureCapacity(m.capacity) } -func (m *metricNginxStreamUpstreamPeerHealthChecks) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxHealthCheckAttributeValue string, nginxZoneNameAttributeValue string, nginxUpstreamNameAttributeValue string, nginxPeerAddressAttributeValue string, nginxPeerNameAttributeValue string) { +func (m *metricNginxStreamUpstreamPeerIo) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxIoDirectionAttributeValue string, nginxZoneNameAttributeValue string, nginxUpstreamNameAttributeValue string, nginxPeerAddressAttributeValue string, nginxPeerNameAttributeValue string) { if !m.config.Enabled { return } @@ -3248,7 +3248,7 @@ func (m *metricNginxStreamUpstreamPeerHealthChecks) recordDataPoint(start pcommo dp.SetStartTimestamp(start) dp.SetTimestamp(ts) dp.SetIntValue(val) - dp.Attributes().PutStr("nginx.health_check", nginxHealthCheckAttributeValue) + dp.Attributes().PutStr("nginx.io.direction", nginxIoDirectionAttributeValue) dp.Attributes().PutStr("nginx.zone.name", nginxZoneNameAttributeValue) dp.Attributes().PutStr("nginx.upstream.name", nginxUpstreamNameAttributeValue) dp.Attributes().PutStr("nginx.peer.address", nginxPeerAddressAttributeValue) @@ -3256,14 +3256,14 @@ func (m *metricNginxStreamUpstreamPeerHealthChecks) recordDataPoint(start pcommo } // updateCapacity saves max length of data point slices that will be used for the slice capacity. -func (m *metricNginxStreamUpstreamPeerHealthChecks) updateCapacity() { +func (m *metricNginxStreamUpstreamPeerIo) updateCapacity() { if m.data.Sum().DataPoints().Len() > m.capacity { m.capacity = m.data.Sum().DataPoints().Len() } } // emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. -func (m *metricNginxStreamUpstreamPeerHealthChecks) emit(metrics pmetric.MetricSlice) { +func (m *metricNginxStreamUpstreamPeerIo) emit(metrics pmetric.MetricSlice) { if m.config.Enabled && m.data.Sum().DataPoints().Len() > 0 { m.updateCapacity() m.data.MoveTo(metrics.AppendEmpty()) @@ -3271,8 +3271,8 @@ func (m *metricNginxStreamUpstreamPeerHealthChecks) emit(metrics pmetric.MetricS } } -func newMetricNginxStreamUpstreamPeerHealthChecks(cfg MetricConfig) metricNginxStreamUpstreamPeerHealthChecks { - m := metricNginxStreamUpstreamPeerHealthChecks{config: cfg} +func newMetricNginxStreamUpstreamPeerIo(cfg MetricConfig) metricNginxStreamUpstreamPeerIo { + m := metricNginxStreamUpstreamPeerIo{config: cfg} if cfg.Enabled { m.data = pmetric.NewMetric() m.init() @@ -3445,15 +3445,15 @@ func newMetricNginxStreamUpstreamPeerTtfbTime(cfg MetricConfig) metricNginxStrea return m } -type metricNginxStreamUpstreamPeerUnavailable struct { +type metricNginxStreamUpstreamPeerUnavailables struct { data pmetric.Metric // data buffer for generated metric. config MetricConfig // metric config provided by user. capacity int // max observed number of data points added to the metric. } -// init fills nginx.stream.upstream.peer.unavailable metric with initial data. -func (m *metricNginxStreamUpstreamPeerUnavailable) init() { - m.data.SetName("nginx.stream.upstream.peer.unavailable") +// init fills nginx.stream.upstream.peer.unavailables metric with initial data. +func (m *metricNginxStreamUpstreamPeerUnavailables) init() { + m.data.SetName("nginx.stream.upstream.peer.unavailables") m.data.SetDescription("How many times the server became unavailable for client connections (state “unavail”) due to the number of unsuccessful attempts reaching the max_fails threshold.") m.data.SetUnit("requests") m.data.SetEmptySum() @@ -3462,7 +3462,7 @@ func (m *metricNginxStreamUpstreamPeerUnavailable) init() { m.data.Sum().DataPoints().EnsureCapacity(m.capacity) } -func (m *metricNginxStreamUpstreamPeerUnavailable) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxZoneNameAttributeValue string, nginxUpstreamNameAttributeValue string, nginxPeerAddressAttributeValue string, nginxPeerNameAttributeValue string) { +func (m *metricNginxStreamUpstreamPeerUnavailables) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, nginxZoneNameAttributeValue string, nginxUpstreamNameAttributeValue string, nginxPeerAddressAttributeValue string, nginxPeerNameAttributeValue string) { if !m.config.Enabled { return } @@ -3477,14 +3477,14 @@ func (m *metricNginxStreamUpstreamPeerUnavailable) recordDataPoint(start pcommon } // updateCapacity saves max length of data point slices that will be used for the slice capacity. -func (m *metricNginxStreamUpstreamPeerUnavailable) updateCapacity() { +func (m *metricNginxStreamUpstreamPeerUnavailables) updateCapacity() { if m.data.Sum().DataPoints().Len() > m.capacity { m.capacity = m.data.Sum().DataPoints().Len() } } // emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. -func (m *metricNginxStreamUpstreamPeerUnavailable) emit(metrics pmetric.MetricSlice) { +func (m *metricNginxStreamUpstreamPeerUnavailables) emit(metrics pmetric.MetricSlice) { if m.config.Enabled && m.data.Sum().DataPoints().Len() > 0 { m.updateCapacity() m.data.MoveTo(metrics.AppendEmpty()) @@ -3492,8 +3492,8 @@ func (m *metricNginxStreamUpstreamPeerUnavailable) emit(metrics pmetric.MetricSl } } -func newMetricNginxStreamUpstreamPeerUnavailable(cfg MetricConfig) metricNginxStreamUpstreamPeerUnavailable { - m := metricNginxStreamUpstreamPeerUnavailable{config: cfg} +func newMetricNginxStreamUpstreamPeerUnavailables(cfg MetricConfig) metricNginxStreamUpstreamPeerUnavailables { + m := metricNginxStreamUpstreamPeerUnavailables{config: cfg} if cfg.Enabled { m.data = pmetric.NewMetric() m.init() @@ -3556,71 +3556,71 @@ func newMetricNginxStreamUpstreamZombieCount(cfg MetricConfig) metricNginxStream // MetricsBuilder provides an interface for scrapers to report metrics while taking care of all the transformations // required to produce metric representation defined in metadata and user config. type MetricsBuilder struct { - config MetricsBuilderConfig // config of the metrics builder. - startTime pcommon.Timestamp // start time that will be applied to all recorded data points. - metricsCapacity int // maximum observed number of metrics per resource. - metricsBuffer pmetric.Metrics // accumulates metrics data before emitting. - buildInfo component.BuildInfo // contains version information. - resourceAttributeIncludeFilter map[string]filter.Filter - resourceAttributeExcludeFilter map[string]filter.Filter - metricNginxCacheBytes metricNginxCacheBytes - metricNginxCacheMemoryLimit metricNginxCacheMemoryLimit - metricNginxCacheMemoryUsage metricNginxCacheMemoryUsage - metricNginxCacheResponses metricNginxCacheResponses - metricNginxConfigReloads metricNginxConfigReloads - metricNginxHTTPConnections metricNginxHTTPConnections - metricNginxHTTPConnectionsCount metricNginxHTTPConnectionsCount - metricNginxHTTPLimitConnRequests metricNginxHTTPLimitConnRequests - metricNginxHTTPLimitReqRequests metricNginxHTTPLimitReqRequests - metricNginxHTTPRequestByteIo metricNginxHTTPRequestByteIo - metricNginxHTTPRequestDiscarded metricNginxHTTPRequestDiscarded - metricNginxHTTPRequestProcessingCount metricNginxHTTPRequestProcessingCount - metricNginxHTTPRequests metricNginxHTTPRequests - metricNginxHTTPRequestsCount metricNginxHTTPRequestsCount - metricNginxHTTPResponseStatus metricNginxHTTPResponseStatus - metricNginxHTTPResponses metricNginxHTTPResponses - metricNginxHTTPUpstreamKeepaliveCount metricNginxHTTPUpstreamKeepaliveCount - metricNginxHTTPUpstreamPeerByteIo metricNginxHTTPUpstreamPeerByteIo - metricNginxHTTPUpstreamPeerConnectionsCount metricNginxHTTPUpstreamPeerConnectionsCount - metricNginxHTTPUpstreamPeerCount metricNginxHTTPUpstreamPeerCount - metricNginxHTTPUpstreamPeerFails metricNginxHTTPUpstreamPeerFails - metricNginxHTTPUpstreamPeerHeaderTime metricNginxHTTPUpstreamPeerHeaderTime - metricNginxHTTPUpstreamPeerHealthChecks metricNginxHTTPUpstreamPeerHealthChecks - metricNginxHTTPUpstreamPeerRequests metricNginxHTTPUpstreamPeerRequests - metricNginxHTTPUpstreamPeerResponseTime metricNginxHTTPUpstreamPeerResponseTime - metricNginxHTTPUpstreamPeerResponses metricNginxHTTPUpstreamPeerResponses - metricNginxHTTPUpstreamPeerState metricNginxHTTPUpstreamPeerState - metricNginxHTTPUpstreamPeerUnavailables metricNginxHTTPUpstreamPeerUnavailables - metricNginxHTTPUpstreamQueueLimit metricNginxHTTPUpstreamQueueLimit - metricNginxHTTPUpstreamQueueOverflows metricNginxHTTPUpstreamQueueOverflows - metricNginxHTTPUpstreamQueueUsage metricNginxHTTPUpstreamQueueUsage - metricNginxHTTPUpstreamZombieCount metricNginxHTTPUpstreamZombieCount - metricNginxSlabPageFree metricNginxSlabPageFree - metricNginxSlabPageLimit metricNginxSlabPageLimit - metricNginxSlabPageUsage metricNginxSlabPageUsage - metricNginxSlabPageUtilization metricNginxSlabPageUtilization - metricNginxSlabSlotAllocations metricNginxSlabSlotAllocations - metricNginxSlabSlotFree metricNginxSlabSlotFree - metricNginxSlabSlotUsage metricNginxSlabSlotUsage - metricNginxSslCertificateVerifyFailures metricNginxSslCertificateVerifyFailures - metricNginxSslHandshakes metricNginxSslHandshakes - metricNginxStreamByteIo metricNginxStreamByteIo - metricNginxStreamConnectionsAccepted metricNginxStreamConnectionsAccepted - metricNginxStreamConnectionsDiscarded metricNginxStreamConnectionsDiscarded - metricNginxStreamConnectionsProcessingCount metricNginxStreamConnectionsProcessingCount - metricNginxStreamSessionStatus metricNginxStreamSessionStatus - metricNginxStreamUpstreamPeerByteIo metricNginxStreamUpstreamPeerByteIo - metricNginxStreamUpstreamPeerConnections metricNginxStreamUpstreamPeerConnections - metricNginxStreamUpstreamPeerConnectionsCount metricNginxStreamUpstreamPeerConnectionsCount - metricNginxStreamUpstreamPeerConnectionsTime metricNginxStreamUpstreamPeerConnectionsTime - metricNginxStreamUpstreamPeerCount metricNginxStreamUpstreamPeerCount - metricNginxStreamUpstreamPeerFails metricNginxStreamUpstreamPeerFails - metricNginxStreamUpstreamPeerHealthChecks metricNginxStreamUpstreamPeerHealthChecks - metricNginxStreamUpstreamPeerResponseTime metricNginxStreamUpstreamPeerResponseTime - metricNginxStreamUpstreamPeerState metricNginxStreamUpstreamPeerState - metricNginxStreamUpstreamPeerTtfbTime metricNginxStreamUpstreamPeerTtfbTime - metricNginxStreamUpstreamPeerUnavailable metricNginxStreamUpstreamPeerUnavailable - metricNginxStreamUpstreamZombieCount metricNginxStreamUpstreamZombieCount + config MetricsBuilderConfig // config of the metrics builder. + startTime pcommon.Timestamp // start time that will be applied to all recorded data points. + metricsCapacity int // maximum observed number of metrics per resource. + metricsBuffer pmetric.Metrics // accumulates metrics data before emitting. + buildInfo component.BuildInfo // contains version information. + resourceAttributeIncludeFilter map[string]filter.Filter + resourceAttributeExcludeFilter map[string]filter.Filter + metricNginxCacheBytesRead metricNginxCacheBytesRead + metricNginxCacheMemoryLimit metricNginxCacheMemoryLimit + metricNginxCacheMemoryUsage metricNginxCacheMemoryUsage + metricNginxCacheResponses metricNginxCacheResponses + metricNginxConfigReloads metricNginxConfigReloads + metricNginxHTTPConnectionCount metricNginxHTTPConnectionCount + metricNginxHTTPConnections metricNginxHTTPConnections + metricNginxHTTPLimitConnRequests metricNginxHTTPLimitConnRequests + metricNginxHTTPLimitReqRequests metricNginxHTTPLimitReqRequests + metricNginxHTTPRequestCount metricNginxHTTPRequestCount + metricNginxHTTPRequestDiscarded metricNginxHTTPRequestDiscarded + metricNginxHTTPRequestIo metricNginxHTTPRequestIo + metricNginxHTTPRequestProcessingCount metricNginxHTTPRequestProcessingCount + metricNginxHTTPRequests metricNginxHTTPRequests + metricNginxHTTPResponseStatus metricNginxHTTPResponseStatus + metricNginxHTTPResponses metricNginxHTTPResponses + metricNginxHTTPUpstreamKeepaliveCount metricNginxHTTPUpstreamKeepaliveCount + metricNginxHTTPUpstreamPeerConnectionCount metricNginxHTTPUpstreamPeerConnectionCount + metricNginxHTTPUpstreamPeerCount metricNginxHTTPUpstreamPeerCount + metricNginxHTTPUpstreamPeerFails metricNginxHTTPUpstreamPeerFails + metricNginxHTTPUpstreamPeerHeaderTime metricNginxHTTPUpstreamPeerHeaderTime + metricNginxHTTPUpstreamPeerHealthChecks metricNginxHTTPUpstreamPeerHealthChecks + metricNginxHTTPUpstreamPeerIo metricNginxHTTPUpstreamPeerIo + metricNginxHTTPUpstreamPeerRequests metricNginxHTTPUpstreamPeerRequests + metricNginxHTTPUpstreamPeerResponseTime metricNginxHTTPUpstreamPeerResponseTime + metricNginxHTTPUpstreamPeerResponses metricNginxHTTPUpstreamPeerResponses + metricNginxHTTPUpstreamPeerState metricNginxHTTPUpstreamPeerState + metricNginxHTTPUpstreamPeerUnavailables metricNginxHTTPUpstreamPeerUnavailables + metricNginxHTTPUpstreamQueueLimit metricNginxHTTPUpstreamQueueLimit + metricNginxHTTPUpstreamQueueOverflows metricNginxHTTPUpstreamQueueOverflows + metricNginxHTTPUpstreamQueueUsage metricNginxHTTPUpstreamQueueUsage + metricNginxHTTPUpstreamZombieCount metricNginxHTTPUpstreamZombieCount + metricNginxSlabPageFree metricNginxSlabPageFree + metricNginxSlabPageLimit metricNginxSlabPageLimit + metricNginxSlabPageUsage metricNginxSlabPageUsage + metricNginxSlabPageUtilization metricNginxSlabPageUtilization + metricNginxSlabSlotAllocations metricNginxSlabSlotAllocations + metricNginxSlabSlotFree metricNginxSlabSlotFree + metricNginxSlabSlotUsage metricNginxSlabSlotUsage + metricNginxSslCertificateVerifyFailures metricNginxSslCertificateVerifyFailures + metricNginxSslHandshakes metricNginxSslHandshakes + metricNginxStreamConnectionAccepted metricNginxStreamConnectionAccepted + metricNginxStreamConnectionDiscarded metricNginxStreamConnectionDiscarded + metricNginxStreamConnectionProcessingCount metricNginxStreamConnectionProcessingCount + metricNginxStreamIo metricNginxStreamIo + metricNginxStreamSessionStatus metricNginxStreamSessionStatus + metricNginxStreamUpstreamPeerConnectionCount metricNginxStreamUpstreamPeerConnectionCount + metricNginxStreamUpstreamPeerConnectionTime metricNginxStreamUpstreamPeerConnectionTime + metricNginxStreamUpstreamPeerConnections metricNginxStreamUpstreamPeerConnections + metricNginxStreamUpstreamPeerCount metricNginxStreamUpstreamPeerCount + metricNginxStreamUpstreamPeerFails metricNginxStreamUpstreamPeerFails + metricNginxStreamUpstreamPeerHealthChecks metricNginxStreamUpstreamPeerHealthChecks + metricNginxStreamUpstreamPeerIo metricNginxStreamUpstreamPeerIo + metricNginxStreamUpstreamPeerResponseTime metricNginxStreamUpstreamPeerResponseTime + metricNginxStreamUpstreamPeerState metricNginxStreamUpstreamPeerState + metricNginxStreamUpstreamPeerTtfbTime metricNginxStreamUpstreamPeerTtfbTime + metricNginxStreamUpstreamPeerUnavailables metricNginxStreamUpstreamPeerUnavailables + metricNginxStreamUpstreamZombieCount metricNginxStreamUpstreamZombieCount } // MetricBuilderOption applies changes to default metrics builder. @@ -3643,70 +3643,70 @@ func WithStartTime(startTime pcommon.Timestamp) MetricBuilderOption { func NewMetricsBuilder(mbc MetricsBuilderConfig, settings receiver.Settings, options ...MetricBuilderOption) *MetricsBuilder { mb := &MetricsBuilder{ - config: mbc, - startTime: pcommon.NewTimestampFromTime(time.Now()), - metricsBuffer: pmetric.NewMetrics(), - buildInfo: settings.BuildInfo, - metricNginxCacheBytes: newMetricNginxCacheBytes(mbc.Metrics.NginxCacheBytes), - metricNginxCacheMemoryLimit: newMetricNginxCacheMemoryLimit(mbc.Metrics.NginxCacheMemoryLimit), - metricNginxCacheMemoryUsage: newMetricNginxCacheMemoryUsage(mbc.Metrics.NginxCacheMemoryUsage), - metricNginxCacheResponses: newMetricNginxCacheResponses(mbc.Metrics.NginxCacheResponses), - metricNginxConfigReloads: newMetricNginxConfigReloads(mbc.Metrics.NginxConfigReloads), - metricNginxHTTPConnections: newMetricNginxHTTPConnections(mbc.Metrics.NginxHTTPConnections), - metricNginxHTTPConnectionsCount: newMetricNginxHTTPConnectionsCount(mbc.Metrics.NginxHTTPConnectionsCount), - metricNginxHTTPLimitConnRequests: newMetricNginxHTTPLimitConnRequests(mbc.Metrics.NginxHTTPLimitConnRequests), - metricNginxHTTPLimitReqRequests: newMetricNginxHTTPLimitReqRequests(mbc.Metrics.NginxHTTPLimitReqRequests), - metricNginxHTTPRequestByteIo: newMetricNginxHTTPRequestByteIo(mbc.Metrics.NginxHTTPRequestByteIo), - metricNginxHTTPRequestDiscarded: newMetricNginxHTTPRequestDiscarded(mbc.Metrics.NginxHTTPRequestDiscarded), - metricNginxHTTPRequestProcessingCount: newMetricNginxHTTPRequestProcessingCount(mbc.Metrics.NginxHTTPRequestProcessingCount), - metricNginxHTTPRequests: newMetricNginxHTTPRequests(mbc.Metrics.NginxHTTPRequests), - metricNginxHTTPRequestsCount: newMetricNginxHTTPRequestsCount(mbc.Metrics.NginxHTTPRequestsCount), - metricNginxHTTPResponseStatus: newMetricNginxHTTPResponseStatus(mbc.Metrics.NginxHTTPResponseStatus), - metricNginxHTTPResponses: newMetricNginxHTTPResponses(mbc.Metrics.NginxHTTPResponses), - metricNginxHTTPUpstreamKeepaliveCount: newMetricNginxHTTPUpstreamKeepaliveCount(mbc.Metrics.NginxHTTPUpstreamKeepaliveCount), - metricNginxHTTPUpstreamPeerByteIo: newMetricNginxHTTPUpstreamPeerByteIo(mbc.Metrics.NginxHTTPUpstreamPeerByteIo), - metricNginxHTTPUpstreamPeerConnectionsCount: newMetricNginxHTTPUpstreamPeerConnectionsCount(mbc.Metrics.NginxHTTPUpstreamPeerConnectionsCount), - metricNginxHTTPUpstreamPeerCount: newMetricNginxHTTPUpstreamPeerCount(mbc.Metrics.NginxHTTPUpstreamPeerCount), - metricNginxHTTPUpstreamPeerFails: newMetricNginxHTTPUpstreamPeerFails(mbc.Metrics.NginxHTTPUpstreamPeerFails), - metricNginxHTTPUpstreamPeerHeaderTime: newMetricNginxHTTPUpstreamPeerHeaderTime(mbc.Metrics.NginxHTTPUpstreamPeerHeaderTime), - metricNginxHTTPUpstreamPeerHealthChecks: newMetricNginxHTTPUpstreamPeerHealthChecks(mbc.Metrics.NginxHTTPUpstreamPeerHealthChecks), - metricNginxHTTPUpstreamPeerRequests: newMetricNginxHTTPUpstreamPeerRequests(mbc.Metrics.NginxHTTPUpstreamPeerRequests), - metricNginxHTTPUpstreamPeerResponseTime: newMetricNginxHTTPUpstreamPeerResponseTime(mbc.Metrics.NginxHTTPUpstreamPeerResponseTime), - metricNginxHTTPUpstreamPeerResponses: newMetricNginxHTTPUpstreamPeerResponses(mbc.Metrics.NginxHTTPUpstreamPeerResponses), - metricNginxHTTPUpstreamPeerState: newMetricNginxHTTPUpstreamPeerState(mbc.Metrics.NginxHTTPUpstreamPeerState), - metricNginxHTTPUpstreamPeerUnavailables: newMetricNginxHTTPUpstreamPeerUnavailables(mbc.Metrics.NginxHTTPUpstreamPeerUnavailables), - metricNginxHTTPUpstreamQueueLimit: newMetricNginxHTTPUpstreamQueueLimit(mbc.Metrics.NginxHTTPUpstreamQueueLimit), - metricNginxHTTPUpstreamQueueOverflows: newMetricNginxHTTPUpstreamQueueOverflows(mbc.Metrics.NginxHTTPUpstreamQueueOverflows), - metricNginxHTTPUpstreamQueueUsage: newMetricNginxHTTPUpstreamQueueUsage(mbc.Metrics.NginxHTTPUpstreamQueueUsage), - metricNginxHTTPUpstreamZombieCount: newMetricNginxHTTPUpstreamZombieCount(mbc.Metrics.NginxHTTPUpstreamZombieCount), - metricNginxSlabPageFree: newMetricNginxSlabPageFree(mbc.Metrics.NginxSlabPageFree), - metricNginxSlabPageLimit: newMetricNginxSlabPageLimit(mbc.Metrics.NginxSlabPageLimit), - metricNginxSlabPageUsage: newMetricNginxSlabPageUsage(mbc.Metrics.NginxSlabPageUsage), - metricNginxSlabPageUtilization: newMetricNginxSlabPageUtilization(mbc.Metrics.NginxSlabPageUtilization), - metricNginxSlabSlotAllocations: newMetricNginxSlabSlotAllocations(mbc.Metrics.NginxSlabSlotAllocations), - metricNginxSlabSlotFree: newMetricNginxSlabSlotFree(mbc.Metrics.NginxSlabSlotFree), - metricNginxSlabSlotUsage: newMetricNginxSlabSlotUsage(mbc.Metrics.NginxSlabSlotUsage), - metricNginxSslCertificateVerifyFailures: newMetricNginxSslCertificateVerifyFailures(mbc.Metrics.NginxSslCertificateVerifyFailures), - metricNginxSslHandshakes: newMetricNginxSslHandshakes(mbc.Metrics.NginxSslHandshakes), - metricNginxStreamByteIo: newMetricNginxStreamByteIo(mbc.Metrics.NginxStreamByteIo), - metricNginxStreamConnectionsAccepted: newMetricNginxStreamConnectionsAccepted(mbc.Metrics.NginxStreamConnectionsAccepted), - metricNginxStreamConnectionsDiscarded: newMetricNginxStreamConnectionsDiscarded(mbc.Metrics.NginxStreamConnectionsDiscarded), - metricNginxStreamConnectionsProcessingCount: newMetricNginxStreamConnectionsProcessingCount(mbc.Metrics.NginxStreamConnectionsProcessingCount), - metricNginxStreamSessionStatus: newMetricNginxStreamSessionStatus(mbc.Metrics.NginxStreamSessionStatus), - metricNginxStreamUpstreamPeerByteIo: newMetricNginxStreamUpstreamPeerByteIo(mbc.Metrics.NginxStreamUpstreamPeerByteIo), - metricNginxStreamUpstreamPeerConnections: newMetricNginxStreamUpstreamPeerConnections(mbc.Metrics.NginxStreamUpstreamPeerConnections), - metricNginxStreamUpstreamPeerConnectionsCount: newMetricNginxStreamUpstreamPeerConnectionsCount(mbc.Metrics.NginxStreamUpstreamPeerConnectionsCount), - metricNginxStreamUpstreamPeerConnectionsTime: newMetricNginxStreamUpstreamPeerConnectionsTime(mbc.Metrics.NginxStreamUpstreamPeerConnectionsTime), - metricNginxStreamUpstreamPeerCount: newMetricNginxStreamUpstreamPeerCount(mbc.Metrics.NginxStreamUpstreamPeerCount), - metricNginxStreamUpstreamPeerFails: newMetricNginxStreamUpstreamPeerFails(mbc.Metrics.NginxStreamUpstreamPeerFails), - metricNginxStreamUpstreamPeerHealthChecks: newMetricNginxStreamUpstreamPeerHealthChecks(mbc.Metrics.NginxStreamUpstreamPeerHealthChecks), - metricNginxStreamUpstreamPeerResponseTime: newMetricNginxStreamUpstreamPeerResponseTime(mbc.Metrics.NginxStreamUpstreamPeerResponseTime), - metricNginxStreamUpstreamPeerState: newMetricNginxStreamUpstreamPeerState(mbc.Metrics.NginxStreamUpstreamPeerState), - metricNginxStreamUpstreamPeerTtfbTime: newMetricNginxStreamUpstreamPeerTtfbTime(mbc.Metrics.NginxStreamUpstreamPeerTtfbTime), - metricNginxStreamUpstreamPeerUnavailable: newMetricNginxStreamUpstreamPeerUnavailable(mbc.Metrics.NginxStreamUpstreamPeerUnavailable), - metricNginxStreamUpstreamZombieCount: newMetricNginxStreamUpstreamZombieCount(mbc.Metrics.NginxStreamUpstreamZombieCount), - resourceAttributeIncludeFilter: make(map[string]filter.Filter), - resourceAttributeExcludeFilter: make(map[string]filter.Filter), + config: mbc, + startTime: pcommon.NewTimestampFromTime(time.Now()), + metricsBuffer: pmetric.NewMetrics(), + buildInfo: settings.BuildInfo, + metricNginxCacheBytesRead: newMetricNginxCacheBytesRead(mbc.Metrics.NginxCacheBytesRead), + metricNginxCacheMemoryLimit: newMetricNginxCacheMemoryLimit(mbc.Metrics.NginxCacheMemoryLimit), + metricNginxCacheMemoryUsage: newMetricNginxCacheMemoryUsage(mbc.Metrics.NginxCacheMemoryUsage), + metricNginxCacheResponses: newMetricNginxCacheResponses(mbc.Metrics.NginxCacheResponses), + metricNginxConfigReloads: newMetricNginxConfigReloads(mbc.Metrics.NginxConfigReloads), + metricNginxHTTPConnectionCount: newMetricNginxHTTPConnectionCount(mbc.Metrics.NginxHTTPConnectionCount), + metricNginxHTTPConnections: newMetricNginxHTTPConnections(mbc.Metrics.NginxHTTPConnections), + metricNginxHTTPLimitConnRequests: newMetricNginxHTTPLimitConnRequests(mbc.Metrics.NginxHTTPLimitConnRequests), + metricNginxHTTPLimitReqRequests: newMetricNginxHTTPLimitReqRequests(mbc.Metrics.NginxHTTPLimitReqRequests), + metricNginxHTTPRequestCount: newMetricNginxHTTPRequestCount(mbc.Metrics.NginxHTTPRequestCount), + metricNginxHTTPRequestDiscarded: newMetricNginxHTTPRequestDiscarded(mbc.Metrics.NginxHTTPRequestDiscarded), + metricNginxHTTPRequestIo: newMetricNginxHTTPRequestIo(mbc.Metrics.NginxHTTPRequestIo), + metricNginxHTTPRequestProcessingCount: newMetricNginxHTTPRequestProcessingCount(mbc.Metrics.NginxHTTPRequestProcessingCount), + metricNginxHTTPRequests: newMetricNginxHTTPRequests(mbc.Metrics.NginxHTTPRequests), + metricNginxHTTPResponseStatus: newMetricNginxHTTPResponseStatus(mbc.Metrics.NginxHTTPResponseStatus), + metricNginxHTTPResponses: newMetricNginxHTTPResponses(mbc.Metrics.NginxHTTPResponses), + metricNginxHTTPUpstreamKeepaliveCount: newMetricNginxHTTPUpstreamKeepaliveCount(mbc.Metrics.NginxHTTPUpstreamKeepaliveCount), + metricNginxHTTPUpstreamPeerConnectionCount: newMetricNginxHTTPUpstreamPeerConnectionCount(mbc.Metrics.NginxHTTPUpstreamPeerConnectionCount), + metricNginxHTTPUpstreamPeerCount: newMetricNginxHTTPUpstreamPeerCount(mbc.Metrics.NginxHTTPUpstreamPeerCount), + metricNginxHTTPUpstreamPeerFails: newMetricNginxHTTPUpstreamPeerFails(mbc.Metrics.NginxHTTPUpstreamPeerFails), + metricNginxHTTPUpstreamPeerHeaderTime: newMetricNginxHTTPUpstreamPeerHeaderTime(mbc.Metrics.NginxHTTPUpstreamPeerHeaderTime), + metricNginxHTTPUpstreamPeerHealthChecks: newMetricNginxHTTPUpstreamPeerHealthChecks(mbc.Metrics.NginxHTTPUpstreamPeerHealthChecks), + metricNginxHTTPUpstreamPeerIo: newMetricNginxHTTPUpstreamPeerIo(mbc.Metrics.NginxHTTPUpstreamPeerIo), + metricNginxHTTPUpstreamPeerRequests: newMetricNginxHTTPUpstreamPeerRequests(mbc.Metrics.NginxHTTPUpstreamPeerRequests), + metricNginxHTTPUpstreamPeerResponseTime: newMetricNginxHTTPUpstreamPeerResponseTime(mbc.Metrics.NginxHTTPUpstreamPeerResponseTime), + metricNginxHTTPUpstreamPeerResponses: newMetricNginxHTTPUpstreamPeerResponses(mbc.Metrics.NginxHTTPUpstreamPeerResponses), + metricNginxHTTPUpstreamPeerState: newMetricNginxHTTPUpstreamPeerState(mbc.Metrics.NginxHTTPUpstreamPeerState), + metricNginxHTTPUpstreamPeerUnavailables: newMetricNginxHTTPUpstreamPeerUnavailables(mbc.Metrics.NginxHTTPUpstreamPeerUnavailables), + metricNginxHTTPUpstreamQueueLimit: newMetricNginxHTTPUpstreamQueueLimit(mbc.Metrics.NginxHTTPUpstreamQueueLimit), + metricNginxHTTPUpstreamQueueOverflows: newMetricNginxHTTPUpstreamQueueOverflows(mbc.Metrics.NginxHTTPUpstreamQueueOverflows), + metricNginxHTTPUpstreamQueueUsage: newMetricNginxHTTPUpstreamQueueUsage(mbc.Metrics.NginxHTTPUpstreamQueueUsage), + metricNginxHTTPUpstreamZombieCount: newMetricNginxHTTPUpstreamZombieCount(mbc.Metrics.NginxHTTPUpstreamZombieCount), + metricNginxSlabPageFree: newMetricNginxSlabPageFree(mbc.Metrics.NginxSlabPageFree), + metricNginxSlabPageLimit: newMetricNginxSlabPageLimit(mbc.Metrics.NginxSlabPageLimit), + metricNginxSlabPageUsage: newMetricNginxSlabPageUsage(mbc.Metrics.NginxSlabPageUsage), + metricNginxSlabPageUtilization: newMetricNginxSlabPageUtilization(mbc.Metrics.NginxSlabPageUtilization), + metricNginxSlabSlotAllocations: newMetricNginxSlabSlotAllocations(mbc.Metrics.NginxSlabSlotAllocations), + metricNginxSlabSlotFree: newMetricNginxSlabSlotFree(mbc.Metrics.NginxSlabSlotFree), + metricNginxSlabSlotUsage: newMetricNginxSlabSlotUsage(mbc.Metrics.NginxSlabSlotUsage), + metricNginxSslCertificateVerifyFailures: newMetricNginxSslCertificateVerifyFailures(mbc.Metrics.NginxSslCertificateVerifyFailures), + metricNginxSslHandshakes: newMetricNginxSslHandshakes(mbc.Metrics.NginxSslHandshakes), + metricNginxStreamConnectionAccepted: newMetricNginxStreamConnectionAccepted(mbc.Metrics.NginxStreamConnectionAccepted), + metricNginxStreamConnectionDiscarded: newMetricNginxStreamConnectionDiscarded(mbc.Metrics.NginxStreamConnectionDiscarded), + metricNginxStreamConnectionProcessingCount: newMetricNginxStreamConnectionProcessingCount(mbc.Metrics.NginxStreamConnectionProcessingCount), + metricNginxStreamIo: newMetricNginxStreamIo(mbc.Metrics.NginxStreamIo), + metricNginxStreamSessionStatus: newMetricNginxStreamSessionStatus(mbc.Metrics.NginxStreamSessionStatus), + metricNginxStreamUpstreamPeerConnectionCount: newMetricNginxStreamUpstreamPeerConnectionCount(mbc.Metrics.NginxStreamUpstreamPeerConnectionCount), + metricNginxStreamUpstreamPeerConnectionTime: newMetricNginxStreamUpstreamPeerConnectionTime(mbc.Metrics.NginxStreamUpstreamPeerConnectionTime), + metricNginxStreamUpstreamPeerConnections: newMetricNginxStreamUpstreamPeerConnections(mbc.Metrics.NginxStreamUpstreamPeerConnections), + metricNginxStreamUpstreamPeerCount: newMetricNginxStreamUpstreamPeerCount(mbc.Metrics.NginxStreamUpstreamPeerCount), + metricNginxStreamUpstreamPeerFails: newMetricNginxStreamUpstreamPeerFails(mbc.Metrics.NginxStreamUpstreamPeerFails), + metricNginxStreamUpstreamPeerHealthChecks: newMetricNginxStreamUpstreamPeerHealthChecks(mbc.Metrics.NginxStreamUpstreamPeerHealthChecks), + metricNginxStreamUpstreamPeerIo: newMetricNginxStreamUpstreamPeerIo(mbc.Metrics.NginxStreamUpstreamPeerIo), + metricNginxStreamUpstreamPeerResponseTime: newMetricNginxStreamUpstreamPeerResponseTime(mbc.Metrics.NginxStreamUpstreamPeerResponseTime), + metricNginxStreamUpstreamPeerState: newMetricNginxStreamUpstreamPeerState(mbc.Metrics.NginxStreamUpstreamPeerState), + metricNginxStreamUpstreamPeerTtfbTime: newMetricNginxStreamUpstreamPeerTtfbTime(mbc.Metrics.NginxStreamUpstreamPeerTtfbTime), + metricNginxStreamUpstreamPeerUnavailables: newMetricNginxStreamUpstreamPeerUnavailables(mbc.Metrics.NginxStreamUpstreamPeerUnavailables), + metricNginxStreamUpstreamZombieCount: newMetricNginxStreamUpstreamZombieCount(mbc.Metrics.NginxStreamUpstreamZombieCount), + resourceAttributeIncludeFilter: make(map[string]filter.Filter), + resourceAttributeExcludeFilter: make(map[string]filter.Filter), } if mbc.ResourceAttributes.InstanceID.MetricsInclude != nil { mb.resourceAttributeIncludeFilter["instance.id"] = filter.CreateFilter(mbc.ResourceAttributes.InstanceID.MetricsInclude) @@ -3789,29 +3789,29 @@ func (mb *MetricsBuilder) EmitForResource(options ...ResourceMetricsOption) { ils.Scope().SetName("otelcol/nginxplusreceiver") ils.Scope().SetVersion(mb.buildInfo.Version) ils.Metrics().EnsureCapacity(mb.metricsCapacity) - mb.metricNginxCacheBytes.emit(ils.Metrics()) + mb.metricNginxCacheBytesRead.emit(ils.Metrics()) mb.metricNginxCacheMemoryLimit.emit(ils.Metrics()) mb.metricNginxCacheMemoryUsage.emit(ils.Metrics()) mb.metricNginxCacheResponses.emit(ils.Metrics()) mb.metricNginxConfigReloads.emit(ils.Metrics()) + mb.metricNginxHTTPConnectionCount.emit(ils.Metrics()) mb.metricNginxHTTPConnections.emit(ils.Metrics()) - mb.metricNginxHTTPConnectionsCount.emit(ils.Metrics()) mb.metricNginxHTTPLimitConnRequests.emit(ils.Metrics()) mb.metricNginxHTTPLimitReqRequests.emit(ils.Metrics()) - mb.metricNginxHTTPRequestByteIo.emit(ils.Metrics()) + mb.metricNginxHTTPRequestCount.emit(ils.Metrics()) mb.metricNginxHTTPRequestDiscarded.emit(ils.Metrics()) + mb.metricNginxHTTPRequestIo.emit(ils.Metrics()) mb.metricNginxHTTPRequestProcessingCount.emit(ils.Metrics()) mb.metricNginxHTTPRequests.emit(ils.Metrics()) - mb.metricNginxHTTPRequestsCount.emit(ils.Metrics()) mb.metricNginxHTTPResponseStatus.emit(ils.Metrics()) mb.metricNginxHTTPResponses.emit(ils.Metrics()) mb.metricNginxHTTPUpstreamKeepaliveCount.emit(ils.Metrics()) - mb.metricNginxHTTPUpstreamPeerByteIo.emit(ils.Metrics()) - mb.metricNginxHTTPUpstreamPeerConnectionsCount.emit(ils.Metrics()) + mb.metricNginxHTTPUpstreamPeerConnectionCount.emit(ils.Metrics()) mb.metricNginxHTTPUpstreamPeerCount.emit(ils.Metrics()) mb.metricNginxHTTPUpstreamPeerFails.emit(ils.Metrics()) mb.metricNginxHTTPUpstreamPeerHeaderTime.emit(ils.Metrics()) mb.metricNginxHTTPUpstreamPeerHealthChecks.emit(ils.Metrics()) + mb.metricNginxHTTPUpstreamPeerIo.emit(ils.Metrics()) mb.metricNginxHTTPUpstreamPeerRequests.emit(ils.Metrics()) mb.metricNginxHTTPUpstreamPeerResponseTime.emit(ils.Metrics()) mb.metricNginxHTTPUpstreamPeerResponses.emit(ils.Metrics()) @@ -3830,22 +3830,22 @@ func (mb *MetricsBuilder) EmitForResource(options ...ResourceMetricsOption) { mb.metricNginxSlabSlotUsage.emit(ils.Metrics()) mb.metricNginxSslCertificateVerifyFailures.emit(ils.Metrics()) mb.metricNginxSslHandshakes.emit(ils.Metrics()) - mb.metricNginxStreamByteIo.emit(ils.Metrics()) - mb.metricNginxStreamConnectionsAccepted.emit(ils.Metrics()) - mb.metricNginxStreamConnectionsDiscarded.emit(ils.Metrics()) - mb.metricNginxStreamConnectionsProcessingCount.emit(ils.Metrics()) + mb.metricNginxStreamConnectionAccepted.emit(ils.Metrics()) + mb.metricNginxStreamConnectionDiscarded.emit(ils.Metrics()) + mb.metricNginxStreamConnectionProcessingCount.emit(ils.Metrics()) + mb.metricNginxStreamIo.emit(ils.Metrics()) mb.metricNginxStreamSessionStatus.emit(ils.Metrics()) - mb.metricNginxStreamUpstreamPeerByteIo.emit(ils.Metrics()) + mb.metricNginxStreamUpstreamPeerConnectionCount.emit(ils.Metrics()) + mb.metricNginxStreamUpstreamPeerConnectionTime.emit(ils.Metrics()) mb.metricNginxStreamUpstreamPeerConnections.emit(ils.Metrics()) - mb.metricNginxStreamUpstreamPeerConnectionsCount.emit(ils.Metrics()) - mb.metricNginxStreamUpstreamPeerConnectionsTime.emit(ils.Metrics()) mb.metricNginxStreamUpstreamPeerCount.emit(ils.Metrics()) mb.metricNginxStreamUpstreamPeerFails.emit(ils.Metrics()) mb.metricNginxStreamUpstreamPeerHealthChecks.emit(ils.Metrics()) + mb.metricNginxStreamUpstreamPeerIo.emit(ils.Metrics()) mb.metricNginxStreamUpstreamPeerResponseTime.emit(ils.Metrics()) mb.metricNginxStreamUpstreamPeerState.emit(ils.Metrics()) mb.metricNginxStreamUpstreamPeerTtfbTime.emit(ils.Metrics()) - mb.metricNginxStreamUpstreamPeerUnavailable.emit(ils.Metrics()) + mb.metricNginxStreamUpstreamPeerUnavailables.emit(ils.Metrics()) mb.metricNginxStreamUpstreamZombieCount.emit(ils.Metrics()) for _, op := range options { @@ -3878,9 +3878,9 @@ func (mb *MetricsBuilder) Emit(options ...ResourceMetricsOption) pmetric.Metrics return metrics } -// RecordNginxCacheBytesDataPoint adds a data point to nginx.cache.bytes metric. -func (mb *MetricsBuilder) RecordNginxCacheBytesDataPoint(ts pcommon.Timestamp, val int64, nginxCacheOutcomeAttributeValue AttributeNginxCacheOutcome, nginxCacheNameAttributeValue string) { - mb.metricNginxCacheBytes.recordDataPoint(mb.startTime, ts, val, nginxCacheOutcomeAttributeValue.String(), nginxCacheNameAttributeValue) +// RecordNginxCacheBytesReadDataPoint adds a data point to nginx.cache.bytes_read metric. +func (mb *MetricsBuilder) RecordNginxCacheBytesReadDataPoint(ts pcommon.Timestamp, val int64, nginxCacheOutcomeAttributeValue AttributeNginxCacheOutcome, nginxCacheNameAttributeValue string) { + mb.metricNginxCacheBytesRead.recordDataPoint(mb.startTime, ts, val, nginxCacheOutcomeAttributeValue.String(), nginxCacheNameAttributeValue) } // RecordNginxCacheMemoryLimitDataPoint adds a data point to nginx.cache.memory.limit metric. @@ -3903,16 +3903,16 @@ func (mb *MetricsBuilder) RecordNginxConfigReloadsDataPoint(ts pcommon.Timestamp mb.metricNginxConfigReloads.recordDataPoint(mb.startTime, ts, val) } +// RecordNginxHTTPConnectionCountDataPoint adds a data point to nginx.http.connection.count metric. +func (mb *MetricsBuilder) RecordNginxHTTPConnectionCountDataPoint(ts pcommon.Timestamp, val int64, nginxConnectionsOutcomeAttributeValue AttributeNginxConnectionsOutcome) { + mb.metricNginxHTTPConnectionCount.recordDataPoint(mb.startTime, ts, val, nginxConnectionsOutcomeAttributeValue.String()) +} + // RecordNginxHTTPConnectionsDataPoint adds a data point to nginx.http.connections metric. func (mb *MetricsBuilder) RecordNginxHTTPConnectionsDataPoint(ts pcommon.Timestamp, val int64, nginxConnectionsOutcomeAttributeValue AttributeNginxConnectionsOutcome) { mb.metricNginxHTTPConnections.recordDataPoint(mb.startTime, ts, val, nginxConnectionsOutcomeAttributeValue.String()) } -// RecordNginxHTTPConnectionsCountDataPoint adds a data point to nginx.http.connections.count metric. -func (mb *MetricsBuilder) RecordNginxHTTPConnectionsCountDataPoint(ts pcommon.Timestamp, val int64, nginxConnectionsOutcomeAttributeValue AttributeNginxConnectionsOutcome) { - mb.metricNginxHTTPConnectionsCount.recordDataPoint(mb.startTime, ts, val, nginxConnectionsOutcomeAttributeValue.String()) -} - // RecordNginxHTTPLimitConnRequestsDataPoint adds a data point to nginx.http.limit_conn.requests metric. func (mb *MetricsBuilder) RecordNginxHTTPLimitConnRequestsDataPoint(ts pcommon.Timestamp, val int64, nginxLimitConnOutcomeAttributeValue AttributeNginxLimitConnOutcome, nginxZoneNameAttributeValue string) { mb.metricNginxHTTPLimitConnRequests.recordDataPoint(mb.startTime, ts, val, nginxLimitConnOutcomeAttributeValue.String(), nginxZoneNameAttributeValue) @@ -3923,9 +3923,9 @@ func (mb *MetricsBuilder) RecordNginxHTTPLimitReqRequestsDataPoint(ts pcommon.Ti mb.metricNginxHTTPLimitReqRequests.recordDataPoint(mb.startTime, ts, val, nginxLimitReqOutcomeAttributeValue.String(), nginxZoneNameAttributeValue) } -// RecordNginxHTTPRequestByteIoDataPoint adds a data point to nginx.http.request.byte.io metric. -func (mb *MetricsBuilder) RecordNginxHTTPRequestByteIoDataPoint(ts pcommon.Timestamp, val int64, nginxByteIoDirectionAttributeValue AttributeNginxByteIoDirection, nginxZoneNameAttributeValue string, nginxZoneTypeAttributeValue AttributeNginxZoneType) { - mb.metricNginxHTTPRequestByteIo.recordDataPoint(mb.startTime, ts, val, nginxByteIoDirectionAttributeValue.String(), nginxZoneNameAttributeValue, nginxZoneTypeAttributeValue.String()) +// RecordNginxHTTPRequestCountDataPoint adds a data point to nginx.http.request.count metric. +func (mb *MetricsBuilder) RecordNginxHTTPRequestCountDataPoint(ts pcommon.Timestamp, val int64) { + mb.metricNginxHTTPRequestCount.recordDataPoint(mb.startTime, ts, val) } // RecordNginxHTTPRequestDiscardedDataPoint adds a data point to nginx.http.request.discarded metric. @@ -3933,6 +3933,11 @@ func (mb *MetricsBuilder) RecordNginxHTTPRequestDiscardedDataPoint(ts pcommon.Ti mb.metricNginxHTTPRequestDiscarded.recordDataPoint(mb.startTime, ts, val, nginxZoneNameAttributeValue, nginxZoneTypeAttributeValue.String()) } +// RecordNginxHTTPRequestIoDataPoint adds a data point to nginx.http.request.io metric. +func (mb *MetricsBuilder) RecordNginxHTTPRequestIoDataPoint(ts pcommon.Timestamp, val int64, nginxIoDirectionAttributeValue AttributeNginxIoDirection, nginxZoneNameAttributeValue string, nginxZoneTypeAttributeValue AttributeNginxZoneType) { + mb.metricNginxHTTPRequestIo.recordDataPoint(mb.startTime, ts, val, nginxIoDirectionAttributeValue.String(), nginxZoneNameAttributeValue, nginxZoneTypeAttributeValue.String()) +} + // RecordNginxHTTPRequestProcessingCountDataPoint adds a data point to nginx.http.request.processing.count metric. func (mb *MetricsBuilder) RecordNginxHTTPRequestProcessingCountDataPoint(ts pcommon.Timestamp, val int64, nginxZoneNameAttributeValue string, nginxZoneTypeAttributeValue AttributeNginxZoneType) { mb.metricNginxHTTPRequestProcessingCount.recordDataPoint(mb.startTime, ts, val, nginxZoneNameAttributeValue, nginxZoneTypeAttributeValue.String()) @@ -3943,11 +3948,6 @@ func (mb *MetricsBuilder) RecordNginxHTTPRequestsDataPoint(ts pcommon.Timestamp, mb.metricNginxHTTPRequests.recordDataPoint(mb.startTime, ts, val, nginxZoneNameAttributeValue, nginxZoneTypeAttributeValue.String()) } -// RecordNginxHTTPRequestsCountDataPoint adds a data point to nginx.http.requests.count metric. -func (mb *MetricsBuilder) RecordNginxHTTPRequestsCountDataPoint(ts pcommon.Timestamp, val int64) { - mb.metricNginxHTTPRequestsCount.recordDataPoint(mb.startTime, ts, val) -} - // RecordNginxHTTPResponseStatusDataPoint adds a data point to nginx.http.response.status metric. func (mb *MetricsBuilder) RecordNginxHTTPResponseStatusDataPoint(ts pcommon.Timestamp, val int64, nginxStatusRangeAttributeValue AttributeNginxStatusRange, nginxZoneNameAttributeValue string, nginxZoneTypeAttributeValue AttributeNginxZoneType) { mb.metricNginxHTTPResponseStatus.recordDataPoint(mb.startTime, ts, val, nginxStatusRangeAttributeValue.String(), nginxZoneNameAttributeValue, nginxZoneTypeAttributeValue.String()) @@ -3963,14 +3963,9 @@ func (mb *MetricsBuilder) RecordNginxHTTPUpstreamKeepaliveCountDataPoint(ts pcom mb.metricNginxHTTPUpstreamKeepaliveCount.recordDataPoint(mb.startTime, ts, val, nginxZoneNameAttributeValue, nginxUpstreamNameAttributeValue) } -// RecordNginxHTTPUpstreamPeerByteIoDataPoint adds a data point to nginx.http.upstream.peer.byte.io metric. -func (mb *MetricsBuilder) RecordNginxHTTPUpstreamPeerByteIoDataPoint(ts pcommon.Timestamp, val int64, nginxByteIoDirectionAttributeValue AttributeNginxByteIoDirection, nginxZoneNameAttributeValue string, nginxUpstreamNameAttributeValue string, nginxPeerAddressAttributeValue string, nginxPeerNameAttributeValue string) { - mb.metricNginxHTTPUpstreamPeerByteIo.recordDataPoint(mb.startTime, ts, val, nginxByteIoDirectionAttributeValue.String(), nginxZoneNameAttributeValue, nginxUpstreamNameAttributeValue, nginxPeerAddressAttributeValue, nginxPeerNameAttributeValue) -} - -// RecordNginxHTTPUpstreamPeerConnectionsCountDataPoint adds a data point to nginx.http.upstream.peer.connections.count metric. -func (mb *MetricsBuilder) RecordNginxHTTPUpstreamPeerConnectionsCountDataPoint(ts pcommon.Timestamp, val int64, nginxZoneNameAttributeValue string, nginxUpstreamNameAttributeValue string, nginxPeerAddressAttributeValue string, nginxPeerNameAttributeValue string) { - mb.metricNginxHTTPUpstreamPeerConnectionsCount.recordDataPoint(mb.startTime, ts, val, nginxZoneNameAttributeValue, nginxUpstreamNameAttributeValue, nginxPeerAddressAttributeValue, nginxPeerNameAttributeValue) +// RecordNginxHTTPUpstreamPeerConnectionCountDataPoint adds a data point to nginx.http.upstream.peer.connection.count metric. +func (mb *MetricsBuilder) RecordNginxHTTPUpstreamPeerConnectionCountDataPoint(ts pcommon.Timestamp, val int64, nginxZoneNameAttributeValue string, nginxUpstreamNameAttributeValue string, nginxPeerAddressAttributeValue string, nginxPeerNameAttributeValue string) { + mb.metricNginxHTTPUpstreamPeerConnectionCount.recordDataPoint(mb.startTime, ts, val, nginxZoneNameAttributeValue, nginxUpstreamNameAttributeValue, nginxPeerAddressAttributeValue, nginxPeerNameAttributeValue) } // RecordNginxHTTPUpstreamPeerCountDataPoint adds a data point to nginx.http.upstream.peer.count metric. @@ -3993,6 +3988,11 @@ func (mb *MetricsBuilder) RecordNginxHTTPUpstreamPeerHealthChecksDataPoint(ts pc mb.metricNginxHTTPUpstreamPeerHealthChecks.recordDataPoint(mb.startTime, ts, val, nginxHealthCheckAttributeValue.String(), nginxZoneNameAttributeValue, nginxUpstreamNameAttributeValue, nginxPeerAddressAttributeValue, nginxPeerNameAttributeValue) } +// RecordNginxHTTPUpstreamPeerIoDataPoint adds a data point to nginx.http.upstream.peer.io metric. +func (mb *MetricsBuilder) RecordNginxHTTPUpstreamPeerIoDataPoint(ts pcommon.Timestamp, val int64, nginxIoDirectionAttributeValue AttributeNginxIoDirection, nginxZoneNameAttributeValue string, nginxUpstreamNameAttributeValue string, nginxPeerAddressAttributeValue string, nginxPeerNameAttributeValue string) { + mb.metricNginxHTTPUpstreamPeerIo.recordDataPoint(mb.startTime, ts, val, nginxIoDirectionAttributeValue.String(), nginxZoneNameAttributeValue, nginxUpstreamNameAttributeValue, nginxPeerAddressAttributeValue, nginxPeerNameAttributeValue) +} + // RecordNginxHTTPUpstreamPeerRequestsDataPoint adds a data point to nginx.http.upstream.peer.requests metric. func (mb *MetricsBuilder) RecordNginxHTTPUpstreamPeerRequestsDataPoint(ts pcommon.Timestamp, val int64, nginxZoneNameAttributeValue string, nginxUpstreamNameAttributeValue string, nginxPeerAddressAttributeValue string, nginxPeerNameAttributeValue string) { mb.metricNginxHTTPUpstreamPeerRequests.recordDataPoint(mb.startTime, ts, val, nginxZoneNameAttributeValue, nginxUpstreamNameAttributeValue, nginxPeerAddressAttributeValue, nginxPeerNameAttributeValue) @@ -4083,24 +4083,24 @@ func (mb *MetricsBuilder) RecordNginxSslHandshakesDataPoint(ts pcommon.Timestamp mb.metricNginxSslHandshakes.recordDataPoint(mb.startTime, ts, val, nginxSslStatusAttributeValue.String(), nginxSslHandshakeReasonAttributeValue.String()) } -// RecordNginxStreamByteIoDataPoint adds a data point to nginx.stream.byte.io metric. -func (mb *MetricsBuilder) RecordNginxStreamByteIoDataPoint(ts pcommon.Timestamp, val int64, nginxByteIoDirectionAttributeValue AttributeNginxByteIoDirection, nginxZoneNameAttributeValue string) { - mb.metricNginxStreamByteIo.recordDataPoint(mb.startTime, ts, val, nginxByteIoDirectionAttributeValue.String(), nginxZoneNameAttributeValue) +// RecordNginxStreamConnectionAcceptedDataPoint adds a data point to nginx.stream.connection.accepted metric. +func (mb *MetricsBuilder) RecordNginxStreamConnectionAcceptedDataPoint(ts pcommon.Timestamp, val int64, nginxZoneNameAttributeValue string) { + mb.metricNginxStreamConnectionAccepted.recordDataPoint(mb.startTime, ts, val, nginxZoneNameAttributeValue) } -// RecordNginxStreamConnectionsAcceptedDataPoint adds a data point to nginx.stream.connections.accepted metric. -func (mb *MetricsBuilder) RecordNginxStreamConnectionsAcceptedDataPoint(ts pcommon.Timestamp, val int64, nginxZoneNameAttributeValue string) { - mb.metricNginxStreamConnectionsAccepted.recordDataPoint(mb.startTime, ts, val, nginxZoneNameAttributeValue) +// RecordNginxStreamConnectionDiscardedDataPoint adds a data point to nginx.stream.connection.discarded metric. +func (mb *MetricsBuilder) RecordNginxStreamConnectionDiscardedDataPoint(ts pcommon.Timestamp, val int64, nginxZoneNameAttributeValue string) { + mb.metricNginxStreamConnectionDiscarded.recordDataPoint(mb.startTime, ts, val, nginxZoneNameAttributeValue) } -// RecordNginxStreamConnectionsDiscardedDataPoint adds a data point to nginx.stream.connections.discarded metric. -func (mb *MetricsBuilder) RecordNginxStreamConnectionsDiscardedDataPoint(ts pcommon.Timestamp, val int64, nginxZoneNameAttributeValue string) { - mb.metricNginxStreamConnectionsDiscarded.recordDataPoint(mb.startTime, ts, val, nginxZoneNameAttributeValue) +// RecordNginxStreamConnectionProcessingCountDataPoint adds a data point to nginx.stream.connection.processing.count metric. +func (mb *MetricsBuilder) RecordNginxStreamConnectionProcessingCountDataPoint(ts pcommon.Timestamp, val int64, nginxZoneNameAttributeValue string) { + mb.metricNginxStreamConnectionProcessingCount.recordDataPoint(mb.startTime, ts, val, nginxZoneNameAttributeValue) } -// RecordNginxStreamConnectionsProcessingCountDataPoint adds a data point to nginx.stream.connections.processing.count metric. -func (mb *MetricsBuilder) RecordNginxStreamConnectionsProcessingCountDataPoint(ts pcommon.Timestamp, val int64, nginxZoneNameAttributeValue string) { - mb.metricNginxStreamConnectionsProcessingCount.recordDataPoint(mb.startTime, ts, val, nginxZoneNameAttributeValue) +// RecordNginxStreamIoDataPoint adds a data point to nginx.stream.io metric. +func (mb *MetricsBuilder) RecordNginxStreamIoDataPoint(ts pcommon.Timestamp, val int64, nginxIoDirectionAttributeValue AttributeNginxIoDirection, nginxZoneNameAttributeValue string) { + mb.metricNginxStreamIo.recordDataPoint(mb.startTime, ts, val, nginxIoDirectionAttributeValue.String(), nginxZoneNameAttributeValue) } // RecordNginxStreamSessionStatusDataPoint adds a data point to nginx.stream.session.status metric. @@ -4108,9 +4108,14 @@ func (mb *MetricsBuilder) RecordNginxStreamSessionStatusDataPoint(ts pcommon.Tim mb.metricNginxStreamSessionStatus.recordDataPoint(mb.startTime, ts, val, nginxStatusRangeAttributeValue.String(), nginxZoneNameAttributeValue) } -// RecordNginxStreamUpstreamPeerByteIoDataPoint adds a data point to nginx.stream.upstream.peer.byte.io metric. -func (mb *MetricsBuilder) RecordNginxStreamUpstreamPeerByteIoDataPoint(ts pcommon.Timestamp, val int64, nginxByteIoDirectionAttributeValue AttributeNginxByteIoDirection, nginxZoneNameAttributeValue string, nginxUpstreamNameAttributeValue string, nginxPeerAddressAttributeValue string, nginxPeerNameAttributeValue string) { - mb.metricNginxStreamUpstreamPeerByteIo.recordDataPoint(mb.startTime, ts, val, nginxByteIoDirectionAttributeValue.String(), nginxZoneNameAttributeValue, nginxUpstreamNameAttributeValue, nginxPeerAddressAttributeValue, nginxPeerNameAttributeValue) +// RecordNginxStreamUpstreamPeerConnectionCountDataPoint adds a data point to nginx.stream.upstream.peer.connection.count metric. +func (mb *MetricsBuilder) RecordNginxStreamUpstreamPeerConnectionCountDataPoint(ts pcommon.Timestamp, val int64, nginxZoneNameAttributeValue string, nginxUpstreamNameAttributeValue string, nginxPeerAddressAttributeValue string, nginxPeerNameAttributeValue string) { + mb.metricNginxStreamUpstreamPeerConnectionCount.recordDataPoint(mb.startTime, ts, val, nginxZoneNameAttributeValue, nginxUpstreamNameAttributeValue, nginxPeerAddressAttributeValue, nginxPeerNameAttributeValue) +} + +// RecordNginxStreamUpstreamPeerConnectionTimeDataPoint adds a data point to nginx.stream.upstream.peer.connection.time metric. +func (mb *MetricsBuilder) RecordNginxStreamUpstreamPeerConnectionTimeDataPoint(ts pcommon.Timestamp, val int64, nginxZoneNameAttributeValue string, nginxUpstreamNameAttributeValue string, nginxPeerAddressAttributeValue string, nginxPeerNameAttributeValue string) { + mb.metricNginxStreamUpstreamPeerConnectionTime.recordDataPoint(mb.startTime, ts, val, nginxZoneNameAttributeValue, nginxUpstreamNameAttributeValue, nginxPeerAddressAttributeValue, nginxPeerNameAttributeValue) } // RecordNginxStreamUpstreamPeerConnectionsDataPoint adds a data point to nginx.stream.upstream.peer.connections metric. @@ -4118,16 +4123,6 @@ func (mb *MetricsBuilder) RecordNginxStreamUpstreamPeerConnectionsDataPoint(ts p mb.metricNginxStreamUpstreamPeerConnections.recordDataPoint(mb.startTime, ts, val, nginxZoneNameAttributeValue, nginxUpstreamNameAttributeValue, nginxPeerAddressAttributeValue, nginxPeerNameAttributeValue) } -// RecordNginxStreamUpstreamPeerConnectionsCountDataPoint adds a data point to nginx.stream.upstream.peer.connections.count metric. -func (mb *MetricsBuilder) RecordNginxStreamUpstreamPeerConnectionsCountDataPoint(ts pcommon.Timestamp, val int64, nginxZoneNameAttributeValue string, nginxUpstreamNameAttributeValue string, nginxPeerAddressAttributeValue string, nginxPeerNameAttributeValue string) { - mb.metricNginxStreamUpstreamPeerConnectionsCount.recordDataPoint(mb.startTime, ts, val, nginxZoneNameAttributeValue, nginxUpstreamNameAttributeValue, nginxPeerAddressAttributeValue, nginxPeerNameAttributeValue) -} - -// RecordNginxStreamUpstreamPeerConnectionsTimeDataPoint adds a data point to nginx.stream.upstream.peer.connections.time metric. -func (mb *MetricsBuilder) RecordNginxStreamUpstreamPeerConnectionsTimeDataPoint(ts pcommon.Timestamp, val int64, nginxZoneNameAttributeValue string, nginxUpstreamNameAttributeValue string, nginxPeerAddressAttributeValue string, nginxPeerNameAttributeValue string) { - mb.metricNginxStreamUpstreamPeerConnectionsTime.recordDataPoint(mb.startTime, ts, val, nginxZoneNameAttributeValue, nginxUpstreamNameAttributeValue, nginxPeerAddressAttributeValue, nginxPeerNameAttributeValue) -} - // RecordNginxStreamUpstreamPeerCountDataPoint adds a data point to nginx.stream.upstream.peer.count metric. func (mb *MetricsBuilder) RecordNginxStreamUpstreamPeerCountDataPoint(ts pcommon.Timestamp, val int64, nginxPeerStateAttributeValue AttributeNginxPeerState, nginxZoneNameAttributeValue string, nginxUpstreamNameAttributeValue string) { mb.metricNginxStreamUpstreamPeerCount.recordDataPoint(mb.startTime, ts, val, nginxPeerStateAttributeValue.String(), nginxZoneNameAttributeValue, nginxUpstreamNameAttributeValue) @@ -4143,6 +4138,11 @@ func (mb *MetricsBuilder) RecordNginxStreamUpstreamPeerHealthChecksDataPoint(ts mb.metricNginxStreamUpstreamPeerHealthChecks.recordDataPoint(mb.startTime, ts, val, nginxHealthCheckAttributeValue.String(), nginxZoneNameAttributeValue, nginxUpstreamNameAttributeValue, nginxPeerAddressAttributeValue, nginxPeerNameAttributeValue) } +// RecordNginxStreamUpstreamPeerIoDataPoint adds a data point to nginx.stream.upstream.peer.io metric. +func (mb *MetricsBuilder) RecordNginxStreamUpstreamPeerIoDataPoint(ts pcommon.Timestamp, val int64, nginxIoDirectionAttributeValue AttributeNginxIoDirection, nginxZoneNameAttributeValue string, nginxUpstreamNameAttributeValue string, nginxPeerAddressAttributeValue string, nginxPeerNameAttributeValue string) { + mb.metricNginxStreamUpstreamPeerIo.recordDataPoint(mb.startTime, ts, val, nginxIoDirectionAttributeValue.String(), nginxZoneNameAttributeValue, nginxUpstreamNameAttributeValue, nginxPeerAddressAttributeValue, nginxPeerNameAttributeValue) +} + // RecordNginxStreamUpstreamPeerResponseTimeDataPoint adds a data point to nginx.stream.upstream.peer.response.time metric. func (mb *MetricsBuilder) RecordNginxStreamUpstreamPeerResponseTimeDataPoint(ts pcommon.Timestamp, val int64, nginxZoneNameAttributeValue string, nginxUpstreamNameAttributeValue string, nginxPeerAddressAttributeValue string, nginxPeerNameAttributeValue string) { mb.metricNginxStreamUpstreamPeerResponseTime.recordDataPoint(mb.startTime, ts, val, nginxZoneNameAttributeValue, nginxUpstreamNameAttributeValue, nginxPeerAddressAttributeValue, nginxPeerNameAttributeValue) @@ -4158,9 +4158,9 @@ func (mb *MetricsBuilder) RecordNginxStreamUpstreamPeerTtfbTimeDataPoint(ts pcom mb.metricNginxStreamUpstreamPeerTtfbTime.recordDataPoint(mb.startTime, ts, val, nginxZoneNameAttributeValue, nginxUpstreamNameAttributeValue, nginxPeerAddressAttributeValue, nginxPeerNameAttributeValue) } -// RecordNginxStreamUpstreamPeerUnavailableDataPoint adds a data point to nginx.stream.upstream.peer.unavailable metric. -func (mb *MetricsBuilder) RecordNginxStreamUpstreamPeerUnavailableDataPoint(ts pcommon.Timestamp, val int64, nginxZoneNameAttributeValue string, nginxUpstreamNameAttributeValue string, nginxPeerAddressAttributeValue string, nginxPeerNameAttributeValue string) { - mb.metricNginxStreamUpstreamPeerUnavailable.recordDataPoint(mb.startTime, ts, val, nginxZoneNameAttributeValue, nginxUpstreamNameAttributeValue, nginxPeerAddressAttributeValue, nginxPeerNameAttributeValue) +// RecordNginxStreamUpstreamPeerUnavailablesDataPoint adds a data point to nginx.stream.upstream.peer.unavailables metric. +func (mb *MetricsBuilder) RecordNginxStreamUpstreamPeerUnavailablesDataPoint(ts pcommon.Timestamp, val int64, nginxZoneNameAttributeValue string, nginxUpstreamNameAttributeValue string, nginxPeerAddressAttributeValue string, nginxPeerNameAttributeValue string) { + mb.metricNginxStreamUpstreamPeerUnavailables.recordDataPoint(mb.startTime, ts, val, nginxZoneNameAttributeValue, nginxUpstreamNameAttributeValue, nginxPeerAddressAttributeValue, nginxPeerNameAttributeValue) } // RecordNginxStreamUpstreamZombieCountDataPoint adds a data point to nginx.stream.upstream.zombie.count metric. diff --git a/internal/collector/nginxplusreceiver/internal/metadata/generated_metrics_test.go b/internal/collector/nginxplusreceiver/internal/metadata/generated_metrics_test.go index 356c14890..915889b34 100644 --- a/internal/collector/nginxplusreceiver/internal/metadata/generated_metrics_test.go +++ b/internal/collector/nginxplusreceiver/internal/metadata/generated_metrics_test.go @@ -70,7 +70,7 @@ func TestMetricsBuilder(t *testing.T) { defaultMetricsCount++ allMetricsCount++ - mb.RecordNginxCacheBytesDataPoint(ts, 1, AttributeNginxCacheOutcomeBYPASS, "nginx.cache.name-val") + mb.RecordNginxCacheBytesReadDataPoint(ts, 1, AttributeNginxCacheOutcomeBYPASS, "nginx.cache.name-val") defaultMetricsCount++ allMetricsCount++ @@ -90,11 +90,11 @@ func TestMetricsBuilder(t *testing.T) { defaultMetricsCount++ allMetricsCount++ - mb.RecordNginxHTTPConnectionsDataPoint(ts, 1, AttributeNginxConnectionsOutcomeACCEPTED) + mb.RecordNginxHTTPConnectionCountDataPoint(ts, 1, AttributeNginxConnectionsOutcomeACCEPTED) defaultMetricsCount++ allMetricsCount++ - mb.RecordNginxHTTPConnectionsCountDataPoint(ts, 1, AttributeNginxConnectionsOutcomeACCEPTED) + mb.RecordNginxHTTPConnectionsDataPoint(ts, 1, AttributeNginxConnectionsOutcomeACCEPTED) defaultMetricsCount++ allMetricsCount++ @@ -106,7 +106,7 @@ func TestMetricsBuilder(t *testing.T) { defaultMetricsCount++ allMetricsCount++ - mb.RecordNginxHTTPRequestByteIoDataPoint(ts, 1, AttributeNginxByteIoDirectionRX, "nginx.zone.name-val", AttributeNginxZoneTypeSERVER) + mb.RecordNginxHTTPRequestCountDataPoint(ts, 1) defaultMetricsCount++ allMetricsCount++ @@ -114,15 +114,15 @@ func TestMetricsBuilder(t *testing.T) { defaultMetricsCount++ allMetricsCount++ - mb.RecordNginxHTTPRequestProcessingCountDataPoint(ts, 1, "nginx.zone.name-val", AttributeNginxZoneTypeSERVER) + mb.RecordNginxHTTPRequestIoDataPoint(ts, 1, AttributeNginxIoDirectionReceive, "nginx.zone.name-val", AttributeNginxZoneTypeSERVER) defaultMetricsCount++ allMetricsCount++ - mb.RecordNginxHTTPRequestsDataPoint(ts, 1, "nginx.zone.name-val", AttributeNginxZoneTypeSERVER) + mb.RecordNginxHTTPRequestProcessingCountDataPoint(ts, 1, "nginx.zone.name-val", AttributeNginxZoneTypeSERVER) defaultMetricsCount++ allMetricsCount++ - mb.RecordNginxHTTPRequestsCountDataPoint(ts, 1) + mb.RecordNginxHTTPRequestsDataPoint(ts, 1, "nginx.zone.name-val", AttributeNginxZoneTypeSERVER) defaultMetricsCount++ allMetricsCount++ @@ -138,11 +138,7 @@ func TestMetricsBuilder(t *testing.T) { defaultMetricsCount++ allMetricsCount++ - mb.RecordNginxHTTPUpstreamPeerByteIoDataPoint(ts, 1, AttributeNginxByteIoDirectionRX, "nginx.zone.name-val", "nginx.upstream.name-val", "nginx.peer.address-val", "nginx.peer.name-val") - - defaultMetricsCount++ - allMetricsCount++ - mb.RecordNginxHTTPUpstreamPeerConnectionsCountDataPoint(ts, 1, "nginx.zone.name-val", "nginx.upstream.name-val", "nginx.peer.address-val", "nginx.peer.name-val") + mb.RecordNginxHTTPUpstreamPeerConnectionCountDataPoint(ts, 1, "nginx.zone.name-val", "nginx.upstream.name-val", "nginx.peer.address-val", "nginx.peer.name-val") defaultMetricsCount++ allMetricsCount++ @@ -160,6 +156,10 @@ func TestMetricsBuilder(t *testing.T) { allMetricsCount++ mb.RecordNginxHTTPUpstreamPeerHealthChecksDataPoint(ts, 1, AttributeNginxHealthCheckUNHEALTHY, "nginx.zone.name-val", "nginx.upstream.name-val", "nginx.peer.address-val", "nginx.peer.name-val") + defaultMetricsCount++ + allMetricsCount++ + mb.RecordNginxHTTPUpstreamPeerIoDataPoint(ts, 1, AttributeNginxIoDirectionReceive, "nginx.zone.name-val", "nginx.upstream.name-val", "nginx.peer.address-val", "nginx.peer.name-val") + defaultMetricsCount++ allMetricsCount++ mb.RecordNginxHTTPUpstreamPeerRequestsDataPoint(ts, 1, "nginx.zone.name-val", "nginx.upstream.name-val", "nginx.peer.address-val", "nginx.peer.name-val") @@ -234,19 +234,19 @@ func TestMetricsBuilder(t *testing.T) { defaultMetricsCount++ allMetricsCount++ - mb.RecordNginxStreamByteIoDataPoint(ts, 1, AttributeNginxByteIoDirectionRX, "nginx.zone.name-val") + mb.RecordNginxStreamConnectionAcceptedDataPoint(ts, 1, "nginx.zone.name-val") defaultMetricsCount++ allMetricsCount++ - mb.RecordNginxStreamConnectionsAcceptedDataPoint(ts, 1, "nginx.zone.name-val") + mb.RecordNginxStreamConnectionDiscardedDataPoint(ts, 1, "nginx.zone.name-val") defaultMetricsCount++ allMetricsCount++ - mb.RecordNginxStreamConnectionsDiscardedDataPoint(ts, 1, "nginx.zone.name-val") + mb.RecordNginxStreamConnectionProcessingCountDataPoint(ts, 1, "nginx.zone.name-val") defaultMetricsCount++ allMetricsCount++ - mb.RecordNginxStreamConnectionsProcessingCountDataPoint(ts, 1, "nginx.zone.name-val") + mb.RecordNginxStreamIoDataPoint(ts, 1, AttributeNginxIoDirectionReceive, "nginx.zone.name-val") defaultMetricsCount++ allMetricsCount++ @@ -254,19 +254,15 @@ func TestMetricsBuilder(t *testing.T) { defaultMetricsCount++ allMetricsCount++ - mb.RecordNginxStreamUpstreamPeerByteIoDataPoint(ts, 1, AttributeNginxByteIoDirectionRX, "nginx.zone.name-val", "nginx.upstream.name-val", "nginx.peer.address-val", "nginx.peer.name-val") - - defaultMetricsCount++ - allMetricsCount++ - mb.RecordNginxStreamUpstreamPeerConnectionsDataPoint(ts, 1, "nginx.zone.name-val", "nginx.upstream.name-val", "nginx.peer.address-val", "nginx.peer.name-val") + mb.RecordNginxStreamUpstreamPeerConnectionCountDataPoint(ts, 1, "nginx.zone.name-val", "nginx.upstream.name-val", "nginx.peer.address-val", "nginx.peer.name-val") defaultMetricsCount++ allMetricsCount++ - mb.RecordNginxStreamUpstreamPeerConnectionsCountDataPoint(ts, 1, "nginx.zone.name-val", "nginx.upstream.name-val", "nginx.peer.address-val", "nginx.peer.name-val") + mb.RecordNginxStreamUpstreamPeerConnectionTimeDataPoint(ts, 1, "nginx.zone.name-val", "nginx.upstream.name-val", "nginx.peer.address-val", "nginx.peer.name-val") defaultMetricsCount++ allMetricsCount++ - mb.RecordNginxStreamUpstreamPeerConnectionsTimeDataPoint(ts, 1, "nginx.zone.name-val", "nginx.upstream.name-val", "nginx.peer.address-val", "nginx.peer.name-val") + mb.RecordNginxStreamUpstreamPeerConnectionsDataPoint(ts, 1, "nginx.zone.name-val", "nginx.upstream.name-val", "nginx.peer.address-val", "nginx.peer.name-val") defaultMetricsCount++ allMetricsCount++ @@ -280,6 +276,10 @@ func TestMetricsBuilder(t *testing.T) { allMetricsCount++ mb.RecordNginxStreamUpstreamPeerHealthChecksDataPoint(ts, 1, AttributeNginxHealthCheckUNHEALTHY, "nginx.zone.name-val", "nginx.upstream.name-val", "nginx.peer.address-val", "nginx.peer.name-val") + defaultMetricsCount++ + allMetricsCount++ + mb.RecordNginxStreamUpstreamPeerIoDataPoint(ts, 1, AttributeNginxIoDirectionReceive, "nginx.zone.name-val", "nginx.upstream.name-val", "nginx.peer.address-val", "nginx.peer.name-val") + defaultMetricsCount++ allMetricsCount++ mb.RecordNginxStreamUpstreamPeerResponseTimeDataPoint(ts, 1, "nginx.zone.name-val", "nginx.upstream.name-val", "nginx.peer.address-val", "nginx.peer.name-val") @@ -294,7 +294,7 @@ func TestMetricsBuilder(t *testing.T) { defaultMetricsCount++ allMetricsCount++ - mb.RecordNginxStreamUpstreamPeerUnavailableDataPoint(ts, 1, "nginx.zone.name-val", "nginx.upstream.name-val", "nginx.peer.address-val", "nginx.peer.name-val") + mb.RecordNginxStreamUpstreamPeerUnavailablesDataPoint(ts, 1, "nginx.zone.name-val", "nginx.upstream.name-val", "nginx.peer.address-val", "nginx.peer.name-val") defaultMetricsCount++ allMetricsCount++ @@ -325,9 +325,9 @@ func TestMetricsBuilder(t *testing.T) { validatedMetrics := make(map[string]bool) for i := 0; i < ms.Len(); i++ { switch ms.At(i).Name() { - case "nginx.cache.bytes": - assert.False(t, validatedMetrics["nginx.cache.bytes"], "Found a duplicate in the metrics slice: nginx.cache.bytes") - validatedMetrics["nginx.cache.bytes"] = true + case "nginx.cache.bytes_read": + assert.False(t, validatedMetrics["nginx.cache.bytes_read"], "Found a duplicate in the metrics slice: nginx.cache.bytes_read") + validatedMetrics["nginx.cache.bytes_read"] = true assert.Equal(t, pmetric.MetricTypeSum, ms.At(i).Type()) assert.Equal(t, 1, ms.At(i).Sum().DataPoints().Len()) assert.Equal(t, "The total number of bytes read from the cache or proxied server.", ms.At(i).Description()) @@ -409,6 +409,21 @@ func TestMetricsBuilder(t *testing.T) { assert.Equal(t, ts, dp.Timestamp()) assert.Equal(t, pmetric.NumberDataPointValueTypeInt, dp.ValueType()) assert.Equal(t, int64(1), dp.IntValue()) + case "nginx.http.connection.count": + assert.False(t, validatedMetrics["nginx.http.connection.count"], "Found a duplicate in the metrics slice: nginx.http.connection.count") + validatedMetrics["nginx.http.connection.count"] = true + assert.Equal(t, pmetric.MetricTypeGauge, ms.At(i).Type()) + assert.Equal(t, 1, ms.At(i).Gauge().DataPoints().Len()) + assert.Equal(t, "The current number of connections.", ms.At(i).Description()) + assert.Equal(t, "connections", ms.At(i).Unit()) + dp := ms.At(i).Gauge().DataPoints().At(0) + assert.Equal(t, start, dp.StartTimestamp()) + assert.Equal(t, ts, dp.Timestamp()) + assert.Equal(t, pmetric.NumberDataPointValueTypeInt, dp.ValueType()) + assert.Equal(t, int64(1), dp.IntValue()) + attrVal, ok := dp.Attributes().Get("nginx.connections.outcome") + assert.True(t, ok) + assert.EqualValues(t, "ACCEPTED", attrVal.Str()) case "nginx.http.connections": assert.False(t, validatedMetrics["nginx.http.connections"], "Found a duplicate in the metrics slice: nginx.http.connections") validatedMetrics["nginx.http.connections"] = true @@ -426,21 +441,6 @@ func TestMetricsBuilder(t *testing.T) { attrVal, ok := dp.Attributes().Get("nginx.connections.outcome") assert.True(t, ok) assert.EqualValues(t, "ACCEPTED", attrVal.Str()) - case "nginx.http.connections.count": - assert.False(t, validatedMetrics["nginx.http.connections.count"], "Found a duplicate in the metrics slice: nginx.http.connections.count") - validatedMetrics["nginx.http.connections.count"] = true - assert.Equal(t, pmetric.MetricTypeGauge, ms.At(i).Type()) - assert.Equal(t, 1, ms.At(i).Gauge().DataPoints().Len()) - assert.Equal(t, "The current number of connections.", ms.At(i).Description()) - assert.Equal(t, "connections", ms.At(i).Unit()) - dp := ms.At(i).Gauge().DataPoints().At(0) - assert.Equal(t, start, dp.StartTimestamp()) - assert.Equal(t, ts, dp.Timestamp()) - assert.Equal(t, pmetric.NumberDataPointValueTypeInt, dp.ValueType()) - assert.Equal(t, int64(1), dp.IntValue()) - attrVal, ok := dp.Attributes().Get("nginx.connections.outcome") - assert.True(t, ok) - assert.EqualValues(t, "ACCEPTED", attrVal.Str()) case "nginx.http.limit_conn.requests": assert.False(t, validatedMetrics["nginx.http.limit_conn.requests"], "Found a duplicate in the metrics slice: nginx.http.limit_conn.requests") validatedMetrics["nginx.http.limit_conn.requests"] = true @@ -481,13 +481,25 @@ func TestMetricsBuilder(t *testing.T) { attrVal, ok = dp.Attributes().Get("nginx.zone.name") assert.True(t, ok) assert.EqualValues(t, "nginx.zone.name-val", attrVal.Str()) - case "nginx.http.request.byte.io": - assert.False(t, validatedMetrics["nginx.http.request.byte.io"], "Found a duplicate in the metrics slice: nginx.http.request.byte.io") - validatedMetrics["nginx.http.request.byte.io"] = true + case "nginx.http.request.count": + assert.False(t, validatedMetrics["nginx.http.request.count"], "Found a duplicate in the metrics slice: nginx.http.request.count") + validatedMetrics["nginx.http.request.count"] = true + assert.Equal(t, pmetric.MetricTypeGauge, ms.At(i).Type()) + assert.Equal(t, 1, ms.At(i).Gauge().DataPoints().Len()) + assert.Equal(t, "The current number of client requests received from clients.", ms.At(i).Description()) + assert.Equal(t, "requests", ms.At(i).Unit()) + dp := ms.At(i).Gauge().DataPoints().At(0) + assert.Equal(t, start, dp.StartTimestamp()) + assert.Equal(t, ts, dp.Timestamp()) + assert.Equal(t, pmetric.NumberDataPointValueTypeInt, dp.ValueType()) + assert.Equal(t, int64(1), dp.IntValue()) + case "nginx.http.request.discarded": + assert.False(t, validatedMetrics["nginx.http.request.discarded"], "Found a duplicate in the metrics slice: nginx.http.request.discarded") + validatedMetrics["nginx.http.request.discarded"] = true assert.Equal(t, pmetric.MetricTypeSum, ms.At(i).Type()) assert.Equal(t, 1, ms.At(i).Sum().DataPoints().Len()) - assert.Equal(t, "The total number of HTTP byte IO.", ms.At(i).Description()) - assert.Equal(t, "bytes", ms.At(i).Unit()) + assert.Equal(t, "The total number of requests completed without sending a response.", ms.At(i).Description()) + assert.Equal(t, "requests", ms.At(i).Unit()) assert.True(t, ms.At(i).Sum().IsMonotonic()) assert.Equal(t, pmetric.AggregationTemporalityCumulative, ms.At(i).Sum().AggregationTemporality()) dp := ms.At(i).Sum().DataPoints().At(0) @@ -495,22 +507,19 @@ func TestMetricsBuilder(t *testing.T) { assert.Equal(t, ts, dp.Timestamp()) assert.Equal(t, pmetric.NumberDataPointValueTypeInt, dp.ValueType()) assert.Equal(t, int64(1), dp.IntValue()) - attrVal, ok := dp.Attributes().Get("nginx.byte.io.direction") - assert.True(t, ok) - assert.EqualValues(t, "RX", attrVal.Str()) - attrVal, ok = dp.Attributes().Get("nginx.zone.name") + attrVal, ok := dp.Attributes().Get("nginx.zone.name") assert.True(t, ok) assert.EqualValues(t, "nginx.zone.name-val", attrVal.Str()) attrVal, ok = dp.Attributes().Get("nginx.zone.type") assert.True(t, ok) assert.EqualValues(t, "SERVER", attrVal.Str()) - case "nginx.http.request.discarded": - assert.False(t, validatedMetrics["nginx.http.request.discarded"], "Found a duplicate in the metrics slice: nginx.http.request.discarded") - validatedMetrics["nginx.http.request.discarded"] = true + case "nginx.http.request.io": + assert.False(t, validatedMetrics["nginx.http.request.io"], "Found a duplicate in the metrics slice: nginx.http.request.io") + validatedMetrics["nginx.http.request.io"] = true assert.Equal(t, pmetric.MetricTypeSum, ms.At(i).Type()) assert.Equal(t, 1, ms.At(i).Sum().DataPoints().Len()) - assert.Equal(t, "The total number of requests completed without sending a response.", ms.At(i).Description()) - assert.Equal(t, "requests", ms.At(i).Unit()) + assert.Equal(t, "The total number of HTTP byte IO.", ms.At(i).Description()) + assert.Equal(t, "bytes", ms.At(i).Unit()) assert.True(t, ms.At(i).Sum().IsMonotonic()) assert.Equal(t, pmetric.AggregationTemporalityCumulative, ms.At(i).Sum().AggregationTemporality()) dp := ms.At(i).Sum().DataPoints().At(0) @@ -518,7 +527,10 @@ func TestMetricsBuilder(t *testing.T) { assert.Equal(t, ts, dp.Timestamp()) assert.Equal(t, pmetric.NumberDataPointValueTypeInt, dp.ValueType()) assert.Equal(t, int64(1), dp.IntValue()) - attrVal, ok := dp.Attributes().Get("nginx.zone.name") + attrVal, ok := dp.Attributes().Get("nginx.io.direction") + assert.True(t, ok) + assert.EqualValues(t, "receive", attrVal.Str()) + attrVal, ok = dp.Attributes().Get("nginx.zone.name") assert.True(t, ok) assert.EqualValues(t, "nginx.zone.name-val", attrVal.Str()) attrVal, ok = dp.Attributes().Get("nginx.zone.type") @@ -562,18 +574,6 @@ func TestMetricsBuilder(t *testing.T) { attrVal, ok = dp.Attributes().Get("nginx.zone.type") assert.True(t, ok) assert.EqualValues(t, "SERVER", attrVal.Str()) - case "nginx.http.requests.count": - assert.False(t, validatedMetrics["nginx.http.requests.count"], "Found a duplicate in the metrics slice: nginx.http.requests.count") - validatedMetrics["nginx.http.requests.count"] = true - assert.Equal(t, pmetric.MetricTypeGauge, ms.At(i).Type()) - assert.Equal(t, 1, ms.At(i).Gauge().DataPoints().Len()) - assert.Equal(t, "The current number of client requests received from clients.", ms.At(i).Description()) - assert.Equal(t, "requests", ms.At(i).Unit()) - dp := ms.At(i).Gauge().DataPoints().At(0) - assert.Equal(t, start, dp.StartTimestamp()) - assert.Equal(t, ts, dp.Timestamp()) - assert.Equal(t, pmetric.NumberDataPointValueTypeInt, dp.ValueType()) - assert.Equal(t, int64(1), dp.IntValue()) case "nginx.http.response.status": assert.False(t, validatedMetrics["nginx.http.response.status"], "Found a duplicate in the metrics slice: nginx.http.response.status") validatedMetrics["nginx.http.response.status"] = true @@ -602,7 +602,7 @@ func TestMetricsBuilder(t *testing.T) { validatedMetrics["nginx.http.responses"] = true assert.Equal(t, pmetric.MetricTypeSum, ms.At(i).Type()) assert.Equal(t, 1, ms.At(i).Sum().DataPoints().Len()) - assert.Equal(t, "The total number of client requests received from clients.", ms.At(i).Description()) + assert.Equal(t, "The total number of HTTP responses sent to clients.", ms.At(i).Description()) assert.Equal(t, "responses", ms.At(i).Unit()) assert.True(t, ms.At(i).Sum().IsMonotonic()) assert.Equal(t, pmetric.AggregationTemporalityCumulative, ms.At(i).Sum().AggregationTemporality()) @@ -635,38 +635,9 @@ func TestMetricsBuilder(t *testing.T) { attrVal, ok = dp.Attributes().Get("nginx.upstream.name") assert.True(t, ok) assert.EqualValues(t, "nginx.upstream.name-val", attrVal.Str()) - case "nginx.http.upstream.peer.byte.io": - assert.False(t, validatedMetrics["nginx.http.upstream.peer.byte.io"], "Found a duplicate in the metrics slice: nginx.http.upstream.peer.byte.io") - validatedMetrics["nginx.http.upstream.peer.byte.io"] = true - assert.Equal(t, pmetric.MetricTypeSum, ms.At(i).Type()) - assert.Equal(t, 1, ms.At(i).Sum().DataPoints().Len()) - assert.Equal(t, "The total number of byte IO per HTTP upstream peer.", ms.At(i).Description()) - assert.Equal(t, "bytes", ms.At(i).Unit()) - assert.True(t, ms.At(i).Sum().IsMonotonic()) - assert.Equal(t, pmetric.AggregationTemporalityCumulative, ms.At(i).Sum().AggregationTemporality()) - dp := ms.At(i).Sum().DataPoints().At(0) - assert.Equal(t, start, dp.StartTimestamp()) - assert.Equal(t, ts, dp.Timestamp()) - assert.Equal(t, pmetric.NumberDataPointValueTypeInt, dp.ValueType()) - assert.Equal(t, int64(1), dp.IntValue()) - attrVal, ok := dp.Attributes().Get("nginx.byte.io.direction") - assert.True(t, ok) - assert.EqualValues(t, "RX", attrVal.Str()) - attrVal, ok = dp.Attributes().Get("nginx.zone.name") - assert.True(t, ok) - assert.EqualValues(t, "nginx.zone.name-val", attrVal.Str()) - attrVal, ok = dp.Attributes().Get("nginx.upstream.name") - assert.True(t, ok) - assert.EqualValues(t, "nginx.upstream.name-val", attrVal.Str()) - attrVal, ok = dp.Attributes().Get("nginx.peer.address") - assert.True(t, ok) - assert.EqualValues(t, "nginx.peer.address-val", attrVal.Str()) - attrVal, ok = dp.Attributes().Get("nginx.peer.name") - assert.True(t, ok) - assert.EqualValues(t, "nginx.peer.name-val", attrVal.Str()) - case "nginx.http.upstream.peer.connections.count": - assert.False(t, validatedMetrics["nginx.http.upstream.peer.connections.count"], "Found a duplicate in the metrics slice: nginx.http.upstream.peer.connections.count") - validatedMetrics["nginx.http.upstream.peer.connections.count"] = true + case "nginx.http.upstream.peer.connection.count": + assert.False(t, validatedMetrics["nginx.http.upstream.peer.connection.count"], "Found a duplicate in the metrics slice: nginx.http.upstream.peer.connection.count") + validatedMetrics["nginx.http.upstream.peer.connection.count"] = true assert.Equal(t, pmetric.MetricTypeGauge, ms.At(i).Type()) assert.Equal(t, 1, ms.At(i).Gauge().DataPoints().Len()) assert.Equal(t, "The average number of active connections per HTTP upstream peer.", ms.At(i).Description()) @@ -712,11 +683,13 @@ func TestMetricsBuilder(t *testing.T) { case "nginx.http.upstream.peer.fails": assert.False(t, validatedMetrics["nginx.http.upstream.peer.fails"], "Found a duplicate in the metrics slice: nginx.http.upstream.peer.fails") validatedMetrics["nginx.http.upstream.peer.fails"] = true - assert.Equal(t, pmetric.MetricTypeGauge, ms.At(i).Type()) - assert.Equal(t, 1, ms.At(i).Gauge().DataPoints().Len()) + assert.Equal(t, pmetric.MetricTypeSum, ms.At(i).Type()) + assert.Equal(t, 1, ms.At(i).Sum().DataPoints().Len()) assert.Equal(t, "The total number of unsuccessful attempts to communicate with the HTTP upstream peer.", ms.At(i).Description()) assert.Equal(t, "attempts", ms.At(i).Unit()) - dp := ms.At(i).Gauge().DataPoints().At(0) + assert.True(t, ms.At(i).Sum().IsMonotonic()) + assert.Equal(t, pmetric.AggregationTemporalityCumulative, ms.At(i).Sum().AggregationTemporality()) + dp := ms.At(i).Sum().DataPoints().At(0) assert.Equal(t, start, dp.StartTimestamp()) assert.Equal(t, ts, dp.Timestamp()) assert.Equal(t, pmetric.NumberDataPointValueTypeInt, dp.ValueType()) @@ -786,6 +759,35 @@ func TestMetricsBuilder(t *testing.T) { attrVal, ok = dp.Attributes().Get("nginx.peer.name") assert.True(t, ok) assert.EqualValues(t, "nginx.peer.name-val", attrVal.Str()) + case "nginx.http.upstream.peer.io": + assert.False(t, validatedMetrics["nginx.http.upstream.peer.io"], "Found a duplicate in the metrics slice: nginx.http.upstream.peer.io") + validatedMetrics["nginx.http.upstream.peer.io"] = true + assert.Equal(t, pmetric.MetricTypeSum, ms.At(i).Type()) + assert.Equal(t, 1, ms.At(i).Sum().DataPoints().Len()) + assert.Equal(t, "The total number of byte IO per HTTP upstream peer.", ms.At(i).Description()) + assert.Equal(t, "bytes", ms.At(i).Unit()) + assert.True(t, ms.At(i).Sum().IsMonotonic()) + assert.Equal(t, pmetric.AggregationTemporalityCumulative, ms.At(i).Sum().AggregationTemporality()) + dp := ms.At(i).Sum().DataPoints().At(0) + assert.Equal(t, start, dp.StartTimestamp()) + assert.Equal(t, ts, dp.Timestamp()) + assert.Equal(t, pmetric.NumberDataPointValueTypeInt, dp.ValueType()) + assert.Equal(t, int64(1), dp.IntValue()) + attrVal, ok := dp.Attributes().Get("nginx.io.direction") + assert.True(t, ok) + assert.EqualValues(t, "receive", attrVal.Str()) + attrVal, ok = dp.Attributes().Get("nginx.zone.name") + assert.True(t, ok) + assert.EqualValues(t, "nginx.zone.name-val", attrVal.Str()) + attrVal, ok = dp.Attributes().Get("nginx.upstream.name") + assert.True(t, ok) + assert.EqualValues(t, "nginx.upstream.name-val", attrVal.Str()) + attrVal, ok = dp.Attributes().Get("nginx.peer.address") + assert.True(t, ok) + assert.EqualValues(t, "nginx.peer.address-val", attrVal.Str()) + attrVal, ok = dp.Attributes().Get("nginx.peer.name") + assert.True(t, ok) + assert.EqualValues(t, "nginx.peer.name-val", attrVal.Str()) case "nginx.http.upstream.peer.requests": assert.False(t, validatedMetrics["nginx.http.upstream.peer.requests"], "Found a duplicate in the metrics slice: nginx.http.upstream.peer.requests") validatedMetrics["nginx.http.upstream.peer.requests"] = true @@ -1148,29 +1150,9 @@ func TestMetricsBuilder(t *testing.T) { attrVal, ok = dp.Attributes().Get("nginx.ssl.handshake.reason") assert.True(t, ok) assert.EqualValues(t, "NO_COMMON_PROTOCOL", attrVal.Str()) - case "nginx.stream.byte.io": - assert.False(t, validatedMetrics["nginx.stream.byte.io"], "Found a duplicate in the metrics slice: nginx.stream.byte.io") - validatedMetrics["nginx.stream.byte.io"] = true - assert.Equal(t, pmetric.MetricTypeSum, ms.At(i).Type()) - assert.Equal(t, 1, ms.At(i).Sum().DataPoints().Len()) - assert.Equal(t, "The total number of Stream byte IO.", ms.At(i).Description()) - assert.Equal(t, "bytes", ms.At(i).Unit()) - assert.True(t, ms.At(i).Sum().IsMonotonic()) - assert.Equal(t, pmetric.AggregationTemporalityCumulative, ms.At(i).Sum().AggregationTemporality()) - dp := ms.At(i).Sum().DataPoints().At(0) - assert.Equal(t, start, dp.StartTimestamp()) - assert.Equal(t, ts, dp.Timestamp()) - assert.Equal(t, pmetric.NumberDataPointValueTypeInt, dp.ValueType()) - assert.Equal(t, int64(1), dp.IntValue()) - attrVal, ok := dp.Attributes().Get("nginx.byte.io.direction") - assert.True(t, ok) - assert.EqualValues(t, "RX", attrVal.Str()) - attrVal, ok = dp.Attributes().Get("nginx.zone.name") - assert.True(t, ok) - assert.EqualValues(t, "nginx.zone.name-val", attrVal.Str()) - case "nginx.stream.connections.accepted": - assert.False(t, validatedMetrics["nginx.stream.connections.accepted"], "Found a duplicate in the metrics slice: nginx.stream.connections.accepted") - validatedMetrics["nginx.stream.connections.accepted"] = true + case "nginx.stream.connection.accepted": + assert.False(t, validatedMetrics["nginx.stream.connection.accepted"], "Found a duplicate in the metrics slice: nginx.stream.connection.accepted") + validatedMetrics["nginx.stream.connection.accepted"] = true assert.Equal(t, pmetric.MetricTypeSum, ms.At(i).Type()) assert.Equal(t, 1, ms.At(i).Sum().DataPoints().Len()) assert.Equal(t, "The total number of connections accepted from clients.", ms.At(i).Description()) @@ -1185,9 +1167,9 @@ func TestMetricsBuilder(t *testing.T) { attrVal, ok := dp.Attributes().Get("nginx.zone.name") assert.True(t, ok) assert.EqualValues(t, "nginx.zone.name-val", attrVal.Str()) - case "nginx.stream.connections.discarded": - assert.False(t, validatedMetrics["nginx.stream.connections.discarded"], "Found a duplicate in the metrics slice: nginx.stream.connections.discarded") - validatedMetrics["nginx.stream.connections.discarded"] = true + case "nginx.stream.connection.discarded": + assert.False(t, validatedMetrics["nginx.stream.connection.discarded"], "Found a duplicate in the metrics slice: nginx.stream.connection.discarded") + validatedMetrics["nginx.stream.connection.discarded"] = true assert.Equal(t, pmetric.MetricTypeSum, ms.At(i).Type()) assert.Equal(t, 1, ms.At(i).Sum().DataPoints().Len()) assert.Equal(t, "Total number of connections completed without creating a session.", ms.At(i).Description()) @@ -1202,9 +1184,9 @@ func TestMetricsBuilder(t *testing.T) { attrVal, ok := dp.Attributes().Get("nginx.zone.name") assert.True(t, ok) assert.EqualValues(t, "nginx.zone.name-val", attrVal.Str()) - case "nginx.stream.connections.processing.count": - assert.False(t, validatedMetrics["nginx.stream.connections.processing.count"], "Found a duplicate in the metrics slice: nginx.stream.connections.processing.count") - validatedMetrics["nginx.stream.connections.processing.count"] = true + case "nginx.stream.connection.processing.count": + assert.False(t, validatedMetrics["nginx.stream.connection.processing.count"], "Found a duplicate in the metrics slice: nginx.stream.connection.processing.count") + validatedMetrics["nginx.stream.connection.processing.count"] = true assert.Equal(t, pmetric.MetricTypeGauge, ms.At(i).Type()) assert.Equal(t, 1, ms.At(i).Gauge().DataPoints().Len()) assert.Equal(t, "The number of client connections that are currently being processed.", ms.At(i).Description()) @@ -1217,13 +1199,13 @@ func TestMetricsBuilder(t *testing.T) { attrVal, ok := dp.Attributes().Get("nginx.zone.name") assert.True(t, ok) assert.EqualValues(t, "nginx.zone.name-val", attrVal.Str()) - case "nginx.stream.session.status": - assert.False(t, validatedMetrics["nginx.stream.session.status"], "Found a duplicate in the metrics slice: nginx.stream.session.status") - validatedMetrics["nginx.stream.session.status"] = true + case "nginx.stream.io": + assert.False(t, validatedMetrics["nginx.stream.io"], "Found a duplicate in the metrics slice: nginx.stream.io") + validatedMetrics["nginx.stream.io"] = true assert.Equal(t, pmetric.MetricTypeSum, ms.At(i).Type()) assert.Equal(t, 1, ms.At(i).Sum().DataPoints().Len()) - assert.Equal(t, "The total number of completed sessions.", ms.At(i).Description()) - assert.Equal(t, "sessions", ms.At(i).Unit()) + assert.Equal(t, "The total number of Stream byte IO.", ms.At(i).Description()) + assert.Equal(t, "bytes", ms.At(i).Unit()) assert.True(t, ms.At(i).Sum().IsMonotonic()) assert.Equal(t, pmetric.AggregationTemporalityCumulative, ms.At(i).Sum().AggregationTemporality()) dp := ms.At(i).Sum().DataPoints().At(0) @@ -1231,19 +1213,19 @@ func TestMetricsBuilder(t *testing.T) { assert.Equal(t, ts, dp.Timestamp()) assert.Equal(t, pmetric.NumberDataPointValueTypeInt, dp.ValueType()) assert.Equal(t, int64(1), dp.IntValue()) - attrVal, ok := dp.Attributes().Get("nginx.status_range") + attrVal, ok := dp.Attributes().Get("nginx.io.direction") assert.True(t, ok) - assert.EqualValues(t, "1xx", attrVal.Str()) + assert.EqualValues(t, "receive", attrVal.Str()) attrVal, ok = dp.Attributes().Get("nginx.zone.name") assert.True(t, ok) assert.EqualValues(t, "nginx.zone.name-val", attrVal.Str()) - case "nginx.stream.upstream.peer.byte.io": - assert.False(t, validatedMetrics["nginx.stream.upstream.peer.byte.io"], "Found a duplicate in the metrics slice: nginx.stream.upstream.peer.byte.io") - validatedMetrics["nginx.stream.upstream.peer.byte.io"] = true + case "nginx.stream.session.status": + assert.False(t, validatedMetrics["nginx.stream.session.status"], "Found a duplicate in the metrics slice: nginx.stream.session.status") + validatedMetrics["nginx.stream.session.status"] = true assert.Equal(t, pmetric.MetricTypeSum, ms.At(i).Type()) assert.Equal(t, 1, ms.At(i).Sum().DataPoints().Len()) - assert.Equal(t, "The total number of Stream Upstream Peer byte IO.", ms.At(i).Description()) - assert.Equal(t, "bytes", ms.At(i).Unit()) + assert.Equal(t, "The total number of completed sessions.", ms.At(i).Description()) + assert.Equal(t, "sessions", ms.At(i).Unit()) assert.True(t, ms.At(i).Sum().IsMonotonic()) assert.Equal(t, pmetric.AggregationTemporalityCumulative, ms.At(i).Sum().AggregationTemporality()) dp := ms.At(i).Sum().DataPoints().At(0) @@ -1251,31 +1233,20 @@ func TestMetricsBuilder(t *testing.T) { assert.Equal(t, ts, dp.Timestamp()) assert.Equal(t, pmetric.NumberDataPointValueTypeInt, dp.ValueType()) assert.Equal(t, int64(1), dp.IntValue()) - attrVal, ok := dp.Attributes().Get("nginx.byte.io.direction") + attrVal, ok := dp.Attributes().Get("nginx.status_range") assert.True(t, ok) - assert.EqualValues(t, "RX", attrVal.Str()) + assert.EqualValues(t, "1xx", attrVal.Str()) attrVal, ok = dp.Attributes().Get("nginx.zone.name") assert.True(t, ok) assert.EqualValues(t, "nginx.zone.name-val", attrVal.Str()) - attrVal, ok = dp.Attributes().Get("nginx.upstream.name") - assert.True(t, ok) - assert.EqualValues(t, "nginx.upstream.name-val", attrVal.Str()) - attrVal, ok = dp.Attributes().Get("nginx.peer.address") - assert.True(t, ok) - assert.EqualValues(t, "nginx.peer.address-val", attrVal.Str()) - attrVal, ok = dp.Attributes().Get("nginx.peer.name") - assert.True(t, ok) - assert.EqualValues(t, "nginx.peer.name-val", attrVal.Str()) - case "nginx.stream.upstream.peer.connections": - assert.False(t, validatedMetrics["nginx.stream.upstream.peer.connections"], "Found a duplicate in the metrics slice: nginx.stream.upstream.peer.connections") - validatedMetrics["nginx.stream.upstream.peer.connections"] = true - assert.Equal(t, pmetric.MetricTypeSum, ms.At(i).Type()) - assert.Equal(t, 1, ms.At(i).Sum().DataPoints().Len()) - assert.Equal(t, "The total number of client connections forwarded to this stream upstream peer.", ms.At(i).Description()) + case "nginx.stream.upstream.peer.connection.count": + assert.False(t, validatedMetrics["nginx.stream.upstream.peer.connection.count"], "Found a duplicate in the metrics slice: nginx.stream.upstream.peer.connection.count") + validatedMetrics["nginx.stream.upstream.peer.connection.count"] = true + assert.Equal(t, pmetric.MetricTypeGauge, ms.At(i).Type()) + assert.Equal(t, 1, ms.At(i).Gauge().DataPoints().Len()) + assert.Equal(t, "The current number of Stream Upstream Peer connections.", ms.At(i).Description()) assert.Equal(t, "connections", ms.At(i).Unit()) - assert.True(t, ms.At(i).Sum().IsMonotonic()) - assert.Equal(t, pmetric.AggregationTemporalityCumulative, ms.At(i).Sum().AggregationTemporality()) - dp := ms.At(i).Sum().DataPoints().At(0) + dp := ms.At(i).Gauge().DataPoints().At(0) assert.Equal(t, start, dp.StartTimestamp()) assert.Equal(t, ts, dp.Timestamp()) assert.Equal(t, pmetric.NumberDataPointValueTypeInt, dp.ValueType()) @@ -1292,13 +1263,13 @@ func TestMetricsBuilder(t *testing.T) { attrVal, ok = dp.Attributes().Get("nginx.peer.name") assert.True(t, ok) assert.EqualValues(t, "nginx.peer.name-val", attrVal.Str()) - case "nginx.stream.upstream.peer.connections.count": - assert.False(t, validatedMetrics["nginx.stream.upstream.peer.connections.count"], "Found a duplicate in the metrics slice: nginx.stream.upstream.peer.connections.count") - validatedMetrics["nginx.stream.upstream.peer.connections.count"] = true + case "nginx.stream.upstream.peer.connection.time": + assert.False(t, validatedMetrics["nginx.stream.upstream.peer.connection.time"], "Found a duplicate in the metrics slice: nginx.stream.upstream.peer.connection.time") + validatedMetrics["nginx.stream.upstream.peer.connection.time"] = true assert.Equal(t, pmetric.MetricTypeGauge, ms.At(i).Type()) assert.Equal(t, 1, ms.At(i).Gauge().DataPoints().Len()) - assert.Equal(t, "The current number of Stream Upstream Peer connections.", ms.At(i).Description()) - assert.Equal(t, "connections", ms.At(i).Unit()) + assert.Equal(t, "The average time to connect to the stream upstream peer.", ms.At(i).Description()) + assert.Equal(t, "ms", ms.At(i).Unit()) dp := ms.At(i).Gauge().DataPoints().At(0) assert.Equal(t, start, dp.StartTimestamp()) assert.Equal(t, ts, dp.Timestamp()) @@ -1316,14 +1287,16 @@ func TestMetricsBuilder(t *testing.T) { attrVal, ok = dp.Attributes().Get("nginx.peer.name") assert.True(t, ok) assert.EqualValues(t, "nginx.peer.name-val", attrVal.Str()) - case "nginx.stream.upstream.peer.connections.time": - assert.False(t, validatedMetrics["nginx.stream.upstream.peer.connections.time"], "Found a duplicate in the metrics slice: nginx.stream.upstream.peer.connections.time") - validatedMetrics["nginx.stream.upstream.peer.connections.time"] = true - assert.Equal(t, pmetric.MetricTypeGauge, ms.At(i).Type()) - assert.Equal(t, 1, ms.At(i).Gauge().DataPoints().Len()) - assert.Equal(t, "The average time to connect to the stream upstream peer.", ms.At(i).Description()) - assert.Equal(t, "ms", ms.At(i).Unit()) - dp := ms.At(i).Gauge().DataPoints().At(0) + case "nginx.stream.upstream.peer.connections": + assert.False(t, validatedMetrics["nginx.stream.upstream.peer.connections"], "Found a duplicate in the metrics slice: nginx.stream.upstream.peer.connections") + validatedMetrics["nginx.stream.upstream.peer.connections"] = true + assert.Equal(t, pmetric.MetricTypeSum, ms.At(i).Type()) + assert.Equal(t, 1, ms.At(i).Sum().DataPoints().Len()) + assert.Equal(t, "The total number of client connections forwarded to this stream upstream peer.", ms.At(i).Description()) + assert.Equal(t, "connections", ms.At(i).Unit()) + assert.True(t, ms.At(i).Sum().IsMonotonic()) + assert.Equal(t, pmetric.AggregationTemporalityCumulative, ms.At(i).Sum().AggregationTemporality()) + dp := ms.At(i).Sum().DataPoints().At(0) assert.Equal(t, start, dp.StartTimestamp()) assert.Equal(t, ts, dp.Timestamp()) assert.Equal(t, pmetric.NumberDataPointValueTypeInt, dp.ValueType()) @@ -1343,13 +1316,11 @@ func TestMetricsBuilder(t *testing.T) { case "nginx.stream.upstream.peer.count": assert.False(t, validatedMetrics["nginx.stream.upstream.peer.count"], "Found a duplicate in the metrics slice: nginx.stream.upstream.peer.count") validatedMetrics["nginx.stream.upstream.peer.count"] = true - assert.Equal(t, pmetric.MetricTypeSum, ms.At(i).Type()) - assert.Equal(t, 1, ms.At(i).Sum().DataPoints().Len()) - assert.Equal(t, "The total number of stream upstream peers grouped by state.", ms.At(i).Description()) + assert.Equal(t, pmetric.MetricTypeGauge, ms.At(i).Type()) + assert.Equal(t, 1, ms.At(i).Gauge().DataPoints().Len()) + assert.Equal(t, "The current number of stream upstream peers grouped by state.", ms.At(i).Description()) assert.Equal(t, "peers", ms.At(i).Unit()) - assert.True(t, ms.At(i).Sum().IsMonotonic()) - assert.Equal(t, pmetric.AggregationTemporalityCumulative, ms.At(i).Sum().AggregationTemporality()) - dp := ms.At(i).Sum().DataPoints().At(0) + dp := ms.At(i).Gauge().DataPoints().At(0) assert.Equal(t, start, dp.StartTimestamp()) assert.Equal(t, ts, dp.Timestamp()) assert.Equal(t, pmetric.NumberDataPointValueTypeInt, dp.ValueType()) @@ -1369,7 +1340,7 @@ func TestMetricsBuilder(t *testing.T) { assert.Equal(t, pmetric.MetricTypeSum, ms.At(i).Type()) assert.Equal(t, 1, ms.At(i).Sum().DataPoints().Len()) assert.Equal(t, "The total number of unsuccessful attempts to communicate with the stream upstream peer.", ms.At(i).Description()) - assert.Equal(t, "peers", ms.At(i).Unit()) + assert.Equal(t, "attempts", ms.At(i).Unit()) assert.True(t, ms.At(i).Sum().IsMonotonic()) assert.Equal(t, pmetric.AggregationTemporalityCumulative, ms.At(i).Sum().AggregationTemporality()) dp := ms.At(i).Sum().DataPoints().At(0) @@ -1415,6 +1386,35 @@ func TestMetricsBuilder(t *testing.T) { attrVal, ok = dp.Attributes().Get("nginx.peer.name") assert.True(t, ok) assert.EqualValues(t, "nginx.peer.name-val", attrVal.Str()) + case "nginx.stream.upstream.peer.io": + assert.False(t, validatedMetrics["nginx.stream.upstream.peer.io"], "Found a duplicate in the metrics slice: nginx.stream.upstream.peer.io") + validatedMetrics["nginx.stream.upstream.peer.io"] = true + assert.Equal(t, pmetric.MetricTypeSum, ms.At(i).Type()) + assert.Equal(t, 1, ms.At(i).Sum().DataPoints().Len()) + assert.Equal(t, "The total number of Stream Upstream Peer byte IO.", ms.At(i).Description()) + assert.Equal(t, "bytes", ms.At(i).Unit()) + assert.True(t, ms.At(i).Sum().IsMonotonic()) + assert.Equal(t, pmetric.AggregationTemporalityCumulative, ms.At(i).Sum().AggregationTemporality()) + dp := ms.At(i).Sum().DataPoints().At(0) + assert.Equal(t, start, dp.StartTimestamp()) + assert.Equal(t, ts, dp.Timestamp()) + assert.Equal(t, pmetric.NumberDataPointValueTypeInt, dp.ValueType()) + assert.Equal(t, int64(1), dp.IntValue()) + attrVal, ok := dp.Attributes().Get("nginx.io.direction") + assert.True(t, ok) + assert.EqualValues(t, "receive", attrVal.Str()) + attrVal, ok = dp.Attributes().Get("nginx.zone.name") + assert.True(t, ok) + assert.EqualValues(t, "nginx.zone.name-val", attrVal.Str()) + attrVal, ok = dp.Attributes().Get("nginx.upstream.name") + assert.True(t, ok) + assert.EqualValues(t, "nginx.upstream.name-val", attrVal.Str()) + attrVal, ok = dp.Attributes().Get("nginx.peer.address") + assert.True(t, ok) + assert.EqualValues(t, "nginx.peer.address-val", attrVal.Str()) + attrVal, ok = dp.Attributes().Get("nginx.peer.name") + assert.True(t, ok) + assert.EqualValues(t, "nginx.peer.name-val", attrVal.Str()) case "nginx.stream.upstream.peer.response.time": assert.False(t, validatedMetrics["nginx.stream.upstream.peer.response.time"], "Found a duplicate in the metrics slice: nginx.stream.upstream.peer.response.time") validatedMetrics["nginx.stream.upstream.peer.response.time"] = true @@ -1492,9 +1492,9 @@ func TestMetricsBuilder(t *testing.T) { attrVal, ok = dp.Attributes().Get("nginx.peer.name") assert.True(t, ok) assert.EqualValues(t, "nginx.peer.name-val", attrVal.Str()) - case "nginx.stream.upstream.peer.unavailable": - assert.False(t, validatedMetrics["nginx.stream.upstream.peer.unavailable"], "Found a duplicate in the metrics slice: nginx.stream.upstream.peer.unavailable") - validatedMetrics["nginx.stream.upstream.peer.unavailable"] = true + case "nginx.stream.upstream.peer.unavailables": + assert.False(t, validatedMetrics["nginx.stream.upstream.peer.unavailables"], "Found a duplicate in the metrics slice: nginx.stream.upstream.peer.unavailables") + validatedMetrics["nginx.stream.upstream.peer.unavailables"] = true assert.Equal(t, pmetric.MetricTypeSum, ms.At(i).Type()) assert.Equal(t, 1, ms.At(i).Sum().DataPoints().Len()) assert.Equal(t, "How many times the server became unavailable for client connections (state “unavail”) due to the number of unsuccessful attempts reaching the max_fails threshold.", ms.At(i).Description()) diff --git a/internal/collector/nginxplusreceiver/internal/metadata/testdata/config.yaml b/internal/collector/nginxplusreceiver/internal/metadata/testdata/config.yaml index 7bb1e116b..694fe8e83 100644 --- a/internal/collector/nginxplusreceiver/internal/metadata/testdata/config.yaml +++ b/internal/collector/nginxplusreceiver/internal/metadata/testdata/config.yaml @@ -1,7 +1,7 @@ default: all_set: metrics: - nginx.cache.bytes: + nginx.cache.bytes_read: enabled: true nginx.cache.memory.limit: enabled: true @@ -11,33 +11,31 @@ all_set: enabled: true nginx.config.reloads: enabled: true - nginx.http.connections: + nginx.http.connection.count: enabled: true - nginx.http.connections.count: + nginx.http.connections: enabled: true nginx.http.limit_conn.requests: enabled: true nginx.http.limit_req.requests: enabled: true - nginx.http.request.byte.io: + nginx.http.request.count: enabled: true nginx.http.request.discarded: enabled: true + nginx.http.request.io: + enabled: true nginx.http.request.processing.count: enabled: true nginx.http.requests: enabled: true - nginx.http.requests.count: - enabled: true nginx.http.response.status: enabled: true nginx.http.responses: enabled: true nginx.http.upstream.keepalive.count: enabled: true - nginx.http.upstream.peer.byte.io: - enabled: true - nginx.http.upstream.peer.connections.count: + nginx.http.upstream.peer.connection.count: enabled: true nginx.http.upstream.peer.count: enabled: true @@ -47,6 +45,8 @@ all_set: enabled: true nginx.http.upstream.peer.health_checks: enabled: true + nginx.http.upstream.peer.io: + enabled: true nginx.http.upstream.peer.requests: enabled: true nginx.http.upstream.peer.response.time: @@ -83,23 +83,21 @@ all_set: enabled: true nginx.ssl.handshakes: enabled: true - nginx.stream.byte.io: + nginx.stream.connection.accepted: enabled: true - nginx.stream.connections.accepted: + nginx.stream.connection.discarded: enabled: true - nginx.stream.connections.discarded: + nginx.stream.connection.processing.count: enabled: true - nginx.stream.connections.processing.count: + nginx.stream.io: enabled: true nginx.stream.session.status: enabled: true - nginx.stream.upstream.peer.byte.io: - enabled: true - nginx.stream.upstream.peer.connections: + nginx.stream.upstream.peer.connection.count: enabled: true - nginx.stream.upstream.peer.connections.count: + nginx.stream.upstream.peer.connection.time: enabled: true - nginx.stream.upstream.peer.connections.time: + nginx.stream.upstream.peer.connections: enabled: true nginx.stream.upstream.peer.count: enabled: true @@ -107,13 +105,15 @@ all_set: enabled: true nginx.stream.upstream.peer.health_checks: enabled: true + nginx.stream.upstream.peer.io: + enabled: true nginx.stream.upstream.peer.response.time: enabled: true nginx.stream.upstream.peer.state: enabled: true nginx.stream.upstream.peer.ttfb.time: enabled: true - nginx.stream.upstream.peer.unavailable: + nginx.stream.upstream.peer.unavailables: enabled: true nginx.stream.upstream.zombie.count: enabled: true @@ -124,7 +124,7 @@ all_set: enabled: true none_set: metrics: - nginx.cache.bytes: + nginx.cache.bytes_read: enabled: false nginx.cache.memory.limit: enabled: false @@ -134,33 +134,31 @@ none_set: enabled: false nginx.config.reloads: enabled: false - nginx.http.connections: + nginx.http.connection.count: enabled: false - nginx.http.connections.count: + nginx.http.connections: enabled: false nginx.http.limit_conn.requests: enabled: false nginx.http.limit_req.requests: enabled: false - nginx.http.request.byte.io: + nginx.http.request.count: enabled: false nginx.http.request.discarded: enabled: false + nginx.http.request.io: + enabled: false nginx.http.request.processing.count: enabled: false nginx.http.requests: enabled: false - nginx.http.requests.count: - enabled: false nginx.http.response.status: enabled: false nginx.http.responses: enabled: false nginx.http.upstream.keepalive.count: enabled: false - nginx.http.upstream.peer.byte.io: - enabled: false - nginx.http.upstream.peer.connections.count: + nginx.http.upstream.peer.connection.count: enabled: false nginx.http.upstream.peer.count: enabled: false @@ -170,6 +168,8 @@ none_set: enabled: false nginx.http.upstream.peer.health_checks: enabled: false + nginx.http.upstream.peer.io: + enabled: false nginx.http.upstream.peer.requests: enabled: false nginx.http.upstream.peer.response.time: @@ -206,23 +206,21 @@ none_set: enabled: false nginx.ssl.handshakes: enabled: false - nginx.stream.byte.io: + nginx.stream.connection.accepted: enabled: false - nginx.stream.connections.accepted: + nginx.stream.connection.discarded: enabled: false - nginx.stream.connections.discarded: + nginx.stream.connection.processing.count: enabled: false - nginx.stream.connections.processing.count: + nginx.stream.io: enabled: false nginx.stream.session.status: enabled: false - nginx.stream.upstream.peer.byte.io: - enabled: false - nginx.stream.upstream.peer.connections: + nginx.stream.upstream.peer.connection.count: enabled: false - nginx.stream.upstream.peer.connections.count: + nginx.stream.upstream.peer.connection.time: enabled: false - nginx.stream.upstream.peer.connections.time: + nginx.stream.upstream.peer.connections: enabled: false nginx.stream.upstream.peer.count: enabled: false @@ -230,13 +228,15 @@ none_set: enabled: false nginx.stream.upstream.peer.health_checks: enabled: false + nginx.stream.upstream.peer.io: + enabled: false nginx.stream.upstream.peer.response.time: enabled: false nginx.stream.upstream.peer.state: enabled: false nginx.stream.upstream.peer.ttfb.time: enabled: false - nginx.stream.upstream.peer.unavailable: + nginx.stream.upstream.peer.unavailables: enabled: false nginx.stream.upstream.zombie.count: enabled: false diff --git a/internal/collector/nginxplusreceiver/metadata.yaml b/internal/collector/nginxplusreceiver/metadata.yaml index 98c9f4dd3..4132840e1 100644 --- a/internal/collector/nginxplusreceiver/metadata.yaml +++ b/internal/collector/nginxplusreceiver/metadata.yaml @@ -7,7 +7,7 @@ status: beta: [metrics] distributions: [contrib] codeowners: - active: [olli-holmala, oliveromahony, apgralG, dhurley, craigell, sean-breen] + active: [apgralG, dhurley, craigell, sean-breen, Rashmiti, CVanF5] resource_attributes: instance.id: @@ -56,12 +56,12 @@ attributes: - "REJECTED_DRY_RUN" - "DELAYED" - "DELAYED_DRY_RUN" - nginx.byte.io.direction: + nginx.io.direction: description: The direction of byte traffic. type: string enum: - - "RX" - - "TX" + - "receive" + - "transmit" nginx.status_range: description: A status code range or bucket for a HTTP response's status code. type: string @@ -159,7 +159,7 @@ metrics: unit: "connections" attributes: - nginx.connections.outcome - nginx.http.connections.count: + nginx.http.connection.count: enabled: true description: The current number of connections. gauge: @@ -167,13 +167,13 @@ metrics: unit: "connections" attributes: - nginx.connections.outcome - nginx.http.requests.count: + nginx.http.request.count: enabled: true description: The current number of client requests received from clients. gauge: value_type: int unit: "requests" - nginx.cache.bytes: + nginx.cache.bytes_read: enabled: true description: The total number of bytes read from the cache or proxied server. sum: @@ -233,7 +233,7 @@ metrics: attributes: - nginx.limit_req.outcome - nginx.zone.name - nginx.http.request.byte.io: + nginx.http.request.io: enabled: true description: The total number of HTTP byte IO. sum: @@ -242,7 +242,7 @@ metrics: aggregation_temporality: cumulative unit: "bytes" attributes: - - nginx.byte.io.direction + - nginx.io.direction - nginx.zone.name - nginx.zone.type nginx.http.request.discarded: @@ -278,7 +278,7 @@ metrics: - nginx.zone.type nginx.http.responses: enabled: true - description: The total number of client requests received from clients. + description: The total number of HTTP responses sent to clients. sum: value_type: int monotonic: true @@ -308,7 +308,7 @@ metrics: attributes: - nginx.zone.name - nginx.upstream.name - nginx.http.upstream.peer.byte.io: + nginx.http.upstream.peer.io: enabled: true description: The total number of byte IO per HTTP upstream peer. sum: @@ -317,12 +317,12 @@ metrics: aggregation_temporality: cumulative unit: "bytes" attributes: - - nginx.byte.io.direction + - nginx.io.direction - nginx.zone.name - nginx.upstream.name - nginx.peer.address - nginx.peer.name - nginx.http.upstream.peer.connections.count: + nginx.http.upstream.peer.connection.count: enabled: true description: The average number of active connections per HTTP upstream peer. gauge: @@ -346,8 +346,10 @@ metrics: nginx.http.upstream.peer.fails: enabled: true description: The total number of unsuccessful attempts to communicate with the HTTP upstream peer. - gauge: + sum: value_type: int + monotonic: true + aggregation_temporality: cumulative unit: "attempts" attributes: - nginx.zone.name @@ -563,7 +565,7 @@ metrics: unit: "certificates" attributes: - nginx.ssl.verify_failure.reason - nginx.stream.byte.io: + nginx.stream.io: enabled: true description: The total number of Stream byte IO. sum: @@ -572,9 +574,9 @@ metrics: aggregation_temporality: cumulative unit: "bytes" attributes: - - nginx.byte.io.direction + - nginx.io.direction - nginx.zone.name - nginx.stream.connections.accepted: + nginx.stream.connection.accepted: enabled: true description: The total number of connections accepted from clients. sum: @@ -584,7 +586,7 @@ metrics: unit: "connections" attributes: - nginx.zone.name - nginx.stream.connections.discarded: + nginx.stream.connection.discarded: enabled: true description: Total number of connections completed without creating a session. sum: @@ -594,7 +596,7 @@ metrics: unit: "connections" attributes: - nginx.zone.name - nginx.stream.connections.processing.count: + nginx.stream.connection.processing.count: enabled: true description: The number of client connections that are currently being processed. gauge: @@ -613,7 +615,7 @@ metrics: attributes: - nginx.status_range - nginx.zone.name - nginx.stream.upstream.peer.byte.io: + nginx.stream.upstream.peer.io: enabled: true description: The total number of Stream Upstream Peer byte IO. sum: @@ -622,12 +624,12 @@ metrics: aggregation_temporality: cumulative unit: "bytes" attributes: - - nginx.byte.io.direction + - nginx.io.direction - nginx.zone.name - nginx.upstream.name - nginx.peer.address - nginx.peer.name - nginx.stream.upstream.peer.connections.count: + nginx.stream.upstream.peer.connection.count: enabled: true description: The current number of Stream Upstream Peer connections. gauge: @@ -638,7 +640,7 @@ metrics: - nginx.upstream.name - nginx.peer.address - nginx.peer.name - nginx.stream.upstream.peer.connections.time: + nginx.stream.upstream.peer.connection.time: enabled: true description: The average time to connect to the stream upstream peer. gauge: @@ -664,8 +666,8 @@ metrics: - nginx.peer.name nginx.stream.upstream.peer.count: enabled: true - description: The total number of stream upstream peers grouped by state. - sum: + description: The current number of stream upstream peers grouped by state. + gauge: value_type: int monotonic: true aggregation_temporality: cumulative @@ -681,7 +683,7 @@ metrics: value_type: int monotonic: true aggregation_temporality: cumulative - unit: "peers" + unit: "attempts" attributes: - nginx.zone.name - nginx.upstream.name @@ -722,7 +724,7 @@ metrics: - nginx.upstream.name - nginx.peer.address - nginx.peer.name - nginx.stream.upstream.peer.unavailable: + nginx.stream.upstream.peer.unavailables: enabled: true description: How many times the server became unavailable for client connections (state “unavail”) due to the number of unsuccessful attempts reaching the max_fails threshold. diff --git a/internal/collector/nginxplusreceiver/scraper.go b/internal/collector/nginxplusreceiver/scraper.go index 4911f49b5..b06fa2698 100644 --- a/internal/collector/nginxplusreceiver/scraper.go +++ b/internal/collector/nginxplusreceiver/scraper.go @@ -108,12 +108,12 @@ func (nps *nginxPlusScraper) recordMetrics(stats *plusapi.Stats) { int64(stats.Connections.Dropped), metadata.AttributeNginxConnectionsOutcomeDROPPED, ) - nps.mb.RecordNginxHTTPConnectionsCountDataPoint( + nps.mb.RecordNginxHTTPConnectionCountDataPoint( now, int64(stats.Connections.Active), metadata.AttributeNginxConnectionsOutcomeACTIVE, ) - nps.mb.RecordNginxHTTPConnectionsCountDataPoint( + nps.mb.RecordNginxHTTPConnectionCountDataPoint( now, int64(stats.Connections.Idle), metadata.AttributeNginxConnectionsOutcomeIDLE, @@ -121,7 +121,7 @@ func (nps *nginxPlusScraper) recordMetrics(stats *plusapi.Stats) { // HTTP Requests nps.mb.RecordNginxHTTPRequestsDataPoint(now, int64(stats.HTTPRequests.Total), "", 0) - nps.mb.RecordNginxHTTPRequestsCountDataPoint(now, int64(stats.HTTPRequests.Current)) + nps.mb.RecordNginxHTTPRequestCountDataPoint(now, int64(stats.HTTPRequests.Current)) nps.recordCacheMetrics(stats, now) nps.recordHTTPLimitMetrics(stats, now) @@ -135,21 +135,21 @@ func (nps *nginxPlusScraper) recordMetrics(stats *plusapi.Stats) { func (nps *nginxPlusScraper) recordStreamMetrics(stats *plusapi.Stats, now pcommon.Timestamp) { for name, streamServerZone := range stats.StreamServerZones { - nps.mb.RecordNginxStreamByteIoDataPoint( + nps.mb.RecordNginxStreamIoDataPoint( now, int64(streamServerZone.Received), - metadata.AttributeNginxByteIoDirectionRX, + metadata.AttributeNginxIoDirectionReceive, name, ) - nps.mb.RecordNginxStreamByteIoDataPoint( + nps.mb.RecordNginxStreamIoDataPoint( now, int64(streamServerZone.Sent), - metadata.AttributeNginxByteIoDirectionTX, + metadata.AttributeNginxIoDirectionTransmit, name, ) - nps.mb.RecordNginxStreamConnectionsAcceptedDataPoint(now, int64(streamServerZone.Connections), name) - nps.mb.RecordNginxStreamConnectionsDiscardedDataPoint(now, int64(streamServerZone.Discarded), name) - nps.mb.RecordNginxStreamConnectionsProcessingCountDataPoint(now, int64(streamServerZone.Processing), name) + nps.mb.RecordNginxStreamConnectionAcceptedDataPoint(now, int64(streamServerZone.Connections), name) + nps.mb.RecordNginxStreamConnectionDiscardedDataPoint(now, int64(streamServerZone.Discarded), name) + nps.mb.RecordNginxStreamConnectionProcessingCountDataPoint(now, int64(streamServerZone.Processing), name) nps.mb.RecordNginxStreamSessionStatusDataPoint( now, int64(streamServerZone.Sessions.Sessions2xx), @@ -175,25 +175,25 @@ func (nps *nginxPlusScraper) recordStreamMetrics(stats *plusapi.Stats, now pcomm peerStates := make(map[string]int) for _, peer := range upstream.Peers { - nps.mb.RecordNginxStreamUpstreamPeerByteIoDataPoint( + nps.mb.RecordNginxStreamUpstreamPeerIoDataPoint( now, int64(peer.Received), - metadata.AttributeNginxByteIoDirectionRX, + metadata.AttributeNginxIoDirectionReceive, upstream.Zone, upstreamName, peer.Server, peer.Name, ) - nps.mb.RecordNginxStreamUpstreamPeerByteIoDataPoint( + nps.mb.RecordNginxStreamUpstreamPeerIoDataPoint( now, int64(peer.Sent), - metadata.AttributeNginxByteIoDirectionTX, + metadata.AttributeNginxIoDirectionTransmit, upstream.Zone, upstreamName, peer.Server, peer.Name, ) - nps.mb.RecordNginxStreamUpstreamPeerConnectionsCountDataPoint( + nps.mb.RecordNginxStreamUpstreamPeerConnectionCountDataPoint( now, int64(peer.Active), upstream.Zone, @@ -201,7 +201,7 @@ func (nps *nginxPlusScraper) recordStreamMetrics(stats *plusapi.Stats, now pcomm peer.Server, peer.Name, ) - nps.mb.RecordNginxStreamUpstreamPeerConnectionsTimeDataPoint( + nps.mb.RecordNginxStreamUpstreamPeerConnectionTimeDataPoint( now, int64(peer.ConnectTime), upstream.Zone, @@ -263,7 +263,7 @@ func (nps *nginxPlusScraper) recordStreamMetrics(stats *plusapi.Stats, now pcomm peer.Server, peer.Name, ) - nps.mb.RecordNginxStreamUpstreamPeerUnavailableDataPoint( + nps.mb.RecordNginxStreamUpstreamPeerUnavailablesDataPoint( now, int64(peer.Unavail), upstream.Zone, @@ -481,26 +481,26 @@ func (nps *nginxPlusScraper) recordHTTPUpstreamPeerMetrics(stats *plusapi.Stats, peerStates := make(map[string]int) for _, peer := range upstream.Peers { - nps.mb.RecordNginxHTTPUpstreamPeerByteIoDataPoint( + nps.mb.RecordNginxHTTPUpstreamPeerIoDataPoint( now, int64(peer.Received), - metadata.AttributeNginxByteIoDirectionRX, + metadata.AttributeNginxIoDirectionReceive, upstream.Zone, name, peer.Server, peer.Name, ) - nps.mb.RecordNginxHTTPUpstreamPeerByteIoDataPoint( + nps.mb.RecordNginxHTTPUpstreamPeerIoDataPoint( now, int64(peer.Sent), - metadata.AttributeNginxByteIoDirectionTX, + metadata.AttributeNginxIoDirectionTransmit, upstream.Zone, name, peer.Server, peer.Name, ) - nps.mb.RecordNginxHTTPUpstreamPeerConnectionsCountDataPoint( + nps.mb.RecordNginxHTTPUpstreamPeerConnectionCountDataPoint( now, int64(peer.Active), upstream.Zone, @@ -745,17 +745,17 @@ func (nps *nginxPlusScraper) recordHTTPUpstreamPeerMetrics(stats *plusapi.Stats, func (nps *nginxPlusScraper) recordServerZoneMetrics(stats *plusapi.Stats, now pcommon.Timestamp) { for szName, sz := range stats.ServerZones { - nps.mb.RecordNginxHTTPRequestByteIoDataPoint( + nps.mb.RecordNginxHTTPRequestIoDataPoint( now, int64(sz.Received), - metadata.AttributeNginxByteIoDirectionRX, + metadata.AttributeNginxIoDirectionReceive, szName, metadata.AttributeNginxZoneTypeSERVER, ) - nps.mb.RecordNginxHTTPRequestByteIoDataPoint( + nps.mb.RecordNginxHTTPRequestIoDataPoint( now, int64(sz.Sent), - metadata.AttributeNginxByteIoDirectionTX, + metadata.AttributeNginxIoDirectionTransmit, szName, metadata.AttributeNginxZoneTypeSERVER, ) @@ -804,17 +804,17 @@ func (nps *nginxPlusScraper) recordServerZoneMetrics(stats *plusapi.Stats, now p func (nps *nginxPlusScraper) recordLocationZoneMetrics(stats *plusapi.Stats, now pcommon.Timestamp) { for lzName, lz := range stats.LocationZones { - nps.mb.RecordNginxHTTPRequestByteIoDataPoint( + nps.mb.RecordNginxHTTPRequestIoDataPoint( now, lz.Received, - metadata.AttributeNginxByteIoDirectionRX, + metadata.AttributeNginxIoDirectionReceive, lzName, metadata.AttributeNginxZoneTypeLOCATION, ) - nps.mb.RecordNginxHTTPRequestByteIoDataPoint( + nps.mb.RecordNginxHTTPRequestIoDataPoint( now, lz.Sent, - metadata.AttributeNginxByteIoDirectionTX, + metadata.AttributeNginxIoDirectionTransmit, lzName, metadata.AttributeNginxZoneTypeLOCATION, ) @@ -917,38 +917,43 @@ func (nps *nginxPlusScraper) recordHTTPLimitMetrics(stats *plusapi.Stats, now pc func (nps *nginxPlusScraper) recordCacheMetrics(stats *plusapi.Stats, now pcommon.Timestamp) { for name, cache := range stats.Caches { - nps.mb.RecordNginxCacheBytesDataPoint( + nps.mb.RecordNginxCacheBytesReadDataPoint( now, int64(cache.Bypass.Bytes), metadata.AttributeNginxCacheOutcomeBYPASS, name, ) - nps.mb.RecordNginxCacheBytesDataPoint( + nps.mb.RecordNginxCacheBytesReadDataPoint( now, int64(cache.Expired.Bytes), metadata.AttributeNginxCacheOutcomeEXPIRED, name, ) - nps.mb.RecordNginxCacheBytesDataPoint(now, int64(cache.Hit.Bytes), metadata.AttributeNginxCacheOutcomeHIT, name) - nps.mb.RecordNginxCacheBytesDataPoint( + nps.mb.RecordNginxCacheBytesReadDataPoint( + now, + int64(cache.Hit.Bytes), + metadata.AttributeNginxCacheOutcomeHIT, + name, + ) + nps.mb.RecordNginxCacheBytesReadDataPoint( now, int64(cache.Miss.Bytes), metadata.AttributeNginxCacheOutcomeMISS, name, ) - nps.mb.RecordNginxCacheBytesDataPoint( + nps.mb.RecordNginxCacheBytesReadDataPoint( now, int64(cache.Revalidated.Bytes), metadata.AttributeNginxCacheOutcomeREVALIDATED, name, ) - nps.mb.RecordNginxCacheBytesDataPoint( + nps.mb.RecordNginxCacheBytesReadDataPoint( now, int64(cache.Stale.Bytes), metadata.AttributeNginxCacheOutcomeSTALE, name, ) - nps.mb.RecordNginxCacheBytesDataPoint( + nps.mb.RecordNginxCacheBytesReadDataPoint( now, int64(cache.Updating.Bytes), metadata.AttributeNginxCacheOutcomeUPDATING, diff --git a/internal/collector/nginxplusreceiver/testdata/expected.yaml b/internal/collector/nginxplusreceiver/testdata/expected.yaml index c0f9cc2d7..81794b327 100644 --- a/internal/collector/nginxplusreceiver/testdata/expected.yaml +++ b/internal/collector/nginxplusreceiver/testdata/expected.yaml @@ -32,7 +32,7 @@ resourceMetrics: isMonotonic: true unit: connections - description: The current number of connections. - name: nginx.http.connections.count + name: nginx.http.connection.count gauge: aggregationTemporality: 2 dataPoints: @@ -207,7 +207,7 @@ resourceMetrics: isMonotonic: true unit: requests - description: The total number of HTTP byte IO. - name: nginx.http.request.byte.io + name: nginx.http.request.io sum: aggregationTemporality: 2 dataPoints: @@ -219,9 +219,9 @@ resourceMetrics: - key: nginx.zone.type value: stringValue: SERVER - - key: nginx.byte.io.direction + - key: nginx.io.direction value: - stringValue: TX + stringValue: transmit - asInt: "3312" attributes: - key: nginx.zone.name @@ -230,9 +230,9 @@ resourceMetrics: - key: nginx.zone.type value: stringValue: SERVER - - key: nginx.byte.io.direction + - key: nginx.io.direction value: - stringValue: RX + stringValue: receive - asInt: "23265" attributes: - key: nginx.zone.name @@ -241,9 +241,9 @@ resourceMetrics: - key: nginx.zone.type value: stringValue: LOCATION - - key: nginx.byte.io.direction + - key: nginx.io.direction value: - stringValue: TX + stringValue: transmit - asInt: "3609" attributes: - key: nginx.zone.name @@ -252,9 +252,9 @@ resourceMetrics: - key: nginx.zone.type value: stringValue: LOCATION - - key: nginx.byte.io.direction + - key: nginx.io.direction value: - stringValue: RX + stringValue: receive timeUnixNano: "1000000" isMonotonic: true unit: bytes @@ -291,7 +291,7 @@ resourceMetrics: isMonotonic: true unit: requests - description: The current number of client requests received from clients. - name: nginx.http.requests.count + name: nginx.http.request.count gauge: aggregationTemporality: 2 dataPoints: @@ -300,7 +300,7 @@ resourceMetrics: isMonotonic: true unit: requests - description: The total number of bytes read from the cache or proxied server. - name: nginx.cache.bytes + name: nginx.cache.bytes_read sum: aggregationTemporality: 2 dataPoints: @@ -551,15 +551,15 @@ resourceMetrics: isMonotonic: true unit: connections - description: The total number of byte IO per HTTP upstream peer. - name: nginx.http.upstream.peer.byte.io + name: nginx.http.upstream.peer.io sum: aggregationTemporality: 2 dataPoints: - asInt: "432" attributes: - - key: nginx.byte.io.direction + - key: nginx.io.direction value: - stringValue: RX + stringValue: receive - key: nginx.peer.address value: stringValue: 127.0.0.1:9001 @@ -574,9 +574,9 @@ resourceMetrics: stringValue: test-drain-zone - asInt: "121" attributes: - - key: nginx.byte.io.direction + - key: nginx.io.direction value: - stringValue: TX + stringValue: transmit - key: nginx.peer.address value: stringValue: 127.0.0.1:9001 @@ -592,7 +592,7 @@ resourceMetrics: isMonotonic: true unit: bytes - description: The average number of active connections per HTTP upstream peer. - name: nginx.http.upstream.peer.connections.count + name: nginx.http.upstream.peer.connection.count gauge: aggregationTemporality: 2 dataPoints: @@ -614,7 +614,7 @@ resourceMetrics: unit: connections - description: The total number of unsuccessful attempts to communicate with the HTTP upstream peer. name: nginx.http.upstream.peer.fails - gauge: + sum: aggregationTemporality: 2 dataPoints: - asInt: "87" @@ -1613,30 +1613,30 @@ resourceMetrics: isMonotonic: true unit: certificates - description: The total number of Stream byte IO. - name: nginx.stream.byte.io + name: nginx.stream.io sum: aggregationTemporality: 2 dataPoints: - asInt: "11" attributes: - - key: nginx.byte.io.direction + - key: nginx.io.direction value: - stringValue: TX + stringValue: transmit - key: nginx.zone.name value: stringValue: stream_test - asInt: "22" attributes: - - key: nginx.byte.io.direction + - key: nginx.io.direction value: - stringValue: RX + stringValue: receive - key: nginx.zone.name value: stringValue: stream_test isMonotonic: true unit: bytes - description: The total number of connections accepted from clients. - name: nginx.stream.connections.accepted + name: nginx.stream.connection.accepted sum: aggregationTemporality: 2 dataPoints: @@ -1648,7 +1648,7 @@ resourceMetrics: isMonotonic: true unit: connections - description: Total number of connections completed without creating a session. - name: nginx.stream.connections.discarded + name: nginx.stream.connection.discarded sum: aggregationTemporality: 2 dataPoints: @@ -1660,7 +1660,7 @@ resourceMetrics: isMonotonic: true unit: connections - description: The number of client connections that are currently being processed. - name: nginx.stream.connections.processing.count + name: nginx.stream.connection.processing.count gauge: aggregationTemporality: 2 dataPoints: @@ -1711,15 +1711,15 @@ resourceMetrics: isMonotonic: true unit: sessions - description: The total number of Stream Upstream Peer byte IO. - name: nginx.stream.upstream.peer.byte.io + name: nginx.stream.upstream.peer.io sum: aggregationTemporality: 2 dataPoints: - asInt: "251946292" attributes: - - key: nginx.byte.io.direction + - key: nginx.io.direction value: - stringValue: TX + stringValue: transmit - key: nginx.peer.address value: stringValue: 10.0.0.1:12347 @@ -1734,9 +1734,9 @@ resourceMetrics: stringValue: upstream_test_zone - asInt: "19222475454" attributes: - - key: nginx.byte.io.direction + - key: nginx.io.direction value: - stringValue: RX + stringValue: receive - key: nginx.peer.address value: stringValue: 10.0.0.1:12347 @@ -1752,7 +1752,7 @@ resourceMetrics: isMonotonic: true unit: bytes - description: The current number of Stream Upstream Peer connections. - name: nginx.stream.upstream.peer.connections.count + name: nginx.stream.upstream.peer.connection.count gauge: aggregationTemporality: 2 dataPoints: @@ -1773,7 +1773,7 @@ resourceMetrics: isMonotonic: true unit: connections - description: The average time to connect to the stream upstream peer. - name: nginx.stream.upstream.peer.connections.time + name: nginx.stream.upstream.peer.connection.time gauge: aggregationTemporality: 2 dataPoints: @@ -1915,7 +1915,7 @@ resourceMetrics: isMonotonic: true unit: ms - description: How many times the server became unavailable for client connections (state “unavail”) due to the number of unsuccessful attempts reaching the max_fails threshold. - name: nginx.stream.upstream.peer.unavailable + name: nginx.stream.upstream.peer.unavailables sum: aggregationTemporality: 2 dataPoints: @@ -2044,9 +2044,9 @@ resourceMetrics: stringValue: DRAINING isMonotonic: true unit: deployments - - description: The total number of stream upstream peers grouped by state. + - description: The current number of stream upstream peers grouped by state. name: nginx.stream.upstream.peer.count - sum: + gauge: aggregationTemporality: 2 dataPoints: - asInt: "0" diff --git a/test/mock/collector/grafana/provisioning/dashboards/nginx-plus-dashboard.json b/test/mock/collector/grafana/provisioning/dashboards/nginx-plus-dashboard.json index 6574b2a6d..5b5f53aa0 100644 --- a/test/mock/collector/grafana/provisioning/dashboards/nginx-plus-dashboard.json +++ b/test/mock/collector/grafana/provisioning/dashboards/nginx-plus-dashboard.json @@ -108,7 +108,7 @@ }, "disableTextWrap": false, "editorMode": "builder", - "expr": "nginx_http_connections_count{instance_type=\"nginxplus\"}", + "expr": "nginx_http_connection_count{instance_type=\"nginxplus\"}", "fullMetaSearch": false, "includeNullMetadata": false, "instant": false, @@ -310,7 +310,7 @@ }, "disableTextWrap": false, "editorMode": "builder", - "expr": "nginx_http_requests_count{instance_type=\"nginxplus\"}", + "expr": "nginx_http_request_count{instance_type=\"nginxplus\"}", "fullMetaSearch": false, "includeNullMetadata": true, "instant": false, @@ -542,4 +542,4 @@ "uid": "fdris4hclbqiob", "version": 1, "weekStart": "" -} \ No newline at end of file +}