librenms/LibreNMS/OS/F5.php
Tony Murray 7e98e03338
Polling cleanup, fix PHP warnings (#13460)
* Fix warnings up to Arbos

* fixes a-c

* a-r

* a-vrp

* There and back again

* Update test data, couple fixes

* PHPSStan fixes

* style fixes, and fix Asyncos, whoops

* flip serial back.......

* less bogus data

* Poweralert sysName during polling too

* make sure things are calculated in the correct order

* fix style and bad nullables

* update test data

* A comple more conversions

* cambium ptp, misc, and hardware_mib

* remaining except vmware-esxi

* Fixes

* Update baseline

* fixes and fix up baseline

* adjust SnmpQueryMock to upstream options change

* data corrections

* restore slashes

* correctly handle all options input in SnmpQueryMock

* undo ftos changes

* restore vccodec sysDescr
2021-11-14 14:58:13 -06:00

98 lines
3.7 KiB
PHP

<?php
/**
* F5.php
*
* -Description-
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* @link https://www.librenms.org
*
* @copyright 2021 Tony Murray
* @author Tony Murray <murraytony@gmail.com>
*/
namespace LibreNMS\OS;
use LibreNMS\Interfaces\Polling\OSPolling;
use LibreNMS\OS;
use LibreNMS\RRD\RrdDefinition;
class F5 extends OS implements OSPolling
{
public function pollOS(): void
{
$metadata = [
'F5-BIGIP-APM-MIB::apmAccessStatCurrentActiveSessions.0' => [
'dataset' => 'sessions',
'type' => 'GAUGE',
'name' => 'bigip_apm_sessions',
],
'F5-BIGIP-SYSTEM-MIB::sysStatClientTotConns.0' => [
'dataset' => 'ClientTotConns',
'type' => 'COUNTER',
'name' => 'bigip_system_client_connection_rate',
],
'F5-BIGIP-SYSTEM-MIB::sysStatServerTotConns.0' => [
'dataset' => 'ServerTotConns',
'type' => 'COUNTER',
'name' => 'bigip_system_server_connection_rate',
],
'F5-BIGIP-SYSTEM-MIB::sysStatClientCurConns.0' => [
'dataset' => 'ClientCurConns',
'type' => 'GAUGE',
'name' => 'bigip_system_client_concurrent_connections',
],
'F5-BIGIP-SYSTEM-MIB::sysStatServerCurConns.0' => [
'dataset' => 'ServerCurConns',
'type' => 'GAUGE',
'name' => 'bigip_system_server_concurrent_connections',
],
];
// fetch data
$data = \SnmpQuery::get(array_keys($metadata) + [
'F5-BIGIP-SYSTEM-MIB::sysClientsslStatTotNativeConns.0',
'F5-BIGIP-SYSTEM-MIB::sysClientsslStatTotCompatConns.0',
])->values();
// connections
foreach ($metadata as $key => $info) {
if (isset($data[$key]) && is_numeric($data[$key])) {
$rrd_def = RrdDefinition::make()->addDataset($info['dataset'], $info['type'], 0);
$fields = [
$info['dataset'] => $data[$key],
];
$tags = compact('rrd_def');
data_update($this->getDeviceArray(), $info['name'], $tags, $fields);
$this->enableGraph($info['name']);
}
}
// SSL TPS
if (isset($data['F5-BIGIP-SYSTEM-MIB::sysClientsslStatTotNativeConns.0'], $data['F5-BIGIP-SYSTEM-MIB::sysClientsslStatTotCompatConns.0'])) {
$rrd_def = RrdDefinition::make()
->addDataset('TotNativeConns', 'COUNTER', 0)
->addDataset('TotCompatConns', 'COUNTER', 0);
$fields = [
'TotNativeConns' => $data['F5-BIGIP-SYSTEM-MIB::sysClientsslStatTotNativeConns.0'],
'TotCompatConns' => $data['F5-BIGIP-SYSTEM-MIB::sysClientsslStatTotCompatConns.0'],
];
$tags = compact('rrd_def');
data_update($this->getDeviceArray(), 'bigip_system_tps', $tags, $fields);
$this->enableGraph('bigip_system_tps');
}
}
}