Skip to content

Commit 0790063

Browse files
committed
Add disk and memory percent_used
1 parent 07b7a42 commit 0790063

File tree

9 files changed

+55
-0
lines changed

9 files changed

+55
-0
lines changed

Diff for: config/system-stats-monitor.json

+6
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@
4444
"disk/bytes_used": {
4545
"displayName": "disk/bytes_used"
4646
},
47+
"disk/percent_used": {
48+
"displayName": "disk/percent_used"
49+
},
4750
"disk/io_time": {
4851
"displayName": "disk/io_time"
4952
},
@@ -88,6 +91,9 @@
8891
},
8992
"memory/unevictable_used": {
9093
"displayName": "memory/unevictable_used"
94+
},
95+
"memory/percent_used": {
96+
"displayName": "memory/percent_used"
9197
}
9298
}
9399
},

Diff for: config/windows-system-stats-monitor.json

+6
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@
4444
"disk/bytes_used": {
4545
"displayName": "disk/bytes_used"
4646
},
47+
"disk/percent_used": {
48+
"displayName": "disk/percent_used"
49+
},
4750
"disk/io_time": {
4851
"displayName": "disk/io_time"
4952
},
@@ -88,6 +91,9 @@
8891
},
8992
"memory/unevictable_used": {
9093
"displayName": "memory/unevictable_used"
94+
},
95+
"memory/percent_used": {
96+
"displayName": "memory/percent_used"
9197
}
9298
}
9399
}

Diff for: pkg/exporters/stackdriver/stackdriver_exporter.go

