diff --git a/receiver/hostmetricsreceiver/internal/metadata/generated_metrics.go b/receiver/hostmetricsreceiver/internal/metadata/generated_metrics.go index 288b5302483..1848f0f7af0 100644 --- a/receiver/hostmetricsreceiver/internal/metadata/generated_metrics.go +++ b/receiver/hostmetricsreceiver/internal/metadata/generated_metrics.go @@ -77,6 +77,8 @@ type metricStruct struct { SystemPagingFaults MetricIntf SystemPagingOperations MetricIntf SystemPagingUsage MetricIntf + SystemProcessesCount MetricIntf + SystemProcessesCreated MetricIntf } // Names returns a list of all the metric name strings. @@ -104,6 +106,8 @@ func (m *metricStruct) Names() []string { "system.paging.faults", "system.paging.operations", "system.paging.usage", + "system.processes.count", + "system.processes.created", } } @@ -130,6 +134,8 @@ var metricsByName = map[string]MetricIntf{ "system.paging.faults": Metrics.SystemPagingFaults, "system.paging.operations": Metrics.SystemPagingOperations, "system.paging.usage": Metrics.SystemPagingUsage, + "system.processes.count": Metrics.SystemProcessesCount, + "system.processes.created": Metrics.SystemProcessesCreated, } func (m *metricStruct) ByName(n string) MetricIntf { @@ -160,6 +166,8 @@ func (m *metricStruct) FactoriesByName() map[string]func() pdata.Metric { Metrics.SystemPagingFaults.Name(): Metrics.SystemPagingFaults.New, Metrics.SystemPagingOperations.Name(): Metrics.SystemPagingOperations.New, Metrics.SystemPagingUsage.Name(): Metrics.SystemPagingUsage.New, + Metrics.SystemProcessesCount.Name(): Metrics.SystemProcessesCount.New, + Metrics.SystemProcessesCreated.Name(): Metrics.SystemProcessesCreated.New, } } @@ -402,6 +410,28 @@ var Metrics = &metricStruct{ metric.IntSum().SetAggregationTemporality(pdata.AggregationTemporalityCumulative) }, }, + &metricImpl{ + "system.processes.count", + func(metric pdata.Metric) { + metric.SetName("system.processes.count") + metric.SetDescription("Total number of processes in each state.") + metric.SetUnit("{processes}") + metric.SetDataType(pdata.MetricDataTypeIntSum) + metric.IntSum().SetIsMonotonic(false) + metric.IntSum().SetAggregationTemporality(pdata.AggregationTemporalityCumulative) + }, + }, + &metricImpl{ + "system.processes.created", + func(metric pdata.Metric) { + metric.SetName("system.processes.created") + metric.SetDescription("Total number of created processes.") + metric.SetUnit("{processes}") + metric.SetDataType(pdata.MetricDataTypeIntSum) + metric.IntSum().SetIsMonotonic(true) + metric.IntSum().SetAggregationTemporality(pdata.AggregationTemporalityCumulative) + }, + }, } // M contains a set of methods for each metric that help with @@ -446,6 +476,8 @@ var Labels = struct { PagingState string // PagingType (Type of fault.) PagingType string + // ProcessesStatus (Breakdown status of the processes.) + ProcessesStatus string }{ "cpu", "state", @@ -465,6 +497,7 @@ var Labels = struct { "direction", "state", "type", + "status", } // L contains the possible metric labels that can be used. L is an alias for @@ -575,3 +608,12 @@ var LabelPagingType = struct { "major", "minor", } + +// LabelProcessesStatus are the possible values that the label "processes.status" can have. +var LabelProcessesStatus = struct { + Blocked string + Running string +}{ + "blocked", + "running", +} diff --git a/receiver/hostmetricsreceiver/internal/scraper/processesscraper/processes_metadata.go b/receiver/hostmetricsreceiver/internal/scraper/processesscraper/processes_metadata.go deleted file mode 100644 index 3987ebfc629..00000000000 --- a/receiver/hostmetricsreceiver/internal/scraper/processesscraper/processes_metadata.go +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package processesscraper - -import ( - "go.opentelemetry.io/collector/consumer/pdata" -) - -// labels - -const ( - statusLabelName = "status" -) - -// status label values - -const ( - blockedStatusLabelValue = "blocked" - runningStatusLabelValue = "running" -) - -// descriptors - -var processesCreatedDescriptor = func() pdata.Metric { - metric := pdata.NewMetric() - metric.SetName("system.processes.created") - metric.SetDescription("Total number of created processes.") - metric.SetUnit("{processes}") - metric.SetDataType(pdata.MetricDataTypeIntSum) - sum := metric.IntSum() - sum.SetIsMonotonic(true) - sum.SetAggregationTemporality(pdata.AggregationTemporalityCumulative) - return metric -}() - -var processesCountDescriptor = func() pdata.Metric { - metric := pdata.NewMetric() - metric.SetName("system.processes.count") - metric.SetDescription("Total number of processes in each state.") - metric.SetUnit("{processes}") - metric.SetDataType(pdata.MetricDataTypeIntSum) - sum := metric.IntSum() - sum.SetIsMonotonic(false) - sum.SetAggregationTemporality(pdata.AggregationTemporalityCumulative) - return metric -}() diff --git a/receiver/hostmetricsreceiver/internal/scraper/processesscraper/processes_scraper_linux.go b/receiver/hostmetricsreceiver/internal/scraper/processesscraper/processes_scraper_linux.go index c9f03f6a03c..02d7389f1a9 100644 --- a/receiver/hostmetricsreceiver/internal/scraper/processesscraper/processes_scraper_linux.go +++ b/receiver/hostmetricsreceiver/internal/scraper/processesscraper/processes_scraper_linux.go @@ -20,6 +20,7 @@ import ( "github.com/shirou/gopsutil/load" "go.opentelemetry.io/collector/consumer/pdata" + "go.opentelemetry.io/collector/receiver/hostmetricsreceiver/internal/metadata" ) const unixSystemSpecificMetricsLen = 1 @@ -30,7 +31,7 @@ func appendUnixSystemSpecificProcessesMetrics(metrics pdata.MetricSlice, startIn } func initializeProcessesCreatedMetric(metric pdata.Metric, now pdata.TimestampUnixNano, misc *load.MiscStat) { - processesCreatedDescriptor.CopyTo(metric) + metadata.Metrics.SystemProcessesCreated.Init(metric) ddps := metric.IntSum().DataPoints() ddps.Resize(1) diff --git a/receiver/hostmetricsreceiver/internal/scraper/processesscraper/processes_scraper_test.go b/receiver/hostmetricsreceiver/internal/scraper/processesscraper/processes_scraper_test.go index 3ff6d1074f8..ba7e609e83d 100644 --- a/receiver/hostmetricsreceiver/internal/scraper/processesscraper/processes_scraper_test.go +++ b/receiver/hostmetricsreceiver/internal/scraper/processesscraper/processes_scraper_test.go @@ -28,6 +28,7 @@ import ( "go.opentelemetry.io/collector/consumer/consumererror" "go.opentelemetry.io/collector/consumer/pdata" "go.opentelemetry.io/collector/receiver/hostmetricsreceiver/internal" + "go.opentelemetry.io/collector/receiver/hostmetricsreceiver/internal/metadata" ) func TestScrape(t *testing.T) { @@ -99,14 +100,14 @@ func TestScrape(t *testing.T) { } func assertProcessesCountMetricValid(t *testing.T, metric pdata.Metric) { - internal.AssertDescriptorEqual(t, processesCountDescriptor, metric) + internal.AssertDescriptorEqual(t, metadata.Metrics.SystemProcessesCount.New(), metric) assert.Equal(t, 2, metric.IntSum().DataPoints().Len()) - internal.AssertIntSumMetricLabelHasValue(t, metric, 0, statusLabelName, runningStatusLabelValue) - internal.AssertIntSumMetricLabelHasValue(t, metric, 1, statusLabelName, blockedStatusLabelValue) + internal.AssertIntSumMetricLabelHasValue(t, metric, 0, "status", "running") + internal.AssertIntSumMetricLabelHasValue(t, metric, 1, "status", "blocked") } func assertProcessesCreatedMetricValid(t *testing.T, metric pdata.Metric) { - internal.AssertDescriptorEqual(t, processesCreatedDescriptor, metric) + internal.AssertDescriptorEqual(t, metadata.Metrics.SystemProcessesCreated.New(), metric) assert.Equal(t, 1, metric.IntSum().DataPoints().Len()) assert.Equal(t, 0, metric.IntSum().DataPoints().At(0).LabelsMap().Len()) } diff --git a/receiver/hostmetricsreceiver/internal/scraper/processesscraper/processes_scraper_unix.go b/receiver/hostmetricsreceiver/internal/scraper/processesscraper/processes_scraper_unix.go index 5f2696c7b4e..ee9d754b879 100644 --- a/receiver/hostmetricsreceiver/internal/scraper/processesscraper/processes_scraper_unix.go +++ b/receiver/hostmetricsreceiver/internal/scraper/processesscraper/processes_scraper_unix.go @@ -24,6 +24,7 @@ import ( "go.opentelemetry.io/collector/consumer/consumererror" "go.opentelemetry.io/collector/consumer/pdata" "go.opentelemetry.io/collector/receiver/hostmetricsreceiver/internal" + "go.opentelemetry.io/collector/receiver/hostmetricsreceiver/internal/metadata" ) const ( @@ -45,17 +46,17 @@ func appendSystemSpecificProcessesMetrics(metrics pdata.MetricSlice, startIndex } func initializeProcessesCountMetric(metric pdata.Metric, now pdata.TimestampUnixNano, misc *load.MiscStat) { - processesCountDescriptor.CopyTo(metric) + metadata.Metrics.SystemProcessesCount.Init(metric) ddps := metric.IntSum().DataPoints() ddps.Resize(2) - initializeProcessesCountDataPoint(ddps.At(0), now, runningStatusLabelValue, int64(misc.ProcsRunning)) - initializeProcessesCountDataPoint(ddps.At(1), now, blockedStatusLabelValue, int64(misc.ProcsBlocked)) + initializeProcessesCountDataPoint(ddps.At(0), now, metadata.LabelProcessesStatus.Running, int64(misc.ProcsRunning)) + initializeProcessesCountDataPoint(ddps.At(1), now, metadata.LabelProcessesStatus.Blocked, int64(misc.ProcsBlocked)) } func initializeProcessesCountDataPoint(dataPoint pdata.IntDataPoint, now pdata.TimestampUnixNano, statusLabel string, value int64) { labelsMap := dataPoint.LabelsMap() - labelsMap.Insert(statusLabelName, statusLabel) + labelsMap.Insert(metadata.Labels.ProcessesStatus, statusLabel) dataPoint.SetTimestamp(now) dataPoint.SetValue(value) } diff --git a/receiver/hostmetricsreceiver/metadata.yaml b/receiver/hostmetricsreceiver/metadata.yaml index 0426917a1f4..db47021ab14 100644 --- a/receiver/hostmetricsreceiver/metadata.yaml +++ b/receiver/hostmetricsreceiver/metadata.yaml @@ -81,6 +81,11 @@ labels: description: Type of fault. enum: [major, minor] + processes.status: + value: status + description: Breakdown status of the processes. + enum: [blocked, running] + metrics: system.cpu.time: description: Total CPU seconds broken down by different states. @@ -253,3 +258,19 @@ metrics: type: int sum aggregation: cumulative monotonic: true + + system.processes.created: + description: Total number of created processes. + unit: "{processes}" + data: + type: int sum + aggregation: cumulative + monotonic: true + + system.processes.count: + description: Total number of processes in each state. + unit: "{processes}" + data: + type: int sum + aggregation: cumulative + monotonic: false