From 2333e6e543615c03974dd27349114618a7a37837 Mon Sep 17 00:00:00 2001 From: Grigorii Merkushev Date: Wed, 16 Feb 2022 15:52:24 +0100 Subject: [PATCH 01/10] add hostmetricsreceiver filesystem utilization --- .../hostmetrics_receiver_test.go | 1 + .../filesystemscraper/documentation.md | 1 + .../filesystem_scraper_others.go | 15 +++- .../filesystem_scraper_unix.go | 14 +++- .../internal/metadata/generated_metrics_v2.go | 69 +++++++++++++++++++ .../scraper/filesystemscraper/metadata.yaml | 10 ++- 6 files changed, 104 insertions(+), 6 deletions(-) diff --git a/receiver/hostmetricsreceiver/hostmetrics_receiver_test.go b/receiver/hostmetricsreceiver/hostmetrics_receiver_test.go index 9ad86306ab504..3345eac55db5c 100644 --- a/receiver/hostmetricsreceiver/hostmetrics_receiver_test.go +++ b/receiver/hostmetricsreceiver/hostmetrics_receiver_test.go @@ -57,6 +57,7 @@ var standardMetrics = []string{ "system.disk.operation_time", "system.disk.pending_operations", "system.filesystem.usage", + "system.filesystem.utilization", "system.memory.usage", "system.network.connections", "system.network.dropped", diff --git a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/documentation.md b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/documentation.md index 0d6787daeb94f..37f074da07a08 100644 --- a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/documentation.md +++ b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/documentation.md @@ -10,6 +10,7 @@ These are the metrics available for this scraper. | ---- | ----------- | ---- | ---- | ---------- | | **system.filesystem.inodes.usage** | FileSystem inodes used. | {inodes} | Sum(Int) | | | **system.filesystem.usage** | Filesystem bytes used. | By | Sum(Int) | | +| **system.filesystem.utilization** | Percentage of filesystem bytes used. | 1 | Gauge(Double) | | **Highlighted metrics** are emitted by default. Other metrics are optional and not emitted by default. Any metric can be enabled or disabled with the following scraper configuration: diff --git a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/filesystem_scraper_others.go b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/filesystem_scraper_others.go index 1bfa73ffda112..8e8006f4589be 100644 --- a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/filesystem_scraper_others.go +++ b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/filesystem_scraper_others.go @@ -28,9 +28,20 @@ const fileSystemStatesLen = 2 func (s *scraper) recordFileSystemUsageMetric(now pdata.Timestamp, deviceUsages []*deviceUsage) { for _, deviceUsage := range deviceUsages { s.mb.RecordSystemFilesystemUsageDataPoint( - now, int64(deviceUsage.usage.Used), deviceUsage.partition.Device, getMountMode(deviceUsage.partition.Opts), deviceUsage.partition.Mountpoint, deviceUsage.partition.Fstype, metadata.AttributeState.Used) + now, int64(deviceUsage.usage.Used), + deviceUsage.partition.Device, getMountMode(deviceUsage.partition.Opts), + deviceUsage.partition.Mountpoint, deviceUsage.partition.Fstype, + metadata.AttributeState.Used) s.mb.RecordSystemFilesystemUsageDataPoint( - now, int64(deviceUsage.usage.Free), deviceUsage.partition.Device, getMountMode(deviceUsage.partition.Opts), deviceUsage.partition.Mountpoint, deviceUsage.partition.Fstype, metadata.AttributeState.Free) + now, int64(deviceUsage.usage.Free), + deviceUsage.partition.Device, getMountMode(deviceUsage.partition.Opts), + deviceUsage.partition.Mountpoint, deviceUsage.partition.Fstype, + metadata.AttributeState.Free) + s.mb.RecordSystemFilesystemUtilizationDataPoint( + now, deviceUsage.usage.UsedPercent, + deviceUsage.partition.Device, getMountMode(deviceUsage.partition.Opts), + deviceUsage.partition.Mountpoint, deviceUsage.partition.Fstype, + metadata.AttributeState.Utilized) } } diff --git a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/filesystem_scraper_unix.go b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/filesystem_scraper_unix.go index efa8cb86a93d4..73713316ab864 100644 --- a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/filesystem_scraper_unix.go +++ b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/filesystem_scraper_unix.go @@ -30,15 +30,23 @@ func (s *scraper) recordFileSystemUsageMetric(now pdata.Timestamp, deviceUsages s.mb.RecordSystemFilesystemUsageDataPoint( now, int64(deviceUsage.usage.Used), deviceUsage.partition.Device, getMountMode(deviceUsage.partition.Opts), deviceUsage.partition.Mountpoint, - deviceUsage.partition.Fstype, metadata.AttributeState.Used) + deviceUsage.partition.Fstype, + metadata.AttributeState.Used) s.mb.RecordSystemFilesystemUsageDataPoint( now, int64(deviceUsage.usage.Free), deviceUsage.partition.Device, getMountMode(deviceUsage.partition.Opts), - deviceUsage.partition.Mountpoint, deviceUsage.partition.Fstype, metadata.AttributeState.Free) + deviceUsage.partition.Mountpoint, deviceUsage.partition.Fstype, + metadata.AttributeState.Free) s.mb.RecordSystemFilesystemUsageDataPoint( now, int64(deviceUsage.usage.Total-deviceUsage.usage.Used-deviceUsage.usage.Free), deviceUsage.partition.Device, getMountMode(deviceUsage.partition.Opts), - deviceUsage.partition.Mountpoint, deviceUsage.partition.Fstype, metadata.AttributeState.Reserved) + deviceUsage.partition.Mountpoint, deviceUsage.partition.Fstype, + metadata.AttributeState.Reserved) + s.mb.RecordSystemFilesystemUtilizationDataPoint( + now, deviceUsage.usage.UsedPercent, + deviceUsage.partition.Device, getMountMode(deviceUsage.partition.Opts), + deviceUsage.partition.Mountpoint, deviceUsage.partition.Fstype, + metadata.AttributeState.Utilized) } } diff --git a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/internal/metadata/generated_metrics_v2.go b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/internal/metadata/generated_metrics_v2.go index 60a6991d5cb96..154248a475797 100644 --- a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/internal/metadata/generated_metrics_v2.go +++ b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/internal/metadata/generated_metrics_v2.go @@ -17,6 +17,7 @@ type MetricSettings struct { type MetricsSettings struct { SystemFilesystemInodesUsage MetricSettings `mapstructure:"system.filesystem.inodes.usage"` SystemFilesystemUsage MetricSettings `mapstructure:"system.filesystem.usage"` + SystemFilesystemUtilization MetricSettings `mapstructure:"system.filesystem.utilization"` } func DefaultMetricsSettings() MetricsSettings { @@ -27,6 +28,9 @@ func DefaultMetricsSettings() MetricsSettings { SystemFilesystemUsage: MetricSettings{ Enabled: true, }, + SystemFilesystemUtilization: MetricSettings{ + Enabled: true, + }, } } @@ -144,12 +148,68 @@ func newMetricSystemFilesystemUsage(settings MetricSettings) metricSystemFilesys return m } +type metricSystemFilesystemUtilization struct { + data pdata.Metric // data buffer for generated metric. + settings MetricSettings // metric settings provided by user. + capacity int // max observed number of data points added to the metric. +} + +// init fills system.filesystem.utilization metric with initial data. +func (m *metricSystemFilesystemUtilization) init() { + m.data.SetName("system.filesystem.utilization") + m.data.SetDescription("Percentage of filesystem bytes used.") + m.data.SetUnit("1") + m.data.SetDataType(pdata.MetricDataTypeGauge) + m.data.Gauge().DataPoints().EnsureCapacity(m.capacity) +} + +func (m *metricSystemFilesystemUtilization) recordDataPoint(start pdata.Timestamp, ts pdata.Timestamp, val float64, deviceAttributeValue string, modeAttributeValue string, mountpointAttributeValue string, typeAttributeValue string, stateAttributeValue string) { + if !m.settings.Enabled { + return + } + dp := m.data.Gauge().DataPoints().AppendEmpty() + dp.SetStartTimestamp(start) + dp.SetTimestamp(ts) + dp.SetDoubleVal(val) + dp.Attributes().Insert(A.Device, pdata.NewAttributeValueString(deviceAttributeValue)) + dp.Attributes().Insert(A.Mode, pdata.NewAttributeValueString(modeAttributeValue)) + dp.Attributes().Insert(A.Mountpoint, pdata.NewAttributeValueString(mountpointAttributeValue)) + dp.Attributes().Insert(A.Type, pdata.NewAttributeValueString(typeAttributeValue)) + dp.Attributes().Insert(A.State, pdata.NewAttributeValueString(stateAttributeValue)) +} + +// updateCapacity saves max length of data point slices that will be used for the slice capacity. +func (m *metricSystemFilesystemUtilization) 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 *metricSystemFilesystemUtilization) emit(metrics pdata.MetricSlice) { + if m.settings.Enabled && m.data.Gauge().DataPoints().Len() > 0 { + m.updateCapacity() + m.data.MoveTo(metrics.AppendEmpty()) + m.init() + } +} + +func newMetricSystemFilesystemUtilization(settings MetricSettings) metricSystemFilesystemUtilization { + m := metricSystemFilesystemUtilization{settings: settings} + if settings.Enabled { + m.data = pdata.NewMetric() + m.init() + } + return m +} + // 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 settings. type MetricsBuilder struct { startTime pdata.Timestamp metricSystemFilesystemInodesUsage metricSystemFilesystemInodesUsage metricSystemFilesystemUsage metricSystemFilesystemUsage + metricSystemFilesystemUtilization metricSystemFilesystemUtilization } // metricBuilderOption applies changes to default metrics builder. @@ -167,6 +227,7 @@ func NewMetricsBuilder(settings MetricsSettings, options ...metricBuilderOption) startTime: pdata.NewTimestampFromTime(time.Now()), metricSystemFilesystemInodesUsage: newMetricSystemFilesystemInodesUsage(settings.SystemFilesystemInodesUsage), metricSystemFilesystemUsage: newMetricSystemFilesystemUsage(settings.SystemFilesystemUsage), + metricSystemFilesystemUtilization: newMetricSystemFilesystemUtilization(settings.SystemFilesystemUtilization), } for _, op := range options { op(mb) @@ -180,6 +241,7 @@ func NewMetricsBuilder(settings MetricsSettings, options ...metricBuilderOption) func (mb *MetricsBuilder) Emit(metrics pdata.MetricSlice) { mb.metricSystemFilesystemInodesUsage.emit(metrics) mb.metricSystemFilesystemUsage.emit(metrics) + mb.metricSystemFilesystemUtilization.emit(metrics) } // RecordSystemFilesystemInodesUsageDataPoint adds a data point to system.filesystem.inodes.usage metric. @@ -192,6 +254,11 @@ func (mb *MetricsBuilder) RecordSystemFilesystemUsageDataPoint(ts pdata.Timestam mb.metricSystemFilesystemUsage.recordDataPoint(mb.startTime, ts, val, deviceAttributeValue, modeAttributeValue, mountpointAttributeValue, typeAttributeValue, stateAttributeValue) } +// RecordSystemFilesystemUtilizationDataPoint adds a data point to system.filesystem.utilization metric. +func (mb *MetricsBuilder) RecordSystemFilesystemUtilizationDataPoint(ts pdata.Timestamp, val float64, deviceAttributeValue string, modeAttributeValue string, mountpointAttributeValue string, typeAttributeValue string, stateAttributeValue string) { + mb.metricSystemFilesystemUtilization.recordDataPoint(mb.startTime, ts, val, deviceAttributeValue, modeAttributeValue, mountpointAttributeValue, typeAttributeValue, stateAttributeValue) +} + // Reset resets metrics builder to its initial state. It should be used when external metrics source is restarted, // and metrics builder should update its startTime and reset it's internal state accordingly. func (mb *MetricsBuilder) Reset(options ...metricBuilderOption) { @@ -229,8 +296,10 @@ var AttributeState = struct { Free string Reserved string Used string + Utilized string }{ "free", "reserved", "used", + "utilized", } diff --git a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/metadata.yaml b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/metadata.yaml index 796bd1e6bdedf..52d6af2c6ad26 100644 --- a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/metadata.yaml +++ b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/metadata.yaml @@ -12,7 +12,7 @@ attributes: state: description: Breakdown of filesystem usage by type. - enum: [free, reserved, used] + enum: [free, reserved, used, utilized] type: description: Filesystem type, such as, "ext4", "tmpfs", etc. @@ -37,3 +37,11 @@ metrics: aggregation: cumulative monotonic: false attributes: [device, mode, mountpoint, type, state] + + system.filesystem.utilization: + enabled: true + description: Percentage of filesystem bytes used. + unit: 1 + gauge: + value_type: double + attributes: [device, mode, mountpoint, type, state] \ No newline at end of file From 411f82d5d8f074b9eca5a2a6e4361cac38a6badd Mon Sep 17 00:00:00 2001 From: Grigorii Merkushev Date: Sat, 19 Feb 2022 10:58:07 +0100 Subject: [PATCH 02/10] update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 06d19338b1a05..a74b524267584 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,6 +38,7 @@ ### 💡 Enhancements 💡 +- `hostreceiver/filesystemscraper`: Add filesystem utilization (#8027) - `sumologicexporter`: Move validation to Config (#7936) - `elasticsearchexporter`: Fix crash with batch processor (#7953). - `splunkhecexporter`: Batch metrics payloads (#7760) From 991afd953cd11183ac8ffc576d01fde99ec219ce Mon Sep 17 00:00:00 2001 From: Grigorii Merkushev Date: Mon, 21 Feb 2022 17:42:07 +0100 Subject: [PATCH 03/10] fix: update metadata.yaml --- .../internal/scraper/filesystemscraper/metadata.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/metadata.yaml b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/metadata.yaml index 52d6af2c6ad26..c8737ce783a17 100644 --- a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/metadata.yaml +++ b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/metadata.yaml @@ -39,9 +39,9 @@ metrics: attributes: [device, mode, mountpoint, type, state] system.filesystem.utilization: - enabled: true + enabled: false description: Percentage of filesystem bytes used. unit: 1 gauge: value_type: double - attributes: [device, mode, mountpoint, type, state] \ No newline at end of file + attributes: [device, mode, mountpoint, type, state] From 91e2a3d16c213e632445ce937d7957c7611b50b1 Mon Sep 17 00:00:00 2001 From: Grigorii Merkushev Date: Wed, 23 Feb 2022 11:46:43 +0100 Subject: [PATCH 04/10] remove state for utilization, disabled by default --- .../scraper/filesystemscraper/documentation.md | 2 +- .../filesystemscraper/filesystem_scraper_others.go | 3 +-- .../filesystemscraper/filesystem_scraper_unix.go | 3 +-- .../internal/metadata/generated_metrics_v2.go | 11 ++++------- .../internal/scraper/filesystemscraper/metadata.yaml | 4 ++-- 5 files changed, 9 insertions(+), 14 deletions(-) diff --git a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/documentation.md b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/documentation.md index 37f074da07a08..f5131c3572bc2 100644 --- a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/documentation.md +++ b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/documentation.md @@ -10,7 +10,7 @@ These are the metrics available for this scraper. | ---- | ----------- | ---- | ---- | ---------- | | **system.filesystem.inodes.usage** | FileSystem inodes used. | {inodes} | Sum(Int) |
  • device
  • mode
  • mountpoint
  • type
  • state
| | **system.filesystem.usage** | Filesystem bytes used. | By | Sum(Int) |
  • device
  • mode
  • mountpoint
  • type
  • state
| -| **system.filesystem.utilization** | Percentage of filesystem bytes used. | 1 | Gauge(Double) |
  • device
  • mode
  • mountpoint
  • type
  • state
| +| system.filesystem.utilization | Percentage of filesystem bytes used. | 1 | Gauge(Double) |
  • device
  • mode
  • mountpoint
  • type
| **Highlighted metrics** are emitted by default. Other metrics are optional and not emitted by default. Any metric can be enabled or disabled with the following scraper configuration: diff --git a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/filesystem_scraper_others.go b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/filesystem_scraper_others.go index 8e8006f4589be..4ff7833ef901a 100644 --- a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/filesystem_scraper_others.go +++ b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/filesystem_scraper_others.go @@ -40,8 +40,7 @@ func (s *scraper) recordFileSystemUsageMetric(now pdata.Timestamp, deviceUsages s.mb.RecordSystemFilesystemUtilizationDataPoint( now, deviceUsage.usage.UsedPercent, deviceUsage.partition.Device, getMountMode(deviceUsage.partition.Opts), - deviceUsage.partition.Mountpoint, deviceUsage.partition.Fstype, - metadata.AttributeState.Utilized) + deviceUsage.partition.Mountpoint, deviceUsage.partition.Fstype) } } diff --git a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/filesystem_scraper_unix.go b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/filesystem_scraper_unix.go index 73713316ab864..bcc581d01b8f6 100644 --- a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/filesystem_scraper_unix.go +++ b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/filesystem_scraper_unix.go @@ -45,8 +45,7 @@ func (s *scraper) recordFileSystemUsageMetric(now pdata.Timestamp, deviceUsages s.mb.RecordSystemFilesystemUtilizationDataPoint( now, deviceUsage.usage.UsedPercent, deviceUsage.partition.Device, getMountMode(deviceUsage.partition.Opts), - deviceUsage.partition.Mountpoint, deviceUsage.partition.Fstype, - metadata.AttributeState.Utilized) + deviceUsage.partition.Mountpoint, deviceUsage.partition.Fstype) } } diff --git a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/internal/metadata/generated_metrics_v2.go b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/internal/metadata/generated_metrics_v2.go index 154248a475797..0d52ba5d0145a 100644 --- a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/internal/metadata/generated_metrics_v2.go +++ b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/internal/metadata/generated_metrics_v2.go @@ -29,7 +29,7 @@ func DefaultMetricsSettings() MetricsSettings { Enabled: true, }, SystemFilesystemUtilization: MetricSettings{ - Enabled: true, + Enabled: false, }, } } @@ -163,7 +163,7 @@ func (m *metricSystemFilesystemUtilization) init() { m.data.Gauge().DataPoints().EnsureCapacity(m.capacity) } -func (m *metricSystemFilesystemUtilization) recordDataPoint(start pdata.Timestamp, ts pdata.Timestamp, val float64, deviceAttributeValue string, modeAttributeValue string, mountpointAttributeValue string, typeAttributeValue string, stateAttributeValue string) { +func (m *metricSystemFilesystemUtilization) recordDataPoint(start pdata.Timestamp, ts pdata.Timestamp, val float64, deviceAttributeValue string, modeAttributeValue string, mountpointAttributeValue string, typeAttributeValue string) { if !m.settings.Enabled { return } @@ -175,7 +175,6 @@ func (m *metricSystemFilesystemUtilization) recordDataPoint(start pdata.Timestam dp.Attributes().Insert(A.Mode, pdata.NewAttributeValueString(modeAttributeValue)) dp.Attributes().Insert(A.Mountpoint, pdata.NewAttributeValueString(mountpointAttributeValue)) dp.Attributes().Insert(A.Type, pdata.NewAttributeValueString(typeAttributeValue)) - dp.Attributes().Insert(A.State, pdata.NewAttributeValueString(stateAttributeValue)) } // updateCapacity saves max length of data point slices that will be used for the slice capacity. @@ -255,8 +254,8 @@ func (mb *MetricsBuilder) RecordSystemFilesystemUsageDataPoint(ts pdata.Timestam } // RecordSystemFilesystemUtilizationDataPoint adds a data point to system.filesystem.utilization metric. -func (mb *MetricsBuilder) RecordSystemFilesystemUtilizationDataPoint(ts pdata.Timestamp, val float64, deviceAttributeValue string, modeAttributeValue string, mountpointAttributeValue string, typeAttributeValue string, stateAttributeValue string) { - mb.metricSystemFilesystemUtilization.recordDataPoint(mb.startTime, ts, val, deviceAttributeValue, modeAttributeValue, mountpointAttributeValue, typeAttributeValue, stateAttributeValue) +func (mb *MetricsBuilder) RecordSystemFilesystemUtilizationDataPoint(ts pdata.Timestamp, val float64, deviceAttributeValue string, modeAttributeValue string, mountpointAttributeValue string, typeAttributeValue string) { + mb.metricSystemFilesystemUtilization.recordDataPoint(mb.startTime, ts, val, deviceAttributeValue, modeAttributeValue, mountpointAttributeValue, typeAttributeValue) } // Reset resets metrics builder to its initial state. It should be used when external metrics source is restarted, @@ -296,10 +295,8 @@ var AttributeState = struct { Free string Reserved string Used string - Utilized string }{ "free", "reserved", "used", - "utilized", } diff --git a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/metadata.yaml b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/metadata.yaml index c8737ce783a17..233899a4321a6 100644 --- a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/metadata.yaml +++ b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/metadata.yaml @@ -12,7 +12,7 @@ attributes: state: description: Breakdown of filesystem usage by type. - enum: [free, reserved, used, utilized] + enum: [free, reserved, used] type: description: Filesystem type, such as, "ext4", "tmpfs", etc. @@ -44,4 +44,4 @@ metrics: unit: 1 gauge: value_type: double - attributes: [device, mode, mountpoint, type, state] + attributes: [device, mode, mountpoint, type] From 37784cd26a02fd3bbab6bd1dd7ceffb284f30c95 Mon Sep 17 00:00:00 2001 From: Grigorii Merkushev Date: Wed, 23 Feb 2022 13:03:23 +0100 Subject: [PATCH 05/10] fix failing test due to disabled metric --- receiver/hostmetricsreceiver/hostmetrics_receiver_test.go | 1 - 1 file changed, 1 deletion(-) diff --git a/receiver/hostmetricsreceiver/hostmetrics_receiver_test.go b/receiver/hostmetricsreceiver/hostmetrics_receiver_test.go index 3345eac55db5c..9ad86306ab504 100644 --- a/receiver/hostmetricsreceiver/hostmetrics_receiver_test.go +++ b/receiver/hostmetricsreceiver/hostmetrics_receiver_test.go @@ -57,7 +57,6 @@ var standardMetrics = []string{ "system.disk.operation_time", "system.disk.pending_operations", "system.filesystem.usage", - "system.filesystem.utilization", "system.memory.usage", "system.network.connections", "system.network.dropped", From b2fbbe01862c312b4dfaeed1263b90d77a68952d Mon Sep 17 00:00:00 2001 From: Grigorii Merkushev Date: Thu, 24 Feb 2022 15:31:07 +0100 Subject: [PATCH 06/10] change system.filesystem.utilization description --- .../internal/scraper/filesystemscraper/metadata.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/metadata.yaml b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/metadata.yaml index 233899a4321a6..e24e2538bcb35 100644 --- a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/metadata.yaml +++ b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/metadata.yaml @@ -40,7 +40,7 @@ metrics: system.filesystem.utilization: enabled: false - description: Percentage of filesystem bytes used. + description: Fraction of filesystem bytes used. unit: 1 gauge: value_type: double From 774a44cb47554195194546ff674b820ded407f97 Mon Sep 17 00:00:00 2001 From: Grigorii Merkushev Date: Thu, 24 Feb 2022 17:06:58 +0100 Subject: [PATCH 07/10] re-generate system.filesystem.utilization --- .../internal/scraper/filesystemscraper/documentation.md | 2 +- .../filesystemscraper/internal/metadata/generated_metrics_v2.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/documentation.md b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/documentation.md index f5131c3572bc2..81b96d89206df 100644 --- a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/documentation.md +++ b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/documentation.md @@ -10,7 +10,7 @@ These are the metrics available for this scraper. | ---- | ----------- | ---- | ---- | ---------- | | **system.filesystem.inodes.usage** | FileSystem inodes used. | {inodes} | Sum(Int) |
  • device
  • mode
  • mountpoint
  • type
  • state
| | **system.filesystem.usage** | Filesystem bytes used. | By | Sum(Int) |
  • device
  • mode
  • mountpoint
  • type
  • state
| -| system.filesystem.utilization | Percentage of filesystem bytes used. | 1 | Gauge(Double) |
  • device
  • mode
  • mountpoint
  • type
| +| system.filesystem.utilization | Fraction of filesystem bytes used. | 1 | Gauge(Double) |
  • device
  • mode
  • mountpoint
  • type
| **Highlighted metrics** are emitted by default. Other metrics are optional and not emitted by default. Any metric can be enabled or disabled with the following scraper configuration: diff --git a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/internal/metadata/generated_metrics_v2.go b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/internal/metadata/generated_metrics_v2.go index 0d52ba5d0145a..00cc3716bfb8f 100644 --- a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/internal/metadata/generated_metrics_v2.go +++ b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/internal/metadata/generated_metrics_v2.go @@ -157,7 +157,7 @@ type metricSystemFilesystemUtilization struct { // init fills system.filesystem.utilization metric with initial data. func (m *metricSystemFilesystemUtilization) init() { m.data.SetName("system.filesystem.utilization") - m.data.SetDescription("Percentage of filesystem bytes used.") + m.data.SetDescription("Fraction of filesystem bytes used.") m.data.SetUnit("1") m.data.SetDataType(pdata.MetricDataTypeGauge) m.data.Gauge().DataPoints().EnsureCapacity(m.capacity) From 46849aeac168ae686ec8c7ac120686632c3210c1 Mon Sep 17 00:00:00 2001 From: Grigorii Merkushev Date: Fri, 25 Feb 2022 16:31:21 +0100 Subject: [PATCH 08/10] make system.filesystem.utilization fraction of 1 --- .../scraper/filesystemscraper/filesystem_scraper_others.go | 2 +- .../scraper/filesystemscraper/filesystem_scraper_unix.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/filesystem_scraper_others.go b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/filesystem_scraper_others.go index 4ff7833ef901a..849fe68d14afd 100644 --- a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/filesystem_scraper_others.go +++ b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/filesystem_scraper_others.go @@ -38,7 +38,7 @@ func (s *scraper) recordFileSystemUsageMetric(now pdata.Timestamp, deviceUsages deviceUsage.partition.Mountpoint, deviceUsage.partition.Fstype, metadata.AttributeState.Free) s.mb.RecordSystemFilesystemUtilizationDataPoint( - now, deviceUsage.usage.UsedPercent, + now, deviceUsage.usage.UsedPercent / 100.0, deviceUsage.partition.Device, getMountMode(deviceUsage.partition.Opts), deviceUsage.partition.Mountpoint, deviceUsage.partition.Fstype) } diff --git a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/filesystem_scraper_unix.go b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/filesystem_scraper_unix.go index bcc581d01b8f6..f9e945c745667 100644 --- a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/filesystem_scraper_unix.go +++ b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/filesystem_scraper_unix.go @@ -43,7 +43,7 @@ func (s *scraper) recordFileSystemUsageMetric(now pdata.Timestamp, deviceUsages deviceUsage.partition.Mountpoint, deviceUsage.partition.Fstype, metadata.AttributeState.Reserved) s.mb.RecordSystemFilesystemUtilizationDataPoint( - now, deviceUsage.usage.UsedPercent, + now, deviceUsage.usage.UsedPercent / 100.0, deviceUsage.partition.Device, getMountMode(deviceUsage.partition.Opts), deviceUsage.partition.Mountpoint, deviceUsage.partition.Fstype) } From 8d8ee1b2868cc4cc9aae93b35aab24070a0327f1 Mon Sep 17 00:00:00 2001 From: Grigorii Merkushev Date: Wed, 2 Mar 2022 12:28:06 +0100 Subject: [PATCH 09/10] go fmt --- .../scraper/filesystemscraper/filesystem_scraper_others.go | 2 +- .../scraper/filesystemscraper/filesystem_scraper_unix.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/filesystem_scraper_others.go b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/filesystem_scraper_others.go index 849fe68d14afd..add319f8b2bfa 100644 --- a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/filesystem_scraper_others.go +++ b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/filesystem_scraper_others.go @@ -38,7 +38,7 @@ func (s *scraper) recordFileSystemUsageMetric(now pdata.Timestamp, deviceUsages deviceUsage.partition.Mountpoint, deviceUsage.partition.Fstype, metadata.AttributeState.Free) s.mb.RecordSystemFilesystemUtilizationDataPoint( - now, deviceUsage.usage.UsedPercent / 100.0, + now, deviceUsage.usage.UsedPercent/100.0, deviceUsage.partition.Device, getMountMode(deviceUsage.partition.Opts), deviceUsage.partition.Mountpoint, deviceUsage.partition.Fstype) } diff --git a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/filesystem_scraper_unix.go b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/filesystem_scraper_unix.go index f9e945c745667..28d47f4c54318 100644 --- a/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/filesystem_scraper_unix.go +++ b/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper/filesystem_scraper_unix.go @@ -43,7 +43,7 @@ func (s *scraper) recordFileSystemUsageMetric(now pdata.Timestamp, deviceUsages deviceUsage.partition.Mountpoint, deviceUsage.partition.Fstype, metadata.AttributeState.Reserved) s.mb.RecordSystemFilesystemUtilizationDataPoint( - now, deviceUsage.usage.UsedPercent / 100.0, + now, deviceUsage.usage.UsedPercent/100.0, deviceUsage.partition.Device, getMountMode(deviceUsage.partition.Opts), deviceUsage.partition.Mountpoint, deviceUsage.partition.Fstype) } From ad56cd200672cb0a809cfbea14e71c93fac1b20f Mon Sep 17 00:00:00 2001 From: Grigorii Merkushev Date: Wed, 2 Mar 2022 12:29:49 +0100 Subject: [PATCH 10/10] update changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a74b524267584..8bba0543d6791 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ - `honeycombexporter`: Add validation for `sending_queue` setting (#8113) - `routingprocessor`: Expand error handling on failure to build exporters (#8125) - `skywalkingreceiver`: Add new skywalking receiver component folder and structure (#8107) +- `hostreceiver/filesystemscraper`: Add filesystem utilization (#8027) ### 🛑 Breaking changes 🛑 @@ -38,7 +39,6 @@ ### 💡 Enhancements 💡 -- `hostreceiver/filesystemscraper`: Add filesystem utilization (#8027) - `sumologicexporter`: Move validation to Config (#7936) - `elasticsearchexporter`: Fix crash with batch processor (#7953). - `splunkhecexporter`: Batch metrics payloads (#7760)