From: Florian Forster Date: Mon, 22 Jan 2024 16:00:35 +0000 (+0100) Subject: disk plugin: Add `system.disk.io_time`, `system.disk.weighted_io_time`, and `system... X-Git-Tag: 6.0.0-rc0~4^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=df5df58e6e5ee4cc7559f89b5cdd39ea29cae53f;p=thirdparty%2Fcollectd.git disk plugin: Add `system.disk.io_time`, `system.disk.weighted_io_time`, and `system.disk.pending_operations` for Solaris. --- diff --git a/src/disk.c b/src/disk.c index 545e16e70..a435cc01e 100644 --- a/src/disk.c +++ b/src/disk.c @@ -1049,16 +1049,12 @@ static int disk_read(void) { #define KIO_WOCTETS writes #define KIO_ROPS nreads #define KIO_WOPS nwrites -#define KIO_RTIME rtime -#define KIO_WTIME wtime #elif HAVE_KSTAT_IO_T_NWRITTEN && HAVE_KSTAT_IO_T_WRITES && \ HAVE_KSTAT_IO_T_WTIME #define KIO_ROCTETS nread #define KIO_WOCTETS nwritten #define KIO_ROPS reads #define KIO_WOPS writes -#define KIO_RTIME rtime -#define KIO_WTIME wtime #else #error "kstat_io_t does not have the required members" #endif @@ -1092,6 +1088,21 @@ static int disk_read(void) { metric_family_append(&fam_ops, direction_label, write_direction, (value_t){.counter = kio.KIO_WOPS}, &m); + if (strncmp(ksp[i]->ks_class, "disk", strlen("disk")) == 0) { + hrtime_t run_time_ns = kio.rtime; + m.value.derive = (derive_t)(run_time_ns / 1000); + metric_family_metric_append(&fam_disk_io_time, m); + + hrtime_t weighted_io_time_ns = kio.rlentime; + m.value.derive = (derive_t)(weighted_io_time_ns / 1000000); + metric_family_metric_append(&fam_disk_io_weighted_time, m); + + uint_t ops_waiting = kio.wcnt; + uint_t ops_running = kio.rcnt; + m.value.gauge = (gauge_t)(ops_running + ops_waiting); + metric_family_metric_append(&fam_disk_pending_operations, m); + } + metric_reset(&m); } /* #endif defined(HAVE_LIBKSTAT) */