PERFORCE change 125310 for review
Constantine A. Murenin
cnst at FreeBSD.org
Sat Aug 18 10:02:17 PDT 2007
http://perforce.freebsd.org/chv.cgi?CH=125310
Change 125310 by cnst at dale on 2007/08/18 17:01:35
update sensorsd documentation and sync sensor types
I have submitted for review and then committed all of these changes
upstream @ OpenBSD.
Whilst here, also change the domain in my copyright,
and remove OpenBSD's $Mdocdate$ from .Dd
Affected files ...
.. //depot/projects/soc2007/cnst-sensors/etc/sensorsd.conf#4 edit
.. //depot/projects/soc2007/cnst-sensors/usr.sbin.sensorsd/Makefile#3 edit
.. //depot/projects/soc2007/cnst-sensors/usr.sbin.sensorsd/sensorsd.8#4 edit
.. //depot/projects/soc2007/cnst-sensors/usr.sbin.sensorsd/sensorsd.c#4 edit
.. //depot/projects/soc2007/cnst-sensors/usr.sbin.sensorsd/sensorsd.conf.5#4 edit
Differences ...
==== //depot/projects/soc2007/cnst-sensors/etc/sensorsd.conf#4 (text+ko) ====
@@ -1,6 +1,6 @@
-# $P4: //depot/projects/soc2007/cnst-sensors/etc/sensorsd.conf#3 $
+# $P4: //depot/projects/soc2007/cnst-sensors/etc/sensorsd.conf#4 $
# $FreeBSD$
-# $OpenBSD: sensorsd.conf,v 1.7 2007/05/30 07:49:37 cnst Exp $
+# $OpenBSD: sensorsd.conf,v 1.8 2007/08/14 19:02:02 cnst Exp $
#
# Sample sensorsd.conf file. See sensorsd.conf(5) for details.
@@ -31,7 +31,7 @@
# Warn if any temperature sensor is over 70 degC.
# This entry will match only those temperature sensors
-# that don't have their own entry and don't keep state.
+# that don't have their own entry.
#temp:high=70C
==== //depot/projects/soc2007/cnst-sensors/usr.sbin.sensorsd/Makefile#3 (text+ko) ====
@@ -1,4 +1,4 @@
-# $P4: //depot/projects/soc2007/cnst-sensors/usr.sbin.sensorsd/Makefile#2 $
+# $P4: //depot/projects/soc2007/cnst-sensors/usr.sbin.sensorsd/Makefile#3 $
# $FreeBSD$
# $OpenBSD: Makefile,v 1.1 2003/09/24 20:32:49 henning Exp $
==== //depot/projects/soc2007/cnst-sensors/usr.sbin.sensorsd/sensorsd.8#4 (text+ko) ====
@@ -1,9 +1,10 @@
-.\" $P4: //depot/projects/soc2007/cnst-sensors/usr.sbin.sensorsd/sensorsd.8#3 $
+.\" $P4: //depot/projects/soc2007/cnst-sensors/usr.sbin.sensorsd/sensorsd.8#4 $
.\" $FreeBSD$
-.\" $OpenBSD: sensorsd.8,v 1.13 2007/07/31 08:11:36 jmc Exp $
+.\" $OpenBSD: sensorsd.8,v 1.16 2007/08/11 20:45:35 cnst Exp $
.\"
.\" Copyright (c) 2003 Henning Brauer <henning at openbsd.org>
.\" Copyright (c) 2005 Matthew Gream <matthew.gream at pobox.com>
+.\" Copyright (c) 2007 Constantine A. Murenin <cnst at FreeBSD.org>
.\"
.\" Permission to use, copy, modify, and distribute this software for any
.\" purpose with or without fee is hereby granted, provided that the above
@@ -17,30 +18,38 @@
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\"
-.Dd $Mdocdate: July 31 2007 $
+.Dd August 11, 2007
.Dt SENSORSD 8
.Os
.Sh NAME
.Nm sensorsd
-.Nd monitor hardware sensors
+.Nd hardware sensors monitor
.Sh SYNOPSIS
.Nm sensorsd
.Op Fl d
.Sh DESCRIPTION
The
.Nm
-utility retrieves sensor monitoring data like fan speeds,
-temperatures, voltages, and
+utility retrieves sensor monitoring data like fan speed,
+temperature, voltage and
.Xr ami 4
logical disk status via
.Xr sysctl 3 .
-If the data is out of given limits, an alert is sent using
+When the state of any monitored sensor changes, an alert is sent using
.Xr syslog 3
and a command, if specified, is executed.
.Pp
By default,
.Nm
-also monitors status changes on all sensors that keep their state.
+monitors status changes on all sensors that keep their state,
+thus sensors that automatically provide status do not require
+any additional configuration.
+In addition, for every sensor,
+no matter whether it automatically provides its state or not,
+custom low and high limits may be set,
+so that a local notion of sensor status can be computed by
+.Nm ,
+indicating whether the sensor is within or is exceeding its limits.
.Pp
Limit and command values for a particular sensor may be specified in the
.Xr sensorsd.conf 5
@@ -72,3 +81,14 @@
.Nm
program first appeared in
.Ox 3.5 .
+.Sh CAVEATS
+Certain sensors may flip status from time to time.
+To guard against false reports,
+.Nm
+implements a state dumping mechanism.
+However, this inevitably introduces
+an additional delay in status reporting and command execution,
+e.g. one may notice that
+.Nm
+makes its initial report about the state of monitored sensors
+not immediately, but either 1 or 2 minutes after it is being started up.
==== //depot/projects/soc2007/cnst-sensors/usr.sbin.sensorsd/sensorsd.c#4 (text+ko) ====
@@ -1,6 +1,6 @@
-/* $P4: //depot/projects/soc2007/cnst-sensors/usr.sbin.sensorsd/sensorsd.c#3 $ */
+/* $P4: //depot/projects/soc2007/cnst-sensors/usr.sbin.sensorsd/sensorsd.c#4 $ */
/* $FreeBSD$ */
-/* $OpenBSD: sensorsd.c,v 1.33 2007/06/01 22:41:12 cnst Exp $ */
+/* $OpenBSD: sensorsd.c,v 1.34 2007/08/14 17:10:02 cnst Exp $ */
/*-
* Copyright (c) 2003 Henning Brauer <henning at openbsd.org>
@@ -490,11 +490,17 @@
case SENSOR_AMPS:
snprintf(fbuf, RFBUFSIZ, "%.2f A", value / 1000000.0);
break;
+ case SENSOR_WATTHOUR:
+ snprintf(fbuf, RFBUFSIZ, "%.2f Wh", value / 1000000.0);
+ break;
+ case SENSOR_AMPHOUR:
+ snprintf(fbuf, RFBUFSIZ, "%.2f Ah", value / 1000000.0);
+ break;
case SENSOR_INDICATOR:
snprintf(fbuf, RFBUFSIZ, "%s", value? "On" : "Off");
break;
case SENSOR_INTEGER:
- snprintf(fbuf, RFBUFSIZ, "%lld raw", value);
+ snprintf(fbuf, RFBUFSIZ, "%lld", value);
break;
case SENSOR_PERCENT:
snprintf(fbuf, RFBUFSIZ, "%.2f%%", value / 1000.0);
@@ -503,11 +509,14 @@
snprintf(fbuf, RFBUFSIZ, "%.2f lx", value / 1000000.0);
break;
case SENSOR_DRIVE:
- if (0 < value && value < sizeof(drvstat)/sizeof(drvstat[0])) {
+ if (0 < value && value < sizeof(drvstat)/sizeof(drvstat[0]))
snprintf(fbuf, RFBUFSIZ, "%s", drvstat[value]);
- break;
- }
- /* FALLTHROUGH */
+ else
+ snprintf(fbuf, RFBUFSIZ, "%lld ???", value);
+ break;
+ case SENSOR_TIMEDELTA:
+ snprintf(fbuf, RFBUFSIZ, "%.6f secs", value / 1000000000.0);
+ break;
default:
snprintf(fbuf, RFBUFSIZ, "%lld ???", value);
}
@@ -613,9 +622,15 @@
case SENSOR_DRIVE:
rval = val;
break;
+ case SENSOR_AMPS:
+ case SENSOR_WATTHOUR:
+ case SENSOR_AMPHOUR:
case SENSOR_LUX:
rval = val * 1000 * 1000;
break;
+ case SENSOR_TIMEDELTA:
+ rval = val * 1000 * 1000 * 1000;
+ break;
default:
errx(1, "unsupported sensor type");
/* not reached */
==== //depot/projects/soc2007/cnst-sensors/usr.sbin.sensorsd/sensorsd.conf.5#4 (text+ko) ====
@@ -1,9 +1,10 @@
-.\" $P4: //depot/projects/soc2007/cnst-sensors/usr.sbin.sensorsd/sensorsd.conf.5#3 $
+.\" $P4: //depot/projects/soc2007/cnst-sensors/usr.sbin.sensorsd/sensorsd.conf.5#4 $
.\" $FreeBSD$
-.\" $OpenBSD: sensorsd.conf.5,v 1.15 2007/06/05 04:10:56 jmc Exp $
+.\" $OpenBSD: sensorsd.conf.5,v 1.18 2007/08/14 17:10:02 cnst Exp $
.\"
.\" Copyright (c) 2003 Henning Brauer <henning at openbsd.org>
.\" Copyright (c) 2005 Matthew Gream <matthew.gream at pobox.com>
+.\" Copyright (c) 2007 Constantine A. Murenin <cnst at FreeBSD.org>
.\"
.\" Permission to use, copy, modify, and distribute this software for any
.\" purpose with or without fee is hereby granted, provided that the above
@@ -17,21 +18,19 @@
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\"
-.Dd $Mdocdate$
+.Dd August 14, 2007
.Dt SENSORSD.CONF 5
.Os
.Sh NAME
.Nm sensorsd.conf
.Nd configuration file for sensorsd
-.Sh SYNOPSIS
-.Nm sensorsd.conf
.Sh DESCRIPTION
The
.Nm
file is read by
.Xr sensorsd 8
to configure hardware sensor monitoring.
-Each valid sensor registered in the system
+Each sensor registered in the system
is matched by at most one entry in
.Nm ,
which may specify high and low limits,
@@ -59,7 +58,7 @@
.Pp
.Bl -tag -width "commandXX" -offset indent -compact
.It Li command
-Specify a command to be executed if limits are crossed.
+Specify a command to be executed on state change.
.It Li high
Specify an upper limit.
.It Li low
@@ -71,16 +70,26 @@
The values for temperature sensors can be given in degrees Celsius or
Fahrenheit, for voltage sensors in volts, and fan speed sensors take a
unit-less number representing RPM.
+Values for all other types of sensors can be specified
+in the same units as they appear under the
+.Xr sysctl 8
+.Va hw.sensors
+tree.
.Pp
-Sensors that provide status (such as from
+Sensors that provide status (such as those from
.Xr bio 4 ,
.Xr esm 4 ,
or
.Xr ipmi 4 )
-do not require boundary values specified (that otherwise will be
-ignored) and simply trigger on status transitions.
+do not require boundary values specified
+and simply trigger on status transitions.
+If boundaries are specified nonetheless,
+then they are used in addition to automatic status monitoring,
+unless the
+.Dq istatus
+attribute is specified to ignore status values that are provided by the drivers.
.Pp
-The command is executed on transitions out of, and back into, given limits.
+The command is executed when there is any change in sensor state.
Tokens in the command are substituted as follows:
.Pp
.Bl -tag -width Ds -offset indent -compact
@@ -114,18 +123,23 @@
.El
.Sh EXAMPLES
In the following configuration file,
-if hw.sensors.ipmi0.temp0 goes above 80C, the command
+if hw.sensors.ipmi0.temp0 transitions 80C or
+if its status as provided by
+.Xr ipmi 4
+changes, the command
.Pa /etc/sensorsd/log_warning
will be executed,
with the sensor type, number and current value passed to it.
-Alerts will be sent if hw.sensors.ipmi0.temp1 goes above 170F;
-if hw.sensors.lm0.volt3 goes below 4.8V or above 5.2V;
+Alerts will be sent
+if hw.sensors.lm0.volt3 transitions to being within or outside
+a range of 4.8V and 5.2V;
if the speed of the fan attached to hw.sensors.lm0.fan1
-goes below 1000RPM or above 8000RPM;
+transitions to being below or above 1000RPM;
if any RAID volume drive
-goes into a state other than
+changes its status from, for example,
.Dq OK ,
-such as drive failure, rebuild, or a complete failure, the command
+such as in the case of drive failure, rebuild, or a complete failure,
+the command
.Pa /etc/sensorsd/drive
will be executed, with the sensor number passed to it; however,
no alerts will be generated for status changes on timedelta sensors.
@@ -135,9 +149,8 @@
.Bd -literal -offset indent
# Comments are allowed
hw.sensors.ipmi0.temp0:high=80C:command=/etc/sensorsd/log_warning %t %n %2
-hw.sensors.ipmi0.temp1:high=170F
hw.sensors.lm0.volt3:low=4.8V:high=5.2V
-hw.sensors.lm0.fan1:low=1000:high=8000
+hw.sensors.lm0.fan1:low=1000
drive:command=/etc/sensorsd/drive %n
timedelta:istatus #ignore status changes for timedelta
.Ed
@@ -153,3 +166,22 @@
.Nm
file format first appeared in
.Ox 3.5 .
+The format was altered in
+.Ox 4.1
+to accommodate hierarchical device-based sensor addressing.
+The
+.Dq istatus
+attribute was introduced in
+.Ox 4.2 .
+.Sh CAVEATS
+Alert functionality is triggered every time there is a change in sensor state;
+for example, when
+.Xr sensorsd 8
+is started,
+the status of each monitored sensor changes
+from undefined to whatever it is.
+One must keep this in mind when using commands
+that may unconditionally perform adverse actions (e.g.\&
+.Xr shutdown 8 ) ,
+as they will be executed even when all sensors perform to specification.
+If this is undesirable, then a wrapper shell script should be used instead.
More information about the p4-projects
mailing list