X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fload.c;h=491a985e432c1752a504f9f953808741c93ad76a;hb=86090b3d409634d016da7bbb0cbe43ed5a851d30;hp=7b3462be51d0cd153036dff188372fb8a6bca4ec;hpb=7fa270a1fb517c7fbed55d9f5f70bb28516b6229;p=collectd.git diff --git a/src/load.c b/src/load.c index 7b3462be..491a985e 100644 --- a/src/load.c +++ b/src/load.c @@ -1,11 +1,10 @@ /** * collectd - src/load.c - * Copyright (C) 2005 Florian octo Forster + * Copyright (C) 2005,2006 Florian octo Forster * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 2 of the License, or (at your - * option) any later version. + * Free Software Foundation; only version 2 of the License is applicable. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of @@ -20,13 +19,17 @@ * Florian octo Forster **/ -#include "load.h" +#include "collectd.h" +#include "common.h" +#include "plugin.h" -#if COLLECT_LOAD #define MODULE_NAME "load" -#include "plugin.h" -#include "common.h" +#if defined(HAVE_GETLOADAVG) || defined(KERNEL_LINUX) || defined(HAVE_LIBSTATGRAB) +# define LOAD_HAVE_READ 1 +#else +# define LOAD_HAVE_READ 0 +#endif #ifdef HAVE_SYS_LOADAVG_H #include @@ -40,43 +43,40 @@ #endif #endif /* defined(HAVE_GETLOADAVG) */ -static char *load_file = "load.rrd"; - -static char *ds_def[] = +static data_source_t dsrc[3] = { - "DS:shortterm:GAUGE:25:0:100", - "DS:midterm:GAUGE:25:0:100", - "DS:longterm:GAUGE:25:0:100", - NULL + {"shortterm", DS_TYPE_GAUGE, 0.0, 100.0}, + {"midterm", DS_TYPE_GAUGE, 0.0, 100.0}, + {"longterm", DS_TYPE_GAUGE, 0.0, 100.0} }; -static int ds_num = 3; - -extern time_t curtime; -void load_init (void) +static data_set_t ds = { - return; -} - -void load_write (char *host, char *inst, char *val) -{ - rrd_update_file (host, load_file, val, ds_def, ds_num); -} + "load", 3, dsrc +}; -#define BUFSIZE 256 -void load_submit (double snum, double mnum, double lnum) +#if LOAD_HAVE_READ +static void load_submit (double snum, double mnum, double lnum) { - char buf[BUFSIZE]; - - if (snprintf (buf, BUFSIZE, "%u:%.2f:%.2f:%.2f", (unsigned int) curtime, - snum, mnum, lnum) >= BUFSIZE) - return; - - plugin_submit (MODULE_NAME, "-", buf); + value_t values[3]; + value_list_t vl = VALUE_LIST_INIT; + + values[0].gauge = snum; + values[1].gauge = mnum; + values[2].gauge = lnum; + + vl.values = values; + vl.values_len = 3; + vl.time = time (NULL); + strcpy (vl.host, hostname); + strcpy (vl.plugin, "load"); + strcpy (vl.plugin_instance, ""); + strcpy (vl.type_instance, ""); + + plugin_dispatch_values ("load", &vl); } -#undef BUFSIZE -void load_read (void) +static int load_read (void) { #if defined(HAVE_GETLOADAVG) double load[3]; @@ -104,6 +104,7 @@ void load_read (void) if (fgets (buffer, 16, loadavg) == NULL) { syslog (LOG_WARNING, "load: fgets: %s", strerror (errno)); + fclose (loadavg); return; } @@ -135,12 +136,17 @@ void load_read (void) load_submit (snum, mnum, lnum); #endif /* HAVE_LIBSTATGRAB */ + + return (0); } +#endif /* LOAD_HAVE_READ */ void module_register (void) { - plugin_register (MODULE_NAME, load_init, load_read, load_write); + plugin_register_data_set (&ds); +#if LOAD_HAVE_READ + plugin_register_read ("load", load_read); +#endif } #undef MODULE_NAME -#endif /* COLLECT_LOAD */