Add sensors checks, discovery and conf

This commit is contained in:
Daniel Berteaud 2013-04-15 18:43:43 +02:00
parent 79c3a90cf0
commit 105b0d2d82
5 changed files with 79 additions and 0 deletions

24
conf/sensors.conf Normal file
View File

@ -0,0 +1,24 @@
# You can configure here the sensors
# Format is <sensors_name>=<command>!<high threshold>!<low threshold>
# An alert is triggerd if the temperature is above the high threshold
# The alert is cleared if the temperature is less than low threshold
# Example:
#
#
## Examples with ipmitool
# cpu0 = /usr/bin/ipmitool sdr get 'P1 Therm Margin' | grep 'Sensor Reading' | cut -d':' -f 2 | awk '{print$1}'!-30!-39
# mb = /usr/bin/ipmitool sdr get 'Baseboard Temp' | grep 'Sensor Reading' | cut -d':' -f 2 | awk '{print$1}'!50!45
#
## Examples with smartctl
# sda = /usr/sbin/smartctl -a /dev/sda | grep Temperature_Celsius | awk '{print $10}'!45!40
# sdb = /usr/sbin/smartctl -a /dev/sdb | grep Temperature_Celsius | awk '{print $10}'!45!50
#
## Examples with lm_sensors
# cpu0=/usr/bin/sensors | grep temp1 | cut -d':' -f 2 | awk '{print $1'} | sed -e "s/+//g" -e "s/.C//g"!65!55
#
## Examples with acpi
# cpu0=cat /proc/acpi/thermal_zone/THRM/temperature | awk '{print $2}'!65!55
#
#
# !!! WARNING !!!
# All the commands will be executed with root privileges

View File

@ -39,6 +39,8 @@ LVM, RAID status, S.M.A.R.T. drives, BackupPC etc...
# Install Zabbix conf
%{__install} -d $RPM_BUILD_ROOT%{_sysconfdir}/zabbix/zabbix_agentd.conf.d/
%{__install} -m 0755 zabbix_conf/* $RPM_BUILD_ROOT%{_sysconfdir}/zabbix/zabbix_agentd.conf.d/
# Install sensors conf
%{__install} -m 0755 conf/sensors.conf $RPM_BUILD_ROOT%{_sysconfdir}/zabbix/
# Install sudo conf
%{__install} -d 750 $RPM_BUILD_ROOT%{_sysconfdir}/sudoers.d
%{__install} -m 600 conf/sudo.conf $RPM_BUILD_ROOT%{_sysconfdir}/sudoers.d/zabbix_agent
@ -57,6 +59,7 @@ LVM, RAID status, S.M.A.R.T. drives, BackupPC etc...
%doc README CHANGELOG.git
%dir %attr(0750,zabbix,zabbix) %{_localstatedir}/lib/zabbix/bin
%{_localstatedir}/lib/zabbix/bin/*
%config(noreplace) %attr(0644,root,root) %{_sysconfdir}/zabbix/sensors.conf
%{_sysconfdir}/zabbix/zabbix_agentd.conf.d/*
%{_sysconfdir}/sudoers.d/*

6
zabbix_conf/sensors.conf Normal file
View File

@ -0,0 +1,6 @@
# Sensors discovery
# See /etc/zabbix/sensors.conf
UserParameter=hardware.sensor.discovery,/var/lib/zabbix/bin/disco_sensors
# Sensors
UserParameter=hardware.sensor[*],/usr/bin/sudo /var/lib/zabbix/bin/check_sensors $1

View File

@ -0,0 +1,25 @@
#!/usr/bin/perl -w
my $what = $ARGV[0];
unless (defined $what){
print <<"EOF";
Usage: $0 sensor_name
EOF
exit(1);
}
open SENSORS, ('</etc/zabbix/sensors.conf') ||
die "Couldn't open /etc/zabbix/sensors.conf: $!\n";
my $ret = 'ZBX_NOTSUPPORTED';
foreach (<SENSORS>){
next unless (/^$what(\s+)?=(\s+)?(.*)!(\-?\d+)!(\-?\d+)$/);
my $cmd = $3;
$ret = `$cmd`;
}
print $ret;
exit(0);

View File

@ -0,0 +1,21 @@
#!/usr/bin/perl -w
use JSON;
my $json;
open SENSORS, ('</etc/zabbix/sensors.conf') ||
die "Couldn't open /etc/zabbix/sensors.conf: $!\n";
foreach (<SENSORS>){
next unless (/^(\w+)(\s+)?=(\s+)?(.*)!(\-?\d+)!(\-?\d+)$/);
my ($sensor,$threshigh,$threslow) = ($1,$5,$6);
push @{$json->{data}}, {
"{#SENSORNAME}" => $sensor,
"{#SENSORTHRESHIGH}" => $threshigh,
"{#SENSORTHRESLOW}" => $threslow
};
}
close SENSORS;
print to_json($json, { pretty => 1 });
exit(0);