+2
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ var NPDMetricToSDMetric = map[metrics.MetricID]string{
5454
metrics.CPULoad15m: "compute.googleapis.com/guest/cpu/load_15m",
5555
metrics.DiskAvgQueueLenID: "compute.googleapis.com/guest/disk/queue_length",
5656
metrics.DiskBytesUsedID: "compute.googleapis.com/guest/disk/bytes_used",
57+
metrics.DiskPercentUsedID: "custom.googleapis.com/guest/disk/percent_used",
5758
metrics.DiskIOTimeID: "compute.googleapis.com/guest/disk/io_time",
5859
metrics.DiskMergedOpsCountID: "compute.googleapis.com/guest/disk/merged_operation_count",
5960
metrics.DiskOpsBytesID: "compute.googleapis.com/guest/disk/operation_bytes_count",
@@ -66,6 +67,7 @@ var NPDMetricToSDMetric = map[metrics.MetricID]string{
6667
metrics.MemoryDirtyUsedID: "compute.googleapis.com/guest/memory/dirty_used",
6768
metrics.MemoryPageCacheUsedID: "compute.googleapis.com/guest/memory/page_cache_used",
6869
metrics.MemoryUnevictableUsedID: "compute.googleapis.com/guest/memory/unevictable_used",
70+
metrics.MemoryPercentUsedID: "custom.googleapis.com/guest/memory/percent_used",
6971
metrics.ProblemCounterID: "compute.googleapis.com/guest/system/problem_count",
7072
metrics.ProblemGaugeID: "compute.googleapis.com/guest/system/problem_state",
7173
metrics.OSFeatureID: "compute.googleapis.com/guest/system/os_feature_enabled",

Diff for: pkg/systemstatsmonitor/disk_collector.go

+15
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ type diskCollector struct {
3838
mOpsBytes *metrics.Int64Metric
3939
mOpsTime *metrics.Int64Metric
4040
mBytesUsed *metrics.Int64Metric
41+
mPercentUsed *metrics.Float64Metric
4142

4243
config *ssmtypes.DiskStatsConfig
4344

@@ -150,6 +151,17 @@ func NewDiskCollectorOrDie(diskConfig *ssmtypes.DiskStatsConfig) *diskCollector
150151
klog.Fatalf("Error initializing metric for %q: %v", metrics.DiskBytesUsedID, err)
151152
}
152153

154+
dc.mPercentUsed, err = metrics.NewFloat64Metric(
155+
metrics.DiskPercentUsedID,
156+
diskConfig.MetricsConfigs[string(metrics.DiskPercentUsedID)].DisplayName,
157+
"Disk usage in percentage of total space",
158+
"%",
159+
metrics.LastValue,
160+
[]string{deviceNameLabel})
161+
if err != nil {
162+
klog.Fatalf("Error initializing metric for %q: %v", metrics.DiskPercentUsedID, err)
163+
}
164+
153165
dc.lastIOTime = make(map[string]uint64)
154166
dc.lastWeightedIO = make(map[string]uint64)
155167
dc.lastReadCount = make(map[string]uint64)
@@ -291,6 +303,9 @@ func (dc *diskCollector) collect() {
291303
opttypes := strings.Join(partition.Opts, ",")
292304
dc.mBytesUsed.Record(map[string]string{deviceNameLabel: deviceName, fsTypeLabel: fstype, mountOptionLabel: opttypes, stateLabel: "free"}, int64(usageStat.Free))
293305
dc.mBytesUsed.Record(map[string]string{deviceNameLabel: deviceName, fsTypeLabel: fstype, mountOptionLabel: opttypes, stateLabel: "used"}, int64(usageStat.Used))
306+
if dc.mPercentUsed != nil {
307+
dc.mPercentUsed.Record(map[string]string{deviceNameLabel: deviceName, fsTypeLabel: fstype, mountOptionLabel: opttypes, stateLabel: "used"}, float64(usageStat.UsedPercent))
308+
}
294309
}
295310

296311
}

Diff for: pkg/systemstatsmonitor/memory_collector.go

+12
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525

2626
type memoryCollector struct {
2727
mBytesUsed *metrics.Int64Metric
28+
mPercentUsed *metrics.Float64Metric
2829
mAnonymousUsed *metrics.Int64Metric
2930
mPageCacheUsed *metrics.Int64Metric
3031
mUnevictableUsed *metrics.Int64Metric
@@ -49,6 +50,17 @@ func NewMemoryCollectorOrDie(memoryConfig *ssmtypes.MemoryStatsConfig) *memoryCo
4950
klog.Fatalf("Error initializing metric for %q: %v", metrics.MemoryBytesUsedID, err)
5051
}
5152

53+
mc.mPercentUsed, err = metrics.NewFloat64Metric(
54+
metrics.MemoryPercentUsedID,
55+
memoryConfig.MetricsConfigs[string(metrics.MemoryPercentUsedID)].DisplayName,
56+
"Memory usage in percentage of total memory.",
57+
"%",
58+
metrics.LastValue,
59+
[]string{stateLabel})
60+
if err != nil {
61+
klog.Fatalf("Error initializing metric for %q: %v", metrics.MemoryPercentUsedID, err)
62+
}
63+
5264
mc.mAnonymousUsed, err = metrics.NewInt64Metric(
5365
metrics.MemoryAnonymousUsedID,
5466
memoryConfig.MetricsConfigs[string(metrics.MemoryAnonymousUsedID)].DisplayName,

Diff for: pkg/systemstatsmonitor/memory_collector_unix.go

+6
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,12 @@ func (mc *memoryCollector) collect() {
5858
}
5959
}
6060

61+
if mc.mPercentUsed != nil && meminfo.MemTotal != nil && *meminfo.MemTotal > 0 &&
62+
meminfo.MemFree != nil && meminfo.Buffers != nil && meminfo.Cached != nil && meminfo.Slab != nil {
63+
ratio := float64(*meminfo.MemTotal - *meminfo.MemFree - *meminfo.Buffers - *meminfo.Cached - *meminfo.Slab) / float64(*meminfo.MemTotal)
64+
mc.mPercentUsed.Record(map[string]string{stateLabel: "used"}, float64(ratio*100.0))
65+
}
66+
6167
if mc.mDirtyUsed != nil {
6268
if meminfo.Dirty != nil {
6369
mc.mDirtyUsed.Record(map[string]string{stateLabel: "dirty"}, int64(*meminfo.Dirty)*1024)

Diff for: pkg/systemstatsmonitor/memory_collector_windows.go

+4
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,8 @@ func (mc *memoryCollector) collect() {
3737
mc.mBytesUsed.Record(map[string]string{stateLabel: "free"}, int64(meminfo.Available)*1024)
3838
mc.mBytesUsed.Record(map[string]string{stateLabel: "used"}, int64(meminfo.Used)*1024)
3939
}
40+
41+
if mc.mPercentUsed != nil {
42+
mc.mPercentUsed.Record(map[string]string{stateLabel: "used"}, float64(meminfo.UsedPercent))
43+
}
4044
}

Diff for: pkg/util/metrics/metric.go

+2
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,14 @@ const (
3535
DiskOpsBytesID MetricID = "disk/operation_bytes_count"
3636
DiskOpsTimeID MetricID = "disk/operation_time"
3737
DiskBytesUsedID MetricID = "disk/bytes_used"
38+
DiskPercentUsedID MetricID = "disk/percent_used"
3839
HostUptimeID MetricID = "host/uptime"
3940
MemoryBytesUsedID MetricID = "memory/bytes_used"
4041
MemoryAnonymousUsedID MetricID = "memory/anonymous_used"
4142
MemoryPageCacheUsedID MetricID = "memory/page_cache_used"
4243
MemoryUnevictableUsedID MetricID = "memory/unevictable_used"
4344
MemoryDirtyUsedID MetricID = "memory/dirty_used"
45+
MemoryPercentUsedID MetricID = "memory/percent_used"
4446
OSFeatureID MetricID = "system/os_feature"
4547
SystemProcessesTotal MetricID = "system/processes_total"
4648
SystemProcsRunning MetricID = "system/procs_running"

Diff for: test/e2e/metriconly/metrics_test.go

+2
Original file line numberDiff line numberDiff line change
@@ -85,13 +85,15 @@ var _ = ginkgo.Describe("NPD should export Prometheus metrics.", func() {
8585
assertMetricExist(gotMetrics, "disk_operation_bytes_count", map[string]string{}, false)
8686
assertMetricExist(gotMetrics, "disk_operation_time", map[string]string{}, false)
8787
assertMetricExist(gotMetrics, "disk_bytes_used", map[string]string{}, false)
88+
assertMetricExist(gotMetrics, "disk_percent_used", map[string]string{}, false)
8889
assertMetricExist(gotMetrics, "disk_io_time", map[string]string{}, false)
8990
assertMetricExist(gotMetrics, "disk_weighted_io", map[string]string{}, false)
9091
assertMetricExist(gotMetrics, "memory_bytes_used", map[string]string{}, false)
9192
assertMetricExist(gotMetrics, "memory_anonymous_used", map[string]string{}, false)
9293
assertMetricExist(gotMetrics, "memory_page_cache_used", map[string]string{}, false)
9394
assertMetricExist(gotMetrics, "memory_unevictable_used", map[string]string{}, true)
9495
assertMetricExist(gotMetrics, "memory_dirty_used", map[string]string{}, false)
96+
assertMetricExist(gotMetrics, "memory_percent_used", map[string]string{}, false)
9597
assertMetricExist(gotMetrics, "host_uptime", map[string]string{}, false)
9698
assertMetricExist(gotMetrics, "system_os_feature", map[string]string{}, false)
9799
})

0 commit comments

Comments
 (0)