[collectd] disk plugin patch
Oleg King
king2 at kaluga.ru
Thu May 1 18:22:34 CEST 2008
Hello!
Sorry for sending merged patches.
Disk plugin patch makes possible to ciollect disk usage information
using libstatgrab library:
diff -pur collectd/configure.in collectd.my/configure.in
--- collectd/configure.in 2008-05-01 20:08:59.000000000 +0400
+++ collectd.my/configure.in 2008-05-01 20:10:30.000000000 +0400
@@ -2331,6 +2331,7 @@ fi
# libstatgrab
if test "x$with_libstatgrab" = "xyes"
then
+ plugin_disk="yes"
plugin_interface="yes"
plugin_load="yes"
plugin_memory="yes"
diff -pur collectd/src/Makefile.am collectd.my/src/Makefile.am
--- collectd/src/Makefile.am 2008-05-01 20:09:00.000000000 +0400
+++ collectd.my/src/Makefile.am 2008-05-01 20:10:11.000000000 +0400
@@ -193,6 +193,10 @@ endif
if BUILD_WITH_LIBIOKIT
disk_la_LDFLAGS += -lIOKit
endif
+if BUILD_WITH_LIBSTATGRAB
+disk_la_CFLAGS = $(BUILD_WITH_LIBSTATGRAB_CFLAGS)
+disk_la_LIBADD = $(BUILD_WITH_LIBSTATGRAB_LDFLAGS)
+endif
collectd_LDADD += "-dlopen" disk.la
collectd_DEPENDENCIES += disk.la
endif
diff -pur collectd/src/disk.c collectd.my/src/disk.c
--- collectd/src/disk.c 2008-05-01 20:09:00.000000000 +0400
+++ collectd.my/src/disk.c 2008-05-01 03:04:56.000000000 +0400
@@ -59,6 +59,10 @@
# define UINT_MAX 4294967295U
#endif
+#if HAVE_STATGRAB_H
+# include <statgrab.h>
+#endif
+
#if HAVE_IOKIT_IOKITLIB_H
static mach_port_t io_master_port = MACH_PORT_NULL;
/* #endif HAVE_IOKIT_IOKITLIB_H */
@@ -98,6 +102,9 @@ static kstat_t *ksp[MAX_NUMDISK];
static int numdisk = 0;
/* #endif HAVE_LIBKSTAT */
+#elif defined(HAVE_LIBSTATGRAB)
+/* #endif HAVE_LIBKSTATGRAB */
+
#else
# error "No applicable input method."
#endif
@@ -663,6 +670,22 @@ static int disk_read (void)
}
#endif /* defined(HAVE_LIBKSTAT) */
+#if defined(HAVE_LIBSTATGRAB)
+ sg_disk_io_stats *ds;
+ int disks, counter;
+ char name[16];
+
+ if ((ds = sg_get_disk_io_stats(&disks)) == NULL)
+ return (0);
+
+ for (counter=0; counter < disks; counter++) {
+ strncpy(name, ds->disk_name, sizeof(name));
+ name[sizeof(name)-1] = '\0'; /* strncpy doesn't terminate longer strings */
+ disk_submit (name, "disk_octets", ds->read_bytes, ds->write_bytes);
+ ds++;
+ }
+#endif /* defined(HAVE_LIBSTATGRAB) */
+
return (0);
} /* int disk_read */
--
WBR,
Oleg mailto:king2 at kaluga.ru
More information about the collectd
mailing list