X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fload.c;h=72c7756a34b27d325b82fcc084e3afdb77f02dc8;hb=b4d9bd23f3e04f9b42204d9954842524e2a7eb61;hp=4b36221375245f6012cba5618df101743ca67f9c;hpb=2d897a731bd23f7a33b89e7b7e3004b6b26b5a94;p=collectd.git diff --git a/src/load.c b/src/load.c index 4b362213..72c7756a 100644 --- a/src/load.c +++ b/src/load.c @@ -1,6 +1,6 @@ /** * collectd - src/load.c - * Copyright (C) 2005,2006 Florian octo Forster + * Copyright (C) 2005-2007 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 @@ -23,18 +23,14 @@ #include "common.h" #include "plugin.h" -#define MODULE_NAME "load" - -#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 #endif +#if HAVE_STATGRAB_H +# include +#endif + #ifdef HAVE_GETLOADAVG #if !defined(LOADAVG_1MIN) || !defined(LOADAVG_5MIN) || !defined(LOADAVG_15MIN) #define LOADAVG_1MIN 0 @@ -43,20 +39,7 @@ #endif #endif /* defined(HAVE_GETLOADAVG) */ -static data_source_t dsrc[3] = -{ - {"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 data_set_t ds = -{ - "load", 3, dsrc -}; - -#if LOAD_HAVE_READ -static void load_submit (double snum, double mnum, double lnum) +static void load_submit (gauge_t snum, gauge_t mnum, gauge_t lnum) { value_t values[3]; value_list_t vl = VALUE_LIST_INIT; @@ -66,14 +49,13 @@ static void load_submit (double snum, double mnum, double lnum) values[2].gauge = lnum; vl.values = values; - vl.values_len = 3; + vl.values_len = STATIC_ARRAY_SIZE (values); vl.time = time (NULL); - strcpy (vl.host, hostname_g); - strcpy (vl.plugin, "load"); - strcpy (vl.plugin_instance, ""); - strcpy (vl.type_instance, ""); + sstrncpy (vl.host, hostname_g, sizeof (vl.host)); + sstrncpy (vl.plugin, "load", sizeof (vl.plugin)); + sstrncpy (vl.type, "load", sizeof (vl.type)); - plugin_dispatch_values ("load", &vl); + plugin_dispatch_values (&vl); } static int load_read (void) @@ -84,11 +66,15 @@ static int load_read (void) if (getloadavg (load, 3) == 3) load_submit (load[LOADAVG_1MIN], load[LOADAVG_5MIN], load[LOADAVG_15MIN]); else - syslog (LOG_WARNING, "load: getloadavg failed: %s", strerror (errno)); + { + char errbuf[1024]; + WARNING ("load: getloadavg failed: %s", + sstrerror (errno, errbuf, sizeof (errbuf))); + } /* #endif HAVE_GETLOADAVG */ #elif defined(KERNEL_LINUX) - double snum, mnum, lnum; + gauge_t snum, mnum, lnum; FILE *loadavg; char buffer[16]; @@ -97,24 +83,32 @@ static int load_read (void) if ((loadavg = fopen ("/proc/loadavg", "r")) == NULL) { - syslog (LOG_WARNING, "load: fopen: %s", strerror (errno)); - return; + char errbuf[1024]; + WARNING ("load: fopen: %s", + sstrerror (errno, errbuf, sizeof (errbuf))); + return (-1); } if (fgets (buffer, 16, loadavg) == NULL) { - syslog (LOG_WARNING, "load: fgets: %s", strerror (errno)); + char errbuf[1024]; + WARNING ("load: fgets: %s", + sstrerror (errno, errbuf, sizeof (errbuf))); fclose (loadavg); - return; + return (-1); } if (fclose (loadavg)) - syslog (LOG_WARNING, "load: fclose: %s", strerror (errno)); + { + char errbuf[1024]; + WARNING ("load: fclose: %s", + sstrerror (errno, errbuf, sizeof (errbuf))); + } numfields = strsplit (buffer, fields, 8); if (numfields < 3) - return; + return (-1); snum = atof (fields[0]); mnum = atof (fields[1]); @@ -123,8 +117,8 @@ static int load_read (void) load_submit (snum, mnum, lnum); /* #endif KERNEL_LINUX */ -#elif defined(HAVE_LIBSTATGRAB) - double snum, mnum, lnum; +#elif HAVE_LIBSTATGRAB + gauge_t snum, mnum, lnum; sg_load_stats *ls; if ((ls = sg_get_load_stats ()) == NULL) @@ -135,18 +129,16 @@ static int load_read (void) lnum = ls->min15; load_submit (snum, mnum, lnum); -#endif /* HAVE_LIBSTATGRAB */ +/* #endif HAVE_LIBSTATGRAB */ + +#else +# error "No applicable input method." +#endif return (0); } -#endif /* LOAD_HAVE_READ */ void module_register (void) { - plugin_register_data_set (&ds); -#if LOAD_HAVE_READ plugin_register_read ("load", load_read); -#endif -} - -#undef MODULE_NAME +} /* void module_register */