Observium_CE/includes/discovery/ucd-diskio.inc.php

54 lines
1.8 KiB
PHP

<?php
/**
* Observium
*
* This file is part of Observium.
*
* @package observium
* @subpackage discovery
* @copyright (C) Adam Armstrong
*
*/
$diskio_array = snmpwalk_cache_oid($device, 'diskIOEntry', [], 'UCD-DISKIO-MIB');
// Build array of entries from the database
foreach (dbFetchRows('SELECT * FROM `ucd_diskio` WHERE `device_id` = ?', [$device['device_id']]) as $entry) {
$entries_db[$entry['diskio_index']] = $entry;
}
// Check if the $diskio_array
if (count($diskio_array) > 0) {
foreach ($diskio_array as $index => $entry) {
if ($entry['diskIONRead'] > 0 || $entry['diskIONWritten'] > 0) {
print_debug('$index ' . $entry['diskIODevice']);
if (isset($entries_db[$index]) && $entries_db[$index]['diskio_descr'] == $entry['diskIODevice']) {
// Entries match. Nothing to do here!
echo('.');
} elseif (isset($entries_db[$index])) {
// Index exists, but block device has changed!
echo('U');
dbUpdate(['diskio_descr' => $entry['diskIODevice']], 'ucd_diskio', '`diskio_id` = ?', [$entries_db[$index]['diskio_id']]);
} else {
// Index doesn't exist in the database. Add it.
$inserted = dbInsert(['device_id' => $device['device_id'], 'diskio_index' => $index, 'diskio_descr' => $entry['diskIODevice']], 'ucd_diskio');
echo('+');
}
// Remove from the DB array
unset($entries_db[$index]);
} // end validity check
} // end array foreach
} // End array if
// Remove diskio entries which weren't redetected here
foreach ($entries_db as $entry) {
echo('-');
dbDelete('ucd_diskio', '`diskio_id` = ?', [$entry['diskio_id']]);
}
echo(PHP_EOL);
// EOF