mirror of
https://github.com/librenms/librenms.git
synced 2024-09-22 02:48:37 +00:00
f2f169ae78
* mempools to modern module quick hacky hrstorage port * port ucd-snmp-mib to Mempools * Populate DB for ucd Prep for yaml * initial yaml attempt * more complex conversions fixes to YamlDiscovery, make leading $ optional and allow mib::oid format * walk full tables and skip values normalize percentages above 100 * handle precent only ones (specify total as 100) * Move default polling out of YamlMempoolsDiscovery * fixes * Update test data hrstorage should be correct. * perc_warn for hrstorage * Host Resources, record buffer, cached, and shared * Host Resources is always better, don't do both HR and UCD * fix unix, include warning levels * variable size * consolidate skip_values * define mempools schema * number instead of integer * more schema refactor * one more skip_values reference * throw error for invalid oid translation aos6 * a* and Cisco * updated test data * update almost all hrstorage data files * b* * c* with test data use standard cache for hrStorage * use cache for storage module too * hand bsnmp properly * bdcom * exclude total oid from yaml so it is not polled May add a way to ignore this behavior and poll it, but I don't know if that is needed. * automatically handle percent only values * ciscowlc * only poll used or free if we have used, free, and total. * fix skipping * the dlinkoning fix find value when value "name" is numeric * support numeric oids * dnos/ftos attempt * I guess we can't filter on total > 0 * edgecos * e* * f WIP * f* * gwd (aka g*) * h* + procurve * i* * j* * m* * support 0% used memory (however unlikely) * n* * CISCO-PROCESS-MIB memory, share cache with processors module * ignore mempools with invalid total * p* * quanta * r* fix raisecom mibs terribly broken * s-z * style fixes * Move VRP back to PHP and make it actually work * fix zynos * update schema * Update Cisco processor data for description bug fixes * fix comware processors * comware mempools with memory size default precision to 1 * sophos-xg updated data * hrstorage use ram size for buffers, cache, and shared * Show memory available instead of free in device overview * UCD, use same rrd format, store available instead of free in the db. * Calculate availability for HOST-RESOURCES-MIB * Convert UCD to standard polling * rename old rrd files * initial graph work * graph WIP * Graph looking decent * Graph looking decent for hr * remove old ucd_graph code * handle availability mempool more graph cleanup * color adjustments * remove accidental free calculation * Update test data and fix corner cases * fis pfsense * update schema * add default value for mempool_class * fix whitespace * update schema * update schema correctly * one more time * fortigate_1500d-sensors missing oids * Update docs. * fix indent * add implements MempoolsDiscovery explicitly to OS * remove ucd_memory graph references remove unused device_memory graph * remove unused functions * set devices with mempools to rediscover to prevent/minimize gaps * use a subquery * add overview graph * port health mempools table * Update device mempool * only show overview if multiple * Don't override user set warn percentages in discovery * fix missed usage * fix style * Safety check to not rename rrd files incorrectly if migration has not been run. * Fix overview percent bar and represent available and used on the bar * missed an item to convert to mempool_class * percent on the wrong side
146 lines
4.5 KiB
PHP
146 lines
4.5 KiB
PHP
<?php
|
|
|
|
use LibreNMS\RRD\RrdDefinition;
|
|
|
|
// Poll systemStats from UNIX-like hosts running UCD/Net-SNMPd
|
|
// UCD-SNMP-MIB::ssIndex.0 = INTEGER: 1
|
|
// UCD-SNMP-MIB::ssErrorName.0 = STRING: systemStats
|
|
// UCD-SNMP-MIB::ssSwapIn.0 = INTEGER: 0 kB
|
|
// UCD-SNMP-MIB::ssSwapOut.0 = INTEGER: 0 kB
|
|
// UCD-SNMP-MIB::ssIOSent.0 = INTEGER: 1864 blocks/s
|
|
// UCD-SNMP-MIB::ssIOReceive.0 = INTEGER: 7 blocks/s
|
|
// UCD-SNMP-MIB::ssSysInterrupts.0 = INTEGER: 7572 interrupts/s
|
|
// UCD-SNMP-MIB::ssSysContext.0 = INTEGER: 10254 switches/s
|
|
// UCD-SNMP-MIB::ssCpuUser.0 = INTEGER: 4
|
|
// UCD-SNMP-MIB::ssCpuSystem.0 = INTEGER: 3
|
|
// UCD-SNMP-MIB::ssCpuIdle.0 = INTEGER: 77
|
|
// UCD-SNMP-MIB::ssCpuRawUser.0 = Counter32: 194386556
|
|
// UCD-SNMP-MIB::ssCpuRawNice.0 = Counter32: 15673
|
|
// UCD-SNMP-MIB::ssCpuRawSystem.0 = Counter32: 65382910
|
|
// UCD-SNMP-MIB::ssCpuRawIdle.0 = Counter32: 1655192684
|
|
// UCD-SNMP-MIB::ssCpuRawWait.0 = Counter32: 205336019
|
|
// UCD-SNMP-MIB::ssCpuRawKernel.0 = Counter32: 0
|
|
// UCD-SNMP-MIB::ssCpuRawInterrupt.0 = Counter32: 1128048
|
|
// UCD-SNMP-MIB::ssIORawSent.0 = Counter32: 2353983704
|
|
// UCD-SNMP-MIB::ssIORawReceived.0 = Counter32: 3172182750
|
|
// UCD-SNMP-MIB::ssRawInterrupts.0 = Counter32: 427446276
|
|
// UCD-SNMP-MIB::ssRawContexts.0 = Counter32: 4161026807
|
|
// UCD-SNMP-MIB::ssCpuRawSoftIRQ.0 = Counter32: 2605010
|
|
// UCD-SNMP-MIB::ssRawSwapIn.0 = Counter32: 602002
|
|
// UCD-SNMP-MIB::ssRawSwapOut.0 = Counter32: 937422
|
|
// UCD-SNMP-MIB::ssCpuRawWait.0
|
|
// UCD-SNMP-MIB::ssCpuRawSteal.0
|
|
|
|
$ss = snmpwalk_cache_oid($device, 'systemStats', [], 'UCD-SNMP-MIB');
|
|
$ss = $ss[0];
|
|
|
|
if (is_numeric($ss['ssCpuRawUser']) && is_numeric($ss['ssCpuRawNice']) && is_numeric($ss['ssCpuRawSystem']) && is_numeric($ss['ssCpuRawIdle'])) {
|
|
$rrd_def = RrdDefinition::make()
|
|
->addDataset('user', 'COUNTER', 0)
|
|
->addDataset('system', 'COUNTER', 0)
|
|
->addDataset('nice', 'COUNTER', 0)
|
|
->addDataset('idle', 'COUNTER', 0);
|
|
|
|
$fields = [
|
|
'user' => $ss['ssCpuRawUser'],
|
|
'system' => $ss['ssCpuRawSystem'],
|
|
'nice' => $ss['ssCpuRawNice'],
|
|
'idle' => $ss['ssCpuRawIdle'],
|
|
];
|
|
|
|
$tags = compact('rrd_def');
|
|
data_update($device, 'ucd_cpu', $tags, $fields);
|
|
|
|
$os->enableGraph('ucd_cpu');
|
|
}
|
|
|
|
// This is how we'll collect in the future, start now so people don't have zero data.
|
|
$collect_oids = [
|
|
'ssCpuRawUser',
|
|
'ssCpuRawNice',
|
|
'ssCpuRawSystem',
|
|
'ssCpuRawIdle',
|
|
'ssCpuRawInterrupt',
|
|
'ssCpuRawSoftIRQ',
|
|
'ssCpuRawKernel',
|
|
'ssCpuRawWait',
|
|
'ssIORawSent',
|
|
'ssIORawReceived',
|
|
'ssRawInterrupts',
|
|
'ssRawContexts',
|
|
'ssRawSwapIn',
|
|
'ssRawSwapOut',
|
|
'ssCpuRawWait',
|
|
'ssCpuRawSteal',
|
|
];
|
|
|
|
foreach ($collect_oids as $oid) {
|
|
if (is_numeric($ss[$oid])) {
|
|
$rrd_name = 'ucd_' . $oid;
|
|
$rrd_def = RrdDefinition::make()->addDataset('value', 'COUNTER', 0);
|
|
|
|
$fields = [
|
|
'value' => $ss[$oid],
|
|
];
|
|
|
|
$tags = compact('oid', 'rrd_name', 'rrd_def');
|
|
data_update($device, 'ucd_cpu', $tags, $fields);
|
|
|
|
$os->enableGraph('ucd_cpu');
|
|
}
|
|
}
|
|
|
|
// Set various graphs if we've seen the right OIDs.
|
|
if (is_numeric($ss['ssRawSwapIn'])) {
|
|
$os->enableGraph('ucd_swap_io');
|
|
}
|
|
|
|
if (is_numeric($ss['ssIORawSent'])) {
|
|
$os->enableGraph('ucd_io');
|
|
}
|
|
|
|
if (is_numeric($ss['ssRawContexts'])) {
|
|
$os->enableGraph('ucd_contexts');
|
|
}
|
|
|
|
if (is_numeric($ss['ssRawInterrupts'])) {
|
|
$os->enableGraph('ucd_interrupts');
|
|
}
|
|
|
|
if (is_numeric($ss['ssCpuRawWait'])) {
|
|
$os->enableGraph('ucd_io_wait');
|
|
}
|
|
|
|
if (is_numeric($ss['ssCpuRawSteal'])) {
|
|
$os->enableGraph('ucd_cpu_steal');
|
|
}
|
|
|
|
//
|
|
// Poll laLoadInt for load averages on UNIX-like hosts running UCD/Net-SNMPd
|
|
// UCD-SNMP-MIB::laLoadInt.1 = INTEGER: 206
|
|
// UCD-SNMP-MIB::laLoadInt.2 = INTEGER: 429
|
|
// UCD-SNMP-MIB::laLoadInt.3 = INTEGER: 479
|
|
$load_raw = snmp_get_multi($device, ['laLoadInt.1', 'laLoadInt.2', 'laLoadInt.3'], '-OQUs', 'UCD-SNMP-MIB');
|
|
|
|
// Check to see that the 5-min OID is actually populated before we make the rrd
|
|
if (is_numeric($load_raw[2]['laLoadInt'])) {
|
|
$rrd_def = RrdDefinition::make()
|
|
->addDataset('1min', 'GAUGE', 0)
|
|
->addDataset('5min', 'GAUGE', 0)
|
|
->addDataset('15min', 'GAUGE', 0);
|
|
|
|
$fields = [
|
|
'1min' => $load_raw[1]['laLoadInt'],
|
|
'5min' => $load_raw[2]['laLoadInt'],
|
|
'15min' => $load_raw[3]['laLoadInt'],
|
|
];
|
|
|
|
$tags = compact('rrd_def');
|
|
data_update($device, 'ucd_load', $tags, $fields);
|
|
|
|
$os->enableGraph('ucd_load');
|
|
}
|
|
|
|
unset($ss, $load_raw, $snmpdata);
|
|
unset($key, $collect_oids, $rrd_name, $rrd_def, $oid);
|