aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Gier <pgier@redhat.com>2018-10-15 10:24:28 -0500
committerBen Kochie <superq@gmail.com>2018-10-15 17:24:28 +0200
commite8d819907272230c3d62783c8e26a3bf90696ffe (patch)
treef29eb3e498a64cc30db72ba349654be8edff529a
parent0880d460d76f58f7d4be264a202a9bacfbf76c6e (diff)
downloadprometheus_node_collector-e8d819907272230c3d62783c8e26a3bf90696ffe.tar.bz2
prometheus_node_collector-e8d819907272230c3d62783c8e26a3bf90696ffe.tar.xz
prometheus_node_collector-e8d819907272230c3d62783c8e26a3bf90696ffe.zip
Update diskstats for linux kernel 4.19 (#1109)
The format of /proc/diskstats is changing in linux-4.19 to include some additional fields. See: https://www.kernel.org/doc/Documentation/iostats.txt * collector/diskstats: use constants for some hard coded strings * collector/diskstats: update diskstats for linux-4.19 * collector/diskstats: remove kernel doc url from individual metrics Signed-off-by: Paul Gier <pgier@redhat.com>
-rw-r--r--collector/diskstats_linux.go66
-rw-r--r--collector/diskstats_linux_test.go4
-rw-r--r--collector/fixtures/e2e-64k-page-output.txt29
-rw-r--r--collector/fixtures/e2e-output.txt29
-rw-r--r--collector/fixtures/proc/diskstats3
5 files changed, 107 insertions, 24 deletions
diff --git a/collector/diskstats_linux.go b/collector/diskstats_linux.go
index 9b86eab..b3d85b1 100644
--- a/collector/diskstats_linux.go
+++ b/collector/diskstats_linux.go
@@ -30,8 +30,9 @@ import (
30) 30)
31 31
32const ( 32const (
33 diskSubsystem = "disk" 33 diskSubsystem = "disk"
34 diskSectorSize = 512 34 diskSectorSize = 512
35 diskstatsFilename = "diskstats"
35) 36)
36 37
37var ( 38var (
@@ -61,12 +62,12 @@ func init() {
61} 62}
62 63
63// NewDiskstatsCollector returns a new Collector exposing disk device stats. 64// NewDiskstatsCollector returns a new Collector exposing disk device stats.
65// Docs from https://www.kernel.org/doc/Documentation/iostats.txt
64func NewDiskstatsCollector() (Collector, error) { 66func NewDiskstatsCollector() (Collector, error) {
65 var diskLabelNames = []string{"device"} 67 var diskLabelNames = []string{"device"}
66 68
67 return &diskstatsCollector{ 69 return &diskstatsCollector{
68 ignoredDevicesPattern: regexp.MustCompile(*ignoredDevices), 70 ignoredDevicesPattern: regexp.MustCompile(*ignoredDevices),
69 // Docs from https://www.kernel.org/doc/Documentation/iostats.txt
70 descs: []typedFactorDesc{ 71 descs: []typedFactorDesc{
71 { 72 {
72 desc: prometheus.NewDesc( 73 desc: prometheus.NewDesc(
@@ -79,7 +80,7 @@ func NewDiskstatsCollector() (Collector, error) {
79 { 80 {
80 desc: prometheus.NewDesc( 81 desc: prometheus.NewDesc(
81 prometheus.BuildFQName(namespace, diskSubsystem, "reads_merged_total"), 82 prometheus.BuildFQName(namespace, diskSubsystem, "reads_merged_total"),
82 "The total number of reads merged. See https://www.kernel.org/doc/Documentation/iostats.txt.", 83 "The total number of reads merged.",
83 diskLabelNames, 84 diskLabelNames,
84 nil, 85 nil,
85 ), valueType: prometheus.CounterValue, 86 ), valueType: prometheus.CounterValue,
@@ -113,7 +114,7 @@ func NewDiskstatsCollector() (Collector, error) {
113 { 114 {
114 desc: prometheus.NewDesc( 115 desc: prometheus.NewDesc(
115 prometheus.BuildFQName(namespace, diskSubsystem, "writes_merged_total"), 116 prometheus.BuildFQName(namespace, diskSubsystem, "writes_merged_total"),
116 "The number of writes merged. See https://www.kernel.org/doc/Documentation/iostats.txt.", 117 "The number of writes merged.",
117 diskLabelNames, 118 diskLabelNames,
118 nil, 119 nil,
119 ), valueType: prometheus.CounterValue, 120 ), valueType: prometheus.CounterValue,
@@ -156,7 +157,40 @@ func NewDiskstatsCollector() (Collector, error) {
156 { 157 {
157 desc: prometheus.NewDesc( 158 desc: prometheus.NewDesc(
158 prometheus.BuildFQName(namespace, diskSubsystem, "io_time_weighted_seconds_total"), 159 prometheus.BuildFQName(namespace, diskSubsystem, "io_time_weighted_seconds_total"),
159 "The weighted # of seconds spent doing I/Os. See https://www.kernel.org/doc/Documentation/iostats.txt.", 160 "The weighted # of seconds spent doing I/Os.",
161 diskLabelNames,
162 nil,
163 ), valueType: prometheus.CounterValue,
164 factor: .001,
165 },
166 {
167 desc: prometheus.NewDesc(
168 prometheus.BuildFQName(namespace, diskSubsystem, "discards_completed_total"),
169 "The total number of discards completed successfully.",
170 diskLabelNames,
171 nil,
172 ), valueType: prometheus.CounterValue,
173 },
174 {
175 desc: prometheus.NewDesc(
176 prometheus.BuildFQName(namespace, diskSubsystem, "discards_merged_total"),
177 "The total number of discards merged.",
178 diskLabelNames,
179 nil,
180 ), valueType: prometheus.CounterValue,
181 },
182 {
183 desc: prometheus.NewDesc(
184 prometheus.BuildFQName(namespace, diskSubsystem, "discarded_sectors_total"),
185 "The total number of sectors discard successfully.",
186 diskLabelNames,
187 nil,
188 ), valueType: prometheus.CounterValue,
189 },
190 {
191 desc: prometheus.NewDesc(
192 prometheus.BuildFQName(namespace, diskSubsystem, "discard_time_seconds_total"),
193 "This is the total number of seconds spent by all discards.",
160 diskLabelNames, 194 diskLabelNames,
161 nil, 195 nil,
162 ), valueType: prometheus.CounterValue, 196 ), valueType: prometheus.CounterValue,
@@ -167,7 +201,6 @@ func NewDiskstatsCollector() (Collector, error) {
167} 201}
168 202
169func (c *diskstatsCollector) Update(ch chan<- prometheus.Metric) error { 203func (c *diskstatsCollector) Update(ch chan<- prometheus.Metric) error {
170 procDiskStats := procFilePath("diskstats")
171 diskStats, err := getDiskStats() 204 diskStats, err := getDiskStats()
172 if err != nil { 205 if err != nil {
173 return fmt.Errorf("couldn't get diskstats: %s", err) 206 return fmt.Errorf("couldn't get diskstats: %s", err)
@@ -179,8 +212,8 @@ func (c *diskstatsCollector) Update(ch chan<- prometheus.Metric) error {
179 continue 212 continue
180 } 213 }
181 214
182 if len(stats) != len(c.descs) { 215 if len(stats) > len(c.descs) {
183 return fmt.Errorf("invalid line for %s for %s", procDiskStats, dev) 216 return fmt.Errorf("invalid line for %s for %s", procFilePath(diskstatsFilename), dev)
184 } 217 }
185 218
186 for i, value := range stats { 219 for i, value := range stats {
@@ -194,8 +227,8 @@ func (c *diskstatsCollector) Update(ch chan<- prometheus.Metric) error {
194 return nil 227 return nil
195} 228}
196 229
197func getDiskStats() (map[string]map[int]string, error) { 230func getDiskStats() (map[string][]string, error) {
198 file, err := os.Open(procFilePath("diskstats")) 231 file, err := os.Open(procFilePath(diskstatsFilename))
199 if err != nil { 232 if err != nil {
200 return nil, err 233 return nil, err
201 } 234 }
@@ -204,22 +237,19 @@ func getDiskStats() (map[string]map[int]string, error) {
204 return parseDiskStats(file) 237 return parseDiskStats(file)
205} 238}
206 239
207func parseDiskStats(r io.Reader) (map[string]map[int]string, error) { 240func parseDiskStats(r io.Reader) (map[string][]string, error) {
208 var ( 241 var (
209 diskStats = map[string]map[int]string{} 242 diskStats = map[string][]string{}
210 scanner = bufio.NewScanner(r) 243 scanner = bufio.NewScanner(r)
211 ) 244 )
212 245
213 for scanner.Scan() { 246 for scanner.Scan() {
214 parts := strings.Fields(scanner.Text()) 247 parts := strings.Fields(scanner.Text())
215 if len(parts) < 4 { // we strip major, minor and dev 248 if len(parts) < 4 { // we strip major, minor and dev
216 return nil, fmt.Errorf("invalid line in %s: %s", procFilePath("diskstats"), scanner.Text()) 249 return nil, fmt.Errorf("invalid line in %s: %s", procFilePath(diskstatsFilename), scanner.Text())
217 } 250 }
218 dev := parts[2] 251 dev := parts[2]
219 diskStats[dev] = map[int]string{} 252 diskStats[dev] = parts[3:]
220 for i, v := range parts[3:] {
221 diskStats[dev][i] = v
222 }
223 } 253 }
224 254
225 return diskStats, scanner.Err() 255 return diskStats, scanner.Err()
diff --git a/collector/diskstats_linux_test.go b/collector/diskstats_linux_test.go
index 405bf28..84a7de4 100644
--- a/collector/diskstats_linux_test.go
+++ b/collector/diskstats_linux_test.go
@@ -37,4 +37,8 @@ func TestDiskStats(t *testing.T) {
37 if want, got := "68", diskStats["mmcblk0p2"][10]; want != got { 37 if want, got := "68", diskStats["mmcblk0p2"][10]; want != got {
38 t.Errorf("want diskstats mmcblk0p2 %s, got %s", want, got) 38 t.Errorf("want diskstats mmcblk0p2 %s, got %s", want, got)
39 } 39 }
40
41 if want, got := "11130", diskStats["sdb"][14]; want != got {
42 t.Errorf("want diskstats sdb %s, got %s", want, got)
43 }
40} 44}
diff --git a/collector/fixtures/e2e-64k-page-output.txt b/collector/fixtures/e2e-64k-page-output.txt
index f694567..decad90 100644
--- a/collector/fixtures/e2e-64k-page-output.txt
+++ b/collector/fixtures/e2e-64k-page-output.txt
@@ -290,6 +290,18 @@ node_cpu_seconds_total{cpu="7",mode="softirq"} 0.31
290node_cpu_seconds_total{cpu="7",mode="steal"} 0 290node_cpu_seconds_total{cpu="7",mode="steal"} 0
291node_cpu_seconds_total{cpu="7",mode="system"} 101.64 291node_cpu_seconds_total{cpu="7",mode="system"} 101.64
292node_cpu_seconds_total{cpu="7",mode="user"} 290.98 292node_cpu_seconds_total{cpu="7",mode="user"} 290.98
293# HELP node_disk_discard_time_seconds_total This is the total number of seconds spent by all discards.
294# TYPE node_disk_discard_time_seconds_total counter
295node_disk_discard_time_seconds_total{device="sdb"} 11.13
296# HELP node_disk_discarded_sectors_total The total number of sectors discard successfully.
297# TYPE node_disk_discarded_sectors_total counter
298node_disk_discarded_sectors_total{device="sdb"} 1.925173784e+09
299# HELP node_disk_discards_completed_total The total number of discards completed successfully.
300# TYPE node_disk_discards_completed_total counter
301node_disk_discards_completed_total{device="sdb"} 68851
302# HELP node_disk_discards_merged_total The total number of discards merged.
303# TYPE node_disk_discards_merged_total counter
304node_disk_discards_merged_total{device="sdb"} 0
293# HELP node_disk_io_now The number of I/Os currently in progress. 305# HELP node_disk_io_now The number of I/Os currently in progress.
294# TYPE node_disk_io_now gauge 306# TYPE node_disk_io_now gauge
295node_disk_io_now{device="dm-0"} 0 307node_disk_io_now{device="dm-0"} 0
@@ -303,6 +315,7 @@ node_disk_io_now{device="mmcblk0p1"} 0
303node_disk_io_now{device="mmcblk0p2"} 0 315node_disk_io_now{device="mmcblk0p2"} 0
304node_disk_io_now{device="nvme0n1"} 0 316node_disk_io_now{device="nvme0n1"} 0
305node_disk_io_now{device="sda"} 0 317node_disk_io_now{device="sda"} 0
318node_disk_io_now{device="sdb"} 0
306node_disk_io_now{device="sr0"} 0 319node_disk_io_now{device="sr0"} 0
307node_disk_io_now{device="vda"} 0 320node_disk_io_now{device="vda"} 0
308# HELP node_disk_io_time_seconds_total Total seconds spent doing I/Os. 321# HELP node_disk_io_time_seconds_total Total seconds spent doing I/Os.
@@ -318,9 +331,10 @@ node_disk_io_time_seconds_total{device="mmcblk0p1"} 0.024
318node_disk_io_time_seconds_total{device="mmcblk0p2"} 0.068 331node_disk_io_time_seconds_total{device="mmcblk0p2"} 0.068
319node_disk_io_time_seconds_total{device="nvme0n1"} 222.766 332node_disk_io_time_seconds_total{device="nvme0n1"} 222.766
320node_disk_io_time_seconds_total{device="sda"} 9653.880000000001 333node_disk_io_time_seconds_total{device="sda"} 9653.880000000001
334node_disk_io_time_seconds_total{device="sdb"} 60.730000000000004
321node_disk_io_time_seconds_total{device="sr0"} 0 335node_disk_io_time_seconds_total{device="sr0"} 0
322node_disk_io_time_seconds_total{device="vda"} 41614.592000000004 336node_disk_io_time_seconds_total{device="vda"} 41614.592000000004
323# HELP node_disk_io_time_weighted_seconds_total The weighted # of seconds spent doing I/Os. See https://www.kernel.org/doc/Documentation/iostats.txt. 337# HELP node_disk_io_time_weighted_seconds_total The weighted # of seconds spent doing I/Os.
324# TYPE node_disk_io_time_weighted_seconds_total counter 338# TYPE node_disk_io_time_weighted_seconds_total counter
325node_disk_io_time_weighted_seconds_total{device="dm-0"} 1.206301256e+06 339node_disk_io_time_weighted_seconds_total{device="dm-0"} 1.206301256e+06
326node_disk_io_time_weighted_seconds_total{device="dm-1"} 0.084 340node_disk_io_time_weighted_seconds_total{device="dm-1"} 0.084
@@ -333,6 +347,7 @@ node_disk_io_time_weighted_seconds_total{device="mmcblk0p1"} 0.024
333node_disk_io_time_weighted_seconds_total{device="mmcblk0p2"} 0.068 347node_disk_io_time_weighted_seconds_total{device="mmcblk0p2"} 0.068
334node_disk_io_time_weighted_seconds_total{device="nvme0n1"} 1032.546 348node_disk_io_time_weighted_seconds_total{device="nvme0n1"} 1032.546
335node_disk_io_time_weighted_seconds_total{device="sda"} 82621.804 349node_disk_io_time_weighted_seconds_total{device="sda"} 82621.804
350node_disk_io_time_weighted_seconds_total{device="sdb"} 67.07000000000001
336node_disk_io_time_weighted_seconds_total{device="sr0"} 0 351node_disk_io_time_weighted_seconds_total{device="sr0"} 0
337node_disk_io_time_weighted_seconds_total{device="vda"} 2.0778722280000001e+06 352node_disk_io_time_weighted_seconds_total{device="vda"} 2.0778722280000001e+06
338# HELP node_disk_read_bytes_total The total number of bytes read successfully. 353# HELP node_disk_read_bytes_total The total number of bytes read successfully.
@@ -348,6 +363,7 @@ node_disk_read_bytes_total{device="mmcblk0p1"} 81920
348node_disk_read_bytes_total{device="mmcblk0p2"} 389120 363node_disk_read_bytes_total{device="mmcblk0p2"} 389120
349node_disk_read_bytes_total{device="nvme0n1"} 2.377714176e+09 364node_disk_read_bytes_total{device="nvme0n1"} 2.377714176e+09
350node_disk_read_bytes_total{device="sda"} 5.13713216512e+11 365node_disk_read_bytes_total{device="sda"} 5.13713216512e+11
366node_disk_read_bytes_total{device="sdb"} 4.944782848e+09
351node_disk_read_bytes_total{device="sr0"} 0 367node_disk_read_bytes_total{device="sr0"} 0
352node_disk_read_bytes_total{device="vda"} 1.6727491584e+10 368node_disk_read_bytes_total{device="vda"} 1.6727491584e+10
353# HELP node_disk_read_time_seconds_total The total number of seconds spent by all reads. 369# HELP node_disk_read_time_seconds_total The total number of seconds spent by all reads.
@@ -363,6 +379,7 @@ node_disk_read_time_seconds_total{device="mmcblk0p1"} 0.024
363node_disk_read_time_seconds_total{device="mmcblk0p2"} 0.068 379node_disk_read_time_seconds_total{device="mmcblk0p2"} 0.068
364node_disk_read_time_seconds_total{device="nvme0n1"} 21.650000000000002 380node_disk_read_time_seconds_total{device="nvme0n1"} 21.650000000000002
365node_disk_read_time_seconds_total{device="sda"} 18492.372 381node_disk_read_time_seconds_total{device="sda"} 18492.372
382node_disk_read_time_seconds_total{device="sdb"} 0.084
366node_disk_read_time_seconds_total{device="sr0"} 0 383node_disk_read_time_seconds_total{device="sr0"} 0
367node_disk_read_time_seconds_total{device="vda"} 8655.768 384node_disk_read_time_seconds_total{device="vda"} 8655.768
368# HELP node_disk_reads_completed_total The total number of reads completed successfully. 385# HELP node_disk_reads_completed_total The total number of reads completed successfully.
@@ -378,9 +395,10 @@ node_disk_reads_completed_total{device="mmcblk0p1"} 17
378node_disk_reads_completed_total{device="mmcblk0p2"} 95 395node_disk_reads_completed_total{device="mmcblk0p2"} 95
379node_disk_reads_completed_total{device="nvme0n1"} 47114 396node_disk_reads_completed_total{device="nvme0n1"} 47114
380node_disk_reads_completed_total{device="sda"} 2.5354637e+07 397node_disk_reads_completed_total{device="sda"} 2.5354637e+07
398node_disk_reads_completed_total{device="sdb"} 326552
381node_disk_reads_completed_total{device="sr0"} 0 399node_disk_reads_completed_total{device="sr0"} 0
382node_disk_reads_completed_total{device="vda"} 1.775784e+06 400node_disk_reads_completed_total{device="vda"} 1.775784e+06
383# HELP node_disk_reads_merged_total The total number of reads merged. See https://www.kernel.org/doc/Documentation/iostats.txt. 401# HELP node_disk_reads_merged_total The total number of reads merged.
384# TYPE node_disk_reads_merged_total counter 402# TYPE node_disk_reads_merged_total counter
385node_disk_reads_merged_total{device="dm-0"} 0 403node_disk_reads_merged_total{device="dm-0"} 0
386node_disk_reads_merged_total{device="dm-1"} 0 404node_disk_reads_merged_total{device="dm-1"} 0
@@ -393,6 +411,7 @@ node_disk_reads_merged_total{device="mmcblk0p1"} 3
393node_disk_reads_merged_total{device="mmcblk0p2"} 0 411node_disk_reads_merged_total{device="mmcblk0p2"} 0
394node_disk_reads_merged_total{device="nvme0n1"} 4 412node_disk_reads_merged_total{device="nvme0n1"} 4
395node_disk_reads_merged_total{device="sda"} 3.4367663e+07 413node_disk_reads_merged_total{device="sda"} 3.4367663e+07
414node_disk_reads_merged_total{device="sdb"} 841
396node_disk_reads_merged_total{device="sr0"} 0 415node_disk_reads_merged_total{device="sr0"} 0
397node_disk_reads_merged_total{device="vda"} 15386 416node_disk_reads_merged_total{device="vda"} 15386
398# HELP node_disk_write_time_seconds_total This is the total number of seconds spent by all writes. 417# HELP node_disk_write_time_seconds_total This is the total number of seconds spent by all writes.
@@ -408,6 +427,7 @@ node_disk_write_time_seconds_total{device="mmcblk0p1"} 0
408node_disk_write_time_seconds_total{device="mmcblk0p2"} 0 427node_disk_write_time_seconds_total{device="mmcblk0p2"} 0
409node_disk_write_time_seconds_total{device="nvme0n1"} 1011.053 428node_disk_write_time_seconds_total{device="nvme0n1"} 1011.053
410node_disk_write_time_seconds_total{device="sda"} 63877.96 429node_disk_write_time_seconds_total{device="sda"} 63877.96
430node_disk_write_time_seconds_total{device="sdb"} 5.007
411node_disk_write_time_seconds_total{device="sr0"} 0 431node_disk_write_time_seconds_total{device="sr0"} 0
412node_disk_write_time_seconds_total{device="vda"} 2.069221364e+06 432node_disk_write_time_seconds_total{device="vda"} 2.069221364e+06
413# HELP node_disk_writes_completed_total The total number of writes completed successfully. 433# HELP node_disk_writes_completed_total The total number of writes completed successfully.
@@ -423,9 +443,10 @@ node_disk_writes_completed_total{device="mmcblk0p1"} 0
423node_disk_writes_completed_total{device="mmcblk0p2"} 0 443node_disk_writes_completed_total{device="mmcblk0p2"} 0
424node_disk_writes_completed_total{device="nvme0n1"} 1.07832e+06 444node_disk_writes_completed_total{device="nvme0n1"} 1.07832e+06
425node_disk_writes_completed_total{device="sda"} 2.8444756e+07 445node_disk_writes_completed_total{device="sda"} 2.8444756e+07
446node_disk_writes_completed_total{device="sdb"} 41822
426node_disk_writes_completed_total{device="sr0"} 0 447node_disk_writes_completed_total{device="sr0"} 0
427node_disk_writes_completed_total{device="vda"} 6.038856e+06 448node_disk_writes_completed_total{device="vda"} 6.038856e+06
428# HELP node_disk_writes_merged_total The number of writes merged. See https://www.kernel.org/doc/Documentation/iostats.txt. 449# HELP node_disk_writes_merged_total The number of writes merged.
429# TYPE node_disk_writes_merged_total counter 450# TYPE node_disk_writes_merged_total counter
430node_disk_writes_merged_total{device="dm-0"} 0 451node_disk_writes_merged_total{device="dm-0"} 0
431node_disk_writes_merged_total{device="dm-1"} 0 452node_disk_writes_merged_total{device="dm-1"} 0
@@ -438,6 +459,7 @@ node_disk_writes_merged_total{device="mmcblk0p1"} 0
438node_disk_writes_merged_total{device="mmcblk0p2"} 0 459node_disk_writes_merged_total{device="mmcblk0p2"} 0
439node_disk_writes_merged_total{device="nvme0n1"} 43950 460node_disk_writes_merged_total{device="nvme0n1"} 43950
440node_disk_writes_merged_total{device="sda"} 1.1134226e+07 461node_disk_writes_merged_total{device="sda"} 1.1134226e+07
462node_disk_writes_merged_total{device="sdb"} 2895
441node_disk_writes_merged_total{device="sr0"} 0 463node_disk_writes_merged_total{device="sr0"} 0
442node_disk_writes_merged_total{device="vda"} 2.0711856e+07 464node_disk_writes_merged_total{device="vda"} 2.0711856e+07
443# HELP node_disk_written_bytes_total The total number of bytes written successfully. 465# HELP node_disk_written_bytes_total The total number of bytes written successfully.
@@ -453,6 +475,7 @@ node_disk_written_bytes_total{device="mmcblk0p1"} 0
453node_disk_written_bytes_total{device="mmcblk0p2"} 0 475node_disk_written_bytes_total{device="mmcblk0p2"} 0
454node_disk_written_bytes_total{device="nvme0n1"} 2.0199236096e+10 476node_disk_written_bytes_total{device="nvme0n1"} 2.0199236096e+10
455node_disk_written_bytes_total{device="sda"} 2.58916880384e+11 477node_disk_written_bytes_total{device="sda"} 2.58916880384e+11
478node_disk_written_bytes_total{device="sdb"} 1.01012736e+09
456node_disk_written_bytes_total{device="sr0"} 0 479node_disk_written_bytes_total{device="sr0"} 0
457node_disk_written_bytes_total{device="vda"} 1.0938236928e+11 480node_disk_written_bytes_total{device="vda"} 1.0938236928e+11
458# HELP node_drbd_activitylog_writes_total Number of updates of the activity log area of the meta data. 481# HELP node_drbd_activitylog_writes_total Number of updates of the activity log area of the meta data.
diff --git a/collector/fixtures/e2e-output.txt b/collector/fixtures/e2e-output.txt
index 5f0b8ac..a1e3d76 100644
--- a/collector/fixtures/e2e-output.txt
+++ b/collector/fixtures/e2e-output.txt
@@ -290,6 +290,18 @@ node_cpu_seconds_total{cpu="7",mode="softirq"} 0.31
290node_cpu_seconds_total{cpu="7",mode="steal"} 0 290node_cpu_seconds_total{cpu="7",mode="steal"} 0
291node_cpu_seconds_total{cpu="7",mode="system"} 101.64 291node_cpu_seconds_total{cpu="7",mode="system"} 101.64
292node_cpu_seconds_total{cpu="7",mode="user"} 290.98 292node_cpu_seconds_total{cpu="7",mode="user"} 290.98
293# HELP node_disk_discard_time_seconds_total This is the total number of seconds spent by all discards.
294# TYPE node_disk_discard_time_seconds_total counter
295node_disk_discard_time_seconds_total{device="sdb"} 11.13
296# HELP node_disk_discarded_sectors_total The total number of sectors discard successfully.
297# TYPE node_disk_discarded_sectors_total counter
298node_disk_discarded_sectors_total{device="sdb"} 1.925173784e+09
299# HELP node_disk_discards_completed_total The total number of discards completed successfully.
300# TYPE node_disk_discards_completed_total counter
301node_disk_discards_completed_total{device="sdb"} 68851
302# HELP node_disk_discards_merged_total The total number of discards merged.
303# TYPE node_disk_discards_merged_total counter
304node_disk_discards_merged_total{device="sdb"} 0
293# HELP node_disk_io_now The number of I/Os currently in progress. 305# HELP node_disk_io_now The number of I/Os currently in progress.
294# TYPE node_disk_io_now gauge 306# TYPE node_disk_io_now gauge
295node_disk_io_now{device="dm-0"} 0 307node_disk_io_now{device="dm-0"} 0
@@ -303,6 +315,7 @@ node_disk_io_now{device="mmcblk0p1"} 0
303node_disk_io_now{device="mmcblk0p2"} 0 315node_disk_io_now{device="mmcblk0p2"} 0
304node_disk_io_now{device="nvme0n1"} 0 316node_disk_io_now{device="nvme0n1"} 0
305node_disk_io_now{device="sda"} 0 317node_disk_io_now{device="sda"} 0
318node_disk_io_now{device="sdb"} 0
306node_disk_io_now{device="sr0"} 0 319node_disk_io_now{device="sr0"} 0
307node_disk_io_now{device="vda"} 0 320node_disk_io_now{device="vda"} 0
308# HELP node_disk_io_time_seconds_total Total seconds spent doing I/Os. 321# HELP node_disk_io_time_seconds_total Total seconds spent doing I/Os.
@@ -318,9 +331,10 @@ node_disk_io_time_seconds_total{device="mmcblk0p1"} 0.024
318node_disk_io_time_seconds_total{device="mmcblk0p2"} 0.068 331node_disk_io_time_seconds_total{device="mmcblk0p2"} 0.068
319node_disk_io_time_seconds_total{device="nvme0n1"} 222.766 332node_disk_io_time_seconds_total{device="nvme0n1"} 222.766
320node_disk_io_time_seconds_total{device="sda"} 9653.880000000001 333node_disk_io_time_seconds_total{device="sda"} 9653.880000000001
334node_disk_io_time_seconds_total{device="sdb"} 60.730000000000004
321node_disk_io_time_seconds_total{device="sr0"} 0 335node_disk_io_time_seconds_total{device="sr0"} 0
322node_disk_io_time_seconds_total{device="vda"} 41614.592000000004 336node_disk_io_time_seconds_total{device="vda"} 41614.592000000004
323# HELP node_disk_io_time_weighted_seconds_total The weighted # of seconds spent doing I/Os. See https://www.kernel.org/doc/Documentation/iostats.txt. 337# HELP node_disk_io_time_weighted_seconds_total The weighted # of seconds spent doing I/Os.
324# TYPE node_disk_io_time_weighted_seconds_total counter 338# TYPE node_disk_io_time_weighted_seconds_total counter
325node_disk_io_time_weighted_seconds_total{device="dm-0"} 1.206301256e+06 339node_disk_io_time_weighted_seconds_total{device="dm-0"} 1.206301256e+06
326node_disk_io_time_weighted_seconds_total{device="dm-1"} 0.084 340node_disk_io_time_weighted_seconds_total{device="dm-1"} 0.084
@@ -333,6 +347,7 @@ node_disk_io_time_weighted_seconds_total{device="mmcblk0p1"} 0.024
333node_disk_io_time_weighted_seconds_total{device="mmcblk0p2"} 0.068 347node_disk_io_time_weighted_seconds_total{device="mmcblk0p2"} 0.068
334node_disk_io_time_weighted_seconds_total{device="nvme0n1"} 1032.546 348node_disk_io_time_weighted_seconds_total{device="nvme0n1"} 1032.546
335node_disk_io_time_weighted_seconds_total{device="sda"} 82621.804 349node_disk_io_time_weighted_seconds_total{device="sda"} 82621.804
350node_disk_io_time_weighted_seconds_total{device="sdb"} 67.07000000000001
336node_disk_io_time_weighted_seconds_total{device="sr0"} 0 351node_disk_io_time_weighted_seconds_total{device="sr0"} 0
337node_disk_io_time_weighted_seconds_total{device="vda"} 2.0778722280000001e+06 352node_disk_io_time_weighted_seconds_total{device="vda"} 2.0778722280000001e+06
338# HELP node_disk_read_bytes_total The total number of bytes read successfully. 353# HELP node_disk_read_bytes_total The total number of bytes read successfully.
@@ -348,6 +363,7 @@ node_disk_read_bytes_total{device="mmcblk0p1"} 81920
348node_disk_read_bytes_total{device="mmcblk0p2"} 389120 363node_disk_read_bytes_total{device="mmcblk0p2"} 389120
349node_disk_read_bytes_total{device="nvme0n1"} 2.377714176e+09 364node_disk_read_bytes_total{device="nvme0n1"} 2.377714176e+09
350node_disk_read_bytes_total{device="sda"} 5.13713216512e+11 365node_disk_read_bytes_total{device="sda"} 5.13713216512e+11
366node_disk_read_bytes_total{device="sdb"} 4.944782848e+09
351node_disk_read_bytes_total{device="sr0"} 0 367node_disk_read_bytes_total{device="sr0"} 0
352node_disk_read_bytes_total{device="vda"} 1.6727491584e+10 368node_disk_read_bytes_total{device="vda"} 1.6727491584e+10
353# HELP node_disk_read_time_seconds_total The total number of seconds spent by all reads. 369# HELP node_disk_read_time_seconds_total The total number of seconds spent by all reads.
@@ -363,6 +379,7 @@ node_disk_read_time_seconds_total{device="mmcblk0p1"} 0.024
363node_disk_read_time_seconds_total{device="mmcblk0p2"} 0.068 379node_disk_read_time_seconds_total{device="mmcblk0p2"} 0.068
364node_disk_read_time_seconds_total{device="nvme0n1"} 21.650000000000002 380node_disk_read_time_seconds_total{device="nvme0n1"} 21.650000000000002
365node_disk_read_time_seconds_total{device="sda"} 18492.372 381node_disk_read_time_seconds_total{device="sda"} 18492.372
382node_disk_read_time_seconds_total{device="sdb"} 0.084
366node_disk_read_time_seconds_total{device="sr0"} 0 383node_disk_read_time_seconds_total{device="sr0"} 0
367node_disk_read_time_seconds_total{device="vda"} 8655.768 384node_disk_read_time_seconds_total{device="vda"} 8655.768
368# HELP node_disk_reads_completed_total The total number of reads completed successfully. 385# HELP node_disk_reads_completed_total The total number of reads completed successfully.
@@ -378,9 +395,10 @@ node_disk_reads_completed_total{device="mmcblk0p1"} 17
378node_disk_reads_completed_total{device="mmcblk0p2"} 95 395node_disk_reads_completed_total{device="mmcblk0p2"} 95
379node_disk_reads_completed_total{device="nvme0n1"} 47114 396node_disk_reads_completed_total{device="nvme0n1"} 47114
380node_disk_reads_completed_total{device="sda"} 2.5354637e+07 397node_disk_reads_completed_total{device="sda"} 2.5354637e+07
398node_disk_reads_completed_total{device="sdb"} 326552
381node_disk_reads_completed_total{device="sr0"} 0 399node_disk_reads_completed_total{device="sr0"} 0
382node_disk_reads_completed_total{device="vda"} 1.775784e+06 400node_disk_reads_completed_total{device="vda"} 1.775784e+06
383# HELP node_disk_reads_merged_total The total number of reads merged. See https://www.kernel.org/doc/Documentation/iostats.txt. 401# HELP node_disk_reads_merged_total The total number of reads merged.
384# TYPE node_disk_reads_merged_total counter 402# TYPE node_disk_reads_merged_total counter
385node_disk_reads_merged_total{device="dm-0"} 0 403node_disk_reads_merged_total{device="dm-0"} 0
386node_disk_reads_merged_total{device="dm-1"} 0 404node_disk_reads_merged_total{device="dm-1"} 0
@@ -393,6 +411,7 @@ node_disk_reads_merged_total{device="mmcblk0p1"} 3
393node_disk_reads_merged_total{device="mmcblk0p2"} 0 411node_disk_reads_merged_total{device="mmcblk0p2"} 0
394node_disk_reads_merged_total{device="nvme0n1"} 4 412node_disk_reads_merged_total{device="nvme0n1"} 4
395node_disk_reads_merged_total{device="sda"} 3.4367663e+07 413node_disk_reads_merged_total{device="sda"} 3.4367663e+07
414node_disk_reads_merged_total{device="sdb"} 841
396node_disk_reads_merged_total{device="sr0"} 0 415node_disk_reads_merged_total{device="sr0"} 0
397node_disk_reads_merged_total{device="vda"} 15386 416node_disk_reads_merged_total{device="vda"} 15386
398# HELP node_disk_write_time_seconds_total This is the total number of seconds spent by all writes. 417# HELP node_disk_write_time_seconds_total This is the total number of seconds spent by all writes.
@@ -408,6 +427,7 @@ node_disk_write_time_seconds_total{device="mmcblk0p1"} 0
408node_disk_write_time_seconds_total{device="mmcblk0p2"} 0 427node_disk_write_time_seconds_total{device="mmcblk0p2"} 0
409node_disk_write_time_seconds_total{device="nvme0n1"} 1011.053 428node_disk_write_time_seconds_total{device="nvme0n1"} 1011.053
410node_disk_write_time_seconds_total{device="sda"} 63877.96 429node_disk_write_time_seconds_total{device="sda"} 63877.96
430node_disk_write_time_seconds_total{device="sdb"} 5.007
411node_disk_write_time_seconds_total{device="sr0"} 0 431node_disk_write_time_seconds_total{device="sr0"} 0
412node_disk_write_time_seconds_total{device="vda"} 2.069221364e+06 432node_disk_write_time_seconds_total{device="vda"} 2.069221364e+06
413# HELP node_disk_writes_completed_total The total number of writes completed successfully. 433# HELP node_disk_writes_completed_total The total number of writes completed successfully.
@@ -423,9 +443,10 @@ node_disk_writes_completed_total{device="mmcblk0p1"} 0
423node_disk_writes_completed_total{device="mmcblk0p2"} 0 443node_disk_writes_completed_total{device="mmcblk0p2"} 0
424node_disk_writes_completed_total{device="nvme0n1"} 1.07832e+06 444node_disk_writes_completed_total{device="nvme0n1"} 1.07832e+06
425node_disk_writes_completed_total{device="sda"} 2.8444756e+07 445node_disk_writes_completed_total{device="sda"} 2.8444756e+07
446node_disk_writes_completed_total{device="sdb"} 41822
426node_disk_writes_completed_total{device="sr0"} 0 447node_disk_writes_completed_total{device="sr0"} 0
427node_disk_writes_completed_total{device="vda"} 6.038856e+06 448node_disk_writes_completed_total{device="vda"} 6.038856e+06
428# HELP node_disk_writes_merged_total The number of writes merged. See https://www.kernel.org/doc/Documentation/iostats.txt. 449# HELP node_disk_writes_merged_total The number of writes merged.
429# TYPE node_disk_writes_merged_total counter 450# TYPE node_disk_writes_merged_total counter
430node_disk_writes_merged_total{device="dm-0"} 0 451node_disk_writes_merged_total{device="dm-0"} 0
431node_disk_writes_merged_total{device="dm-1"} 0 452node_disk_writes_merged_total{device="dm-1"} 0
@@ -438,6 +459,7 @@ node_disk_writes_merged_total{device="mmcblk0p1"} 0
438node_disk_writes_merged_total{device="mmcblk0p2"} 0 459node_disk_writes_merged_total{device="mmcblk0p2"} 0
439node_disk_writes_merged_total{device="nvme0n1"} 43950 460node_disk_writes_merged_total{device="nvme0n1"} 43950
440node_disk_writes_merged_total{device="sda"} 1.1134226e+07 461node_disk_writes_merged_total{device="sda"} 1.1134226e+07
462node_disk_writes_merged_total{device="sdb"} 2895
441node_disk_writes_merged_total{device="sr0"} 0 463node_disk_writes_merged_total{device="sr0"} 0
442node_disk_writes_merged_total{device="vda"} 2.0711856e+07 464node_disk_writes_merged_total{device="vda"} 2.0711856e+07
443# HELP node_disk_written_bytes_total The total number of bytes written successfully. 465# HELP node_disk_written_bytes_total The total number of bytes written successfully.
@@ -453,6 +475,7 @@ node_disk_written_bytes_total{device="mmcblk0p1"} 0
453node_disk_written_bytes_total{device="mmcblk0p2"} 0 475node_disk_written_bytes_total{device="mmcblk0p2"} 0
454node_disk_written_bytes_total{device="nvme0n1"} 2.0199236096e+10 476node_disk_written_bytes_total{device="nvme0n1"} 2.0199236096e+10
455node_disk_written_bytes_total{device="sda"} 2.58916880384e+11 477node_disk_written_bytes_total{device="sda"} 2.58916880384e+11
478node_disk_written_bytes_total{device="sdb"} 1.01012736e+09
456node_disk_written_bytes_total{device="sr0"} 0 479node_disk_written_bytes_total{device="sr0"} 0
457node_disk_written_bytes_total{device="vda"} 1.0938236928e+11 480node_disk_written_bytes_total{device="vda"} 1.0938236928e+11
458# HELP node_drbd_activitylog_writes_total Number of updates of the activity log area of the meta data. 481# HELP node_drbd_activitylog_writes_total Number of updates of the activity log area of the meta data.
diff --git a/collector/fixtures/proc/diskstats b/collector/fixtures/proc/diskstats
index 2457197..b15bf9a 100644
--- a/collector/fixtures/proc/diskstats
+++ b/collector/fixtures/proc/diskstats
@@ -44,3 +44,6 @@
44 259 0 nvme0n1 47114 4 4643973 21650 1078320 43950 39451633 1011053 0 222766 1032546 44 259 0 nvme0n1 47114 4 4643973 21650 1078320 43950 39451633 1011053 0 222766 1032546
45 259 1 nvme0n1p1 1140 0 9370 16 1 0 1 0 0 16 16 45 259 1 nvme0n1p1 1140 0 9370 16 1 0 1 0 0 16 16
46 259 2 nvme0n1p2 45914 4 4631243 21626 1036885 43950 39451632 919480 0 131580 940970 46 259 2 nvme0n1p2 45914 4 4631243 21626 1036885 43950 39451632 919480 0 131580 940970
47 8 0 sdb 326552 841 9657779 84 41822 2895 1972905 5007 0 60730 67070 68851 0 1925173784 11130
48 8 1 sdb1 231 3 34466 4 24 23 106 0 0 64 64 0 0 0 0
49 8 2 sdb2 326310 838 9622281 67 40726 2872 1972799 4924 0 58250 64567 68851 0 1925173784 11130