[collectd] libstatgrab added to cpu and disk plugins
Oleg King
king2 at kaluga.ru
Thu May 1 01:16:45 CEST 2008
Hello!
I have revised cpu plugin patch a little, and written patch to
disks plugin that uses libstatgrab to get disk usage statistic.
Please, add it to Git repository if you will decide that it useful. :)
There is a patch:
diff -pur collectd/configure.in collectd.my/configure.in
--- collectd/configure.in 2008-05-01 03:08:37.000000000 +0400
+++ collectd.my/configure.in 2008-05-01 02:40:54.000000000 +0400
@@ -2331,6 +2331,8 @@ fi
# libstatgrab
if test "x$with_libstatgrab" = "xyes"
then
+ plugin_cpu="yes"
+ 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 03:08:37.000000000 +0400
+++ collectd.my/src/Makefile.am 2008-05-01 02:41:39.000000000 +0400
@@ -152,6 +152,10 @@ endif
if BUILD_WITH_LIBDEVINFO
cpu_la_LDFLAGS += -ldevinfo
endif
+if BUILD_WITH_LIBSTATGRAB
+cpu_la_CFLAGS = $(BUILD_WITH_LIBSTATGRAB_CFLAGS)
+cpu_la_LIBADD = $(BUILD_WITH_LIBSTATGRAB_LDFLAGS)
+endif
collectd_LDADD += "-dlopen" cpu.la
collectd_DEPENDENCIES += cpu.la
endif
@@ -193,6 +197,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/cpu.c collectd.my/src/cpu.c
--- collectd/src/cpu.c 2008-05-01 03:08:37.000000000 +0400
+++ collectd.my/src/cpu.c 2008-05-01 02:50:32.000000000 +0400
@@ -49,6 +49,10 @@
# include <sys/sysinfo.h>
#endif /* HAVE_LIBKSTAT */
+#if HAVE_STATGRAB_H
+# include <statgrab.h>
+#endif
+
#ifdef HAVE_SYSCTLBYNAME
# ifdef HAVE_SYS_SYSCTL_H
# include <sys/sysctl.h>
@@ -96,6 +100,9 @@ static kstat_t *ksp[MAX_NUMCPU];
static int numcpu;
/* #endif HAVE_LIBKSTAT */
+#elif defined(HAVE_LIBSTATGRAB)
+/* #endif HAVE_LIBSTATGRAB */
+
#elif defined(HAVE_SYSCTLBYNAME)
static int numcpu;
#endif /* HAVE_SYSCTLBYNAME */
@@ -137,6 +144,9 @@ static int init (void)
ksp[numcpu++] = ksp_chain;
/* #endif HAVE_LIBKSTAT */
+#elif defined(HAVE_LIBSTATGRAB)
+/* #endif HAVE_LIBSTATGRAB */
+
#elif defined (HAVE_SYSCTLBYNAME)
size_t numcpu_size;
@@ -350,6 +360,17 @@ static int cpu_read (void)
}
/* #endif defined(HAVE_LIBKSTAT) */
+#elif defined(HAVE_LIBSTATGRAB)
+ sg_cpu_stats *cs;
+ if ((cs = sg_get_cpu_stats ()) == NULL)
+ return (0);
+
+ submit (0, "idle", (counter_t) cs->idle);
+ submit (0, "nice", (counter_t) cs->nice);
+ submit (0, "user", (counter_t) cs->user);
+ submit (0, "system", (counter_t) (cs->kernel+cs->swap+cs->iowait));
+/* #endif HAVE_LIBSTATGRAB */
+
#elif defined(HAVE_SYSCTLBYNAME)
long cpuinfo[CPUSTATES];
size_t cpuinfo_size;
diff -pur collectd/src/disk.c collectd.my/src/disk.c
--- collectd/src/disk.c 2008-05-01 03:08:37.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