Skip to content

Commit aeedf51

Browse files
murrantlaf
authored andcommitted
fix: Include state descriptions in eventlog (librenms#6968)
* fix: include state descriptions in eventlog Pull in array_column compat library for php < 5.5 * Add state descriptions to eventlog messages
1 parent a3f7daf commit aeedf51

File tree

39 files changed

+1712
-1197
lines changed

39 files changed

+1712
-1197
lines changed

composer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@
2929
"dapphp/radius": "^2.0",
3030
"php-amqplib/php-amqplib": "^2.0",
3131
"symfony/yaml": "^2.8",
32-
"rmccue/requests": "^1.7"
32+
"rmccue/requests": "^1.7",
33+
"ramsey/array_column": "^1.1"
3334
},
3435
"require-dev": {
3536
"squizlabs/php_codesniffer": "2.6.*",

includes/polling/functions.inc.php

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -144,9 +144,11 @@ function record_sensor_data($device, $all_sensors)
144144
);
145145

146146
foreach ($all_sensors as $sensor) {
147-
$class = $sensor['sensor_class'];
148-
$unit = $supported_sensors[$class];
149-
$sensor_value = $sensor['new_value'];
147+
$class = ucfirst($sensor['sensor_class']);
148+
$unit = $supported_sensors[$class];
149+
$sensor_value = $sensor['new_value'];
150+
$prev_sensor_value = $sensor['sensor_current'];
151+
150152
if ($sensor_value == -32768) {
151153
echo 'Invalid (-32768) ';
152154
$sensor_value = 0;
@@ -180,17 +182,26 @@ function record_sensor_data($device, $all_sensors)
180182
data_update($device, 'sensor', $tags, $fields);
181183

182184
// FIXME also warn when crossing WARN level!
183-
if ($sensor['sensor_limit_low'] != '' && $sensor['sensor_current'] > $sensor['sensor_limit_low'] && $sensor_value < $sensor['sensor_limit_low'] && $sensor['sensor_alert'] == 1) {
185+
if ($sensor['sensor_limit_low'] != '' && $prev_sensor_value > $sensor['sensor_limit_low'] && $sensor_value < $sensor['sensor_limit_low'] && $sensor['sensor_alert'] == 1) {
184186
echo 'Alerting for '.$device['hostname'].' '.$sensor['sensor_descr']."\n";
185-
log_event(ucfirst($class) . ' ' . $sensor['sensor_descr'] . ' under threshold: ' . $sensor_value . " $unit (< " . $sensor['sensor_limit_low'] . " $unit)", $device, $class, 4, $sensor['sensor_id']);
186-
} elseif ($sensor['sensor_limit'] != '' && $sensor['sensor_current'] < $sensor['sensor_limit'] && $sensor_value > $sensor['sensor_limit'] && $sensor['sensor_alert'] == 1) {
187+
log_event("$class {$sensor['sensor_descr']} under threshold: $sensor_value $unit (< {$sensor['sensor_limit_low']} $unit)", $device, $class, 4, $sensor['sensor_id']);
188+
} elseif ($sensor['sensor_limit'] != '' && $prev_sensor_value < $sensor['sensor_limit'] && $sensor_value > $sensor['sensor_limit'] && $sensor['sensor_alert'] == 1) {
187189
echo 'Alerting for '.$device['hostname'].' '.$sensor['sensor_descr']."\n";
188-
log_event(ucfirst($class) . ' ' . $sensor['sensor_descr'] . ' above threshold: ' . $sensor_value . " $unit (> " . $sensor['sensor_limit'] . " $unit)", $device, $class, 4, $sensor['sensor_id']);
190+
log_event("$class {$sensor['sensor_descr']} above threshold: $sensor_value $unit (> {$sensor['sensor_limit']} $unit)", $device, $class, 4, $sensor['sensor_id']);
189191
}
190-
if ($sensor['sensor_class'] == 'state' && $sensor['sensor_current'] != $sensor_value) {
191-
log_event($class . ' sensor has changed from ' . $sensor['sensor_current'] . ' to ' . $sensor_value, $device, $class, 3, $sensor['sensor_id']);
192+
if ($sensor['sensor_class'] == 'state' && $prev_sensor_value != $sensor_value) {
193+
$trans = array_column(
194+
dbFetchRows(
195+
"SELECT `state_translations`.`state_value`, `state_translations`.`state_descr` FROM `sensors_to_state_indexes` LEFT JOIN `state_translations` USING (`state_index_id`) WHERE `sensors_to_state_indexes`.`sensor_id`=? AND `state_translations`.`state_value` IN ($sensor_value,$prev_sensor_value)",
196+
array($sensor['sensor_id'])
197+
),
198+
'state_descr',
199+
'state_value'
200+
);
201+
202+
log_event("$class sensor has changed from {$trans[$prev_sensor_value]} ($prev_sensor_value) to {$trans[$sensor_value]} ($sensor_value)", $device, $class, 3, $sensor['sensor_id']);
192203
}
193-
dbUpdate(array('sensor_current' => $sensor_value, 'sensor_prev' => $sensor['sensor_current'], 'lastupdate' => array('NOW()')), 'sensors', "`sensor_class` = ? AND `sensor_id` = ?", array($class,$sensor['sensor_id']));
204+
dbUpdate(array('sensor_current' => $sensor_value, 'sensor_prev' => $prev_sensor_value, 'lastupdate' => array('NOW()')), 'sensors', "`sensor_class` = ? AND `sensor_id` = ?", array($class,$sensor['sensor_id']));
194205
}
195206
}
196207

vendor/amenadiel/jpgraph/.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
*bak*
2+
3+
*sublime*
4+
5+
6+
vendor
7+
fabfile*

vendor/composer/autoload_classmap.php

Lines changed: 0 additions & 593 deletions
Large diffs are not rendered by default.

vendor/composer/autoload_files.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@
77

88
return array(
99
'2cffec82183ee1cea088009cef9a6fc3' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php',
10+
'8cd2fca4db21bffce1ad0612f7caeec4' => $vendorDir . '/ramsey/array_column/src/array_column.php',
1011
);

0 commit comments

Comments
 (0)