On 26/12/11 21:31, Carlos Alberto Lopez Perez wrote: > Hello, > > > I am trying to configure a threshold for sending alerts when the > disk-free is below the 5% but using the complex type of df (the one that > takes into account the reserved blocks) > > > I have: > > > [...] > > <Plugin df> > FSType "ext3" > ReportReserved true > </Plugin> > > [...] > > <Threshold> > <Plugin "df"> > <Type "df_complex"> > DataSource "free" > Percentage true > WarningMin 5.0 > FailureMin 2.0 > </Type> > </Plugin> > </Threshold> > > [...] > > However I get lot of warnings from collectd saying this: > > ut_check_one_threshold: The df_complex type has only one data source, > but you have configured to check this as a percentage. That doesn't make > much sense, because the percentage will always be 100%! > > > I am running collectd 4.9.1 > > > What I am doing wrong? > > > Thanks! > > > > > > > _______________________________________________ > collectd mailing list > collectd@verplant.org > http://mailman.verplant.org/listinfo/collectd
Since I didn't got any reply I dig on the man page and the code and I found that the df plugin is not sending a type df_complex with tree datasources (free,reserved,used) like I would expect. Instead what the df plugin is doing, is send three independent instances df_complex_free, df_complex_reserved and df_complex_used. Therefore it makes impossible to configure a threshold with percentages (AFAIK). See this code from "src/df.c" [...] if (report_reserved) { uint64_t blk_free; uint64_t blk_reserved; uint64_t blk_used; /* Sanity-check for the values in the struct */ if (statbuf.f_bfree < statbuf.f_bavail) statbuf.f_bfree = statbuf.f_bavail; if (statbuf.f_blocks < statbuf.f_bfree) statbuf.f_blocks = statbuf.f_bfree; blk_free = (uint64_t) statbuf.f_bavail; blk_reserved = (uint64_t) (statbuf.f_bfree - statbuf.f_bavail); blk_used = (uint64_t) (statbuf.f_blocks - statbuf.f_bfree); df_submit_one (disk_name, "df_complex", "free", (gauge_t) (blk_free * blocksize)); df_submit_one (disk_name, "df_complex", "reserved", (gauge_t) (blk_reserved * blocksize)); df_submit_one (disk_name, "df_complex", "used", (gauge_t) (blk_used * blocksize)); } else /* compatibility code */ { gauge_t df_free; gauge_t df_used; df_free = statbuf.f_bfree * blocksize; df_used = (statbuf.f_blocks - statbuf.f_bfree) * blocksize; df_submit_two (disk_name, "df", df_used, df_free); } [...] Why you are doing this? Wouldn't it better to make a df_submit_three (disk_name, "df_complex", df_used, df_free, df_reserved) instead of the three df_submit_ones ? like the load plugin does (function load_submit) ???? Is there any reason that I am missing that prevents yo to use a function like df_submit_three for the df_complex type? Is there any way with the current code to configure a threshold that triggers when the df_free of a *df_complex* type is below 5% ? -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Carlos Alberto Lopez Perez http://neutrino.es Igalia - Free Software Engineering http://www.igalia.com ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
signature.asc
Description: OpenPGP digital signature
_______________________________________________ collectd mailing list collectd@verplant.org http://mailman.verplant.org/listinfo/collectd