. * * @package LibreNMS * @link http://librenms.org * @copyright 2020 Tony Murray * @author Tony Murray */ namespace LibreNMS\OS; use App\Models\Device; use LibreNMS\Interfaces\Polling\OSPolling; use LibreNMS\OS\Shared\Fortinet; use LibreNMS\RRD\RrdDefinition; class Fortigate extends Fortinet implements OSPolling { public function discoverOS(Device $device): void { parent::discoverOS($device); // yaml $device->hardware = $device->hardware ?: $this->getHardwareName(); } public function pollOS() { $sessions = snmp_get($this->getDeviceArray(), 'FORTINET-FORTIGATE-MIB::fgSysSesCount.0', '-Ovq'); if (is_numeric($sessions)) { $rrd_def = RrdDefinition::make()->addDataset('sessions', 'GAUGE', 0, 3000000); echo "Sessions: $sessions\n"; $fields = [ 'sessions' => $sessions, ]; $tags = compact('rrd_def'); app()->make('Datastore')->put($this->getDeviceArray(), 'fortigate_sessions', $tags, $fields); $this->enableGraph('fortigate_sessions'); } $cpu_usage = snmp_get($this->getDeviceArray(), 'FORTINET-FORTIGATE-MIB::fgSysCpuUsage.0', '-Ovq'); if (is_numeric($cpu_usage)) { $rrd_def = RrdDefinition::make()->addDataset('LOAD', 'GAUGE', -1, 100); echo "CPU: $cpu_usage%\n"; $fields = [ 'LOAD' => $cpu_usage, ]; $tags = compact('rrd_def'); app()->make('Datastore')->put($this->getDeviceArray(), 'fortigate_cpu', $tags, $fields); $this->enableGraph('fortigate_cpu'); } } }