mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
* Datastores to object oriented code, using the Laravel IoC container Change instantiation better DI move OpenTSDB Small re-orgs remove unused stuff Fix graphs and other scripts Use DI for all except rrd fix up connection error handling Add tests, fix up a "few" things Add Config::forget() Style fixes Don't reference legacy code remove accidental code paste Add datastores phpunit groups some tests * rebase fixes * some test fixes * shorter tests * shorter tests * Don't except when rrdtool can't be started. * restore tests * fix rrd tests * fix iterable change upstream * fix isValidDataset * fix invalid data bug * fix mysql incorrect ds * fix issue with data that is too long * use regular data_update() * Use log facade * OpenTSDB mis-ordered arguments fix * Making a singleton with different options makes different singletons. Just use the global config settings to disable datastores. * only filter tags for datastores that won't it don't modify the tags permanently * Update copyrights to include original authors. * Stats for all datastores * Fix mysql sends different rrd / other ds names * fix snmp last stats not initialized remove unused function * remove unused function and move single use function closer to its use * InfluxDB does not need to update null or U values. Skip write if all fields are empty * Fix smart value checks * fix style issues * Make sure port data is stored the same way as before for Graphite and OpenTSDB Add ifIndex tag to all to be compatible * Missed rrdtool_tune() call * Test update WIP * OpenTSDB now includes tags * fix style
108 lines
3.9 KiB
PHP
108 lines
3.9 KiB
PHP
<?php
|
|
|
|
use LibreNMS\RRD\RrdDefinition;
|
|
|
|
echo('SMART');
|
|
|
|
$name = 'smart';
|
|
$app_id = $app['app_id'];
|
|
|
|
$options = '-Oqv';
|
|
$oid = '.1.3.6.1.4.1.8072.1.3.2.3.1.2.5.115.109.97.114.116';
|
|
$output = snmp_walk($device, $oid, $options);
|
|
|
|
$lines = explode("\n", $output);
|
|
|
|
$rrd_name = array('app', $name, $app_id);
|
|
$rrd_def = RrdDefinition::make()
|
|
->addDataset('id5', 'GAUGE', 0)
|
|
->addDataset('id10', 'GAUGE', 0)
|
|
->addDataset('id173', 'GAUGE', 0)
|
|
->addDataset('id177', 'GAUGE', 0)
|
|
->addDataset('id183', 'GAUGE', 0)
|
|
->addDataset('id184', 'GAUGE', 0)
|
|
->addDataset('id187', 'GAUGE', 0)
|
|
->addDataset('id188', 'GAUGE', 0)
|
|
->addDataset('id190', 'GAUGE', 0)
|
|
->addDataset('id194', 'GAUGE', 0)
|
|
->addDataset('id196', 'GAUGE', 0)
|
|
->addDataset('id197', 'GAUGE', 0)
|
|
->addDataset('id198', 'GAUGE', 0)
|
|
->addDataset('id199', 'GAUGE', 0)
|
|
->addDataset('id231', 'GAUGE', 0)
|
|
->addDataset('id233', 'GAUGE', 0)
|
|
->addDataset('completed', 'GAUGE', 0)
|
|
->addDataset('interrupted', 'GAUGE', 0)
|
|
->addDataset('readfailure', 'GAUGE', 0)
|
|
->addDataset('unknownfail', 'GAUGE', 0)
|
|
->addDataset('extended', 'GAUGE', 0)
|
|
->addDataset('short', 'GAUGE', 0)
|
|
->addDataset('conveyance', 'GAUGE', 0)
|
|
->addDataset('selective', 'GAUGE', 0);
|
|
|
|
$int=0;
|
|
$metrics = array();
|
|
while (isset($lines[$int])) {
|
|
list($disk, $id5, $id10, $id173, $id177, $id183, $id184, $id187, $id188, $id190, $id194,
|
|
$id196, $id197, $id198, $id199, $id231, $id233, $completed, $interrupted, $read_failure,
|
|
$unknown_failure, $extended, $short, $conveyance, $selective)=explode(",", $lines[$int]);
|
|
|
|
$rrd_name = array('app', $name, $app_id, $disk);
|
|
|
|
$fields = [
|
|
'id5' => is_numeric($id5) ? $id5 : null,
|
|
'id10' => is_numeric($id10) ? $id10 : null,
|
|
'id173' => is_numeric($id173) ? $id173 : null,
|
|
'id177' => is_numeric($id177) ? $id177 : null,
|
|
'id183' => is_numeric($id183) ? $id183 : null,
|
|
'id184' => is_numeric($id184) ? $id184 : null,
|
|
'id187' => is_numeric($id187) ? $id187 : null,
|
|
'id188' => is_numeric($id188) ? $id188 : null,
|
|
'id190' => is_numeric($id190) ? $id190 : null,
|
|
'id194' => is_numeric($id194) ? $id194 : null,
|
|
'id196' => is_numeric($id196) ? $id196 : null,
|
|
'id197' => is_numeric($id197) ? $id197 : null,
|
|
'id198' => is_numeric($id198) ? $id198 : null,
|
|
'id199' => is_numeric($id199) ? $id199 : null,
|
|
'id231' => is_numeric($id231) ? $id231 : null,
|
|
'id233' => is_numeric($id233) ? $id233 : null,
|
|
'completed' => is_numeric($completed) ? $completed : null,
|
|
'interrupted' => is_numeric($interrupted) ? $interrupted : null,
|
|
'readfailure' => is_numeric($read_failure) ? $read_failure : null,
|
|
'unknownfail' => is_numeric($unknown_failure) ? $unknown_failure : null,
|
|
'extended' => is_numeric($extended) ? $extended : null,
|
|
'short' => is_numeric($short) ? $short : null,
|
|
'conveyance' => is_numeric($conveyance) ? $conveyance : null,
|
|
'selective' => is_numeric($selective) ? $selective : null
|
|
];
|
|
|
|
$metrics[$disk] = $fields;
|
|
$tags = array('name' => $name, 'app_id' => $app_id, 'rrd_def' => $rrd_def, 'rrd_name' => $rrd_name);
|
|
data_update($device, 'app', $tags, $fields);
|
|
|
|
$int++;
|
|
}
|
|
|
|
|
|
# smart enhancement id9
|
|
$rrd_name = array('app', $name, $app_id);
|
|
$rrd_def = RrdDefinition::make()
|
|
->addDataset('id9', 'GAUGE', 0);
|
|
|
|
$int=0;
|
|
while (isset($lines[$int])) {
|
|
list($disk, , , , , , , , , , , , , , , , , , , , , , , , , $id9)=explode(",", $lines[$int]);
|
|
|
|
$rrd_name = array('app', $name.'_id9', $app_id, $disk);
|
|
|
|
$fields = ['id9' => $id9];
|
|
$metrics[$disk]['id9'] = $id9;
|
|
|
|
$tags = array('name' => $name, 'app_id' => $app_id, 'rrd_def' => $rrd_def, 'rrd_name' => $rrd_name);
|
|
data_update($device, 'app', $tags, $fields);
|
|
|
|
$int++;
|
|
}
|
|
|
|
update_application($app, $output, $metrics);
|