[collectd] [PATCH] Collectd sensors plugin ignores /etc/sensors.d support from lm_sensors-3.1+
Pavel V.
pavel2000 at ngs.ru
Wed Dec 14 15:43:41 CET 2011
Hi, collectd community.
I finally found why my collectd ignores my sensors config.
My problem is like to described at http://collectd.org/bugs/view.php?id=21 first comment.
The collectd does not need to use own hardcoded default config to initialise libsensors when
SENSORS_API_VERSION >= 0x400. The sensors_init() with hardcoded (not NULL) default config breaks
support for read extra configuration files from /etc/sensors.d, introduced in lm_sensors-3.1.
We can use sensors_init(NULL) since API 0x400, as the lm_sensors-3.0.0 manpage describes the
following usage:
int sensors_init(FILE *input);
sensors_init() loads the configuration file.
If FILE is NULL, the default configuration files are used (see the
FILES section below). Most applications will want to do that.
FILES section:
/etc/sensors3.conf
/etc/sensors.conf
The system-wide libsensors(3) configuration file. /etc/sen-
sors3.conf is tried first, and if it doesn't exist, /etc/sen-
sors.conf is used instead.
So, all default config files will be processed when doing sensors_init(NULL).
After the lm_sensors-3.1 release, the FILES section additionally has :
/etc/sensors.d
A directory where you can put additional libsensors configura-
tion files. Files found in this directory will be processed in
alphabetical order after the default configuration file.
So, /etc/sensors.d directory will be processed too.
------
The proposed patch fixes the initialization for lm_sensors-3.х and adds a directive
"SensorsConfigFile". For older lm_sensors the old behaviour remains.
Also, some improvements was done at error processing:
1)
If stat() fails, then sensors_config_mtime will be set to zero.
When stat() succeedes later, plugin will not call sensors_free_features() before new sensors_init().
The 'features' chain will not be cleaned before adding new features to it,
so each of sensors will be queried many times. Libsensors's sensors_cleanup() will not be called also.
Fixed all these.
2) If stat() fails, we need no try to call fopen() at this cycle.
So, the the log is clean now:
Used collectd config has :
<Plugin sensors>
SensorsConfigFile "/etc/null.conf"
</Plugin>
No /etc/null.conf exists at the start moment.
srv01:~/collectd/src/.libs# collectd -fC /root/tmp/04/collectd.conf
[2011-12-14 21:02:02] sensors plugin: stat (/etc/null.conf) failed: No such file or directory
[2011-12-14 21:02:02] read-function of plugin `sensors' failed. Will suspend it for 20 seconds.
[2011-12-14 21:02:02] Initialization complete, entering read-loop.
[2011-12-14 21:02:22] sensors plugin: stat (/etc/null.conf) failed: No such file or directory
[2011-12-14 21:02:22] read-function of plugin `sensors' failed. Will suspend it for 40 seconds.
...doing touch /etc/null.conf
[2011-12-14 21:03:02] sensors plugin: Reloading config from /etc/null.conf
...doing touch /etc/null.conf again
[2011-12-14 21:04:02] sensors plugin: Reloading config from /etc/null.conf
...doing rm /etc/null.conf
[2011-12-14 21:04:42] read-function of plugin `sensors' failed. Will suspend it for 20 seconds.
[2011-12-14 21:05:02] sensors plugin: stat (/etc/null.conf) failed: No such file or directory
[2011-12-14 21:05:02] read-function of plugin `sensors' failed. Will suspend it for 40 seconds.
[2011-12-14 21:05:42] sensors plugin: stat (/etc/null.conf) failed: No such file or directory
[2011-12-14 21:05:42] read-function of plugin `sensors' failed. Will suspend it for 80 seconds.
^C[2011-12-14 21:06:39] Exiting normally.
[2011-12-14 21:06:39] collectd: Stopping 5 read threads.
The proposed patch is attached.
--
Regards,,
Pavel mailto:pavel2000 at ngs.ru
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0005-Collectd-sensors-plugin-ignores-etc-sensors.d-Sensor.patch
Type: application/octet-stream
Size: 4520 bytes
Desc: not available
URL: <http://mailman.verplant.org/pipermail/collectd/attachments/20111214/ba5dd26d/attachment.obj>
More information about the collectd
mailing list