69 lines
2.5 KiB
PHP
69 lines
2.5 KiB
PHP
<?php
|
|
|
|
// Strenge Typprüfung für Parameter- und Rückgabetypen aktivieren.
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Services\Snmp;
|
|
|
|
use RuntimeException;
|
|
|
|
/**
|
|
* Service zur Ermittlung des Serverstatus.
|
|
*
|
|
* In dieser ersten Version werden noch statische Demo-Daten zurückgegeben.
|
|
* Später können hier echte SNMP-Abfragen eingebaut werden, ohne dass sich
|
|
* der DashboardController oder die Views ändern müssen.
|
|
*/
|
|
class SnmpServerStatusService
|
|
{
|
|
/** @var array<string, mixed> SNMP-spezifische Konfiguration (Host, Community, Timeout, OIDs, etc.) */
|
|
private array $config;
|
|
|
|
/**
|
|
* Erwartet den Teilbereich "snmp" aus der allgemeinen Konfiguration (config.php).
|
|
*
|
|
* @param array<string, mixed> $snmpConfig Konfiguration für die SNMP-Abfragen
|
|
*/
|
|
public function __construct(array $snmpConfig)
|
|
{
|
|
// SNMP-Konfiguration in der Instanz speichern.
|
|
$this->config = $snmpConfig;
|
|
}
|
|
|
|
/**
|
|
* Liefert den aktuellen Serverstatus zurück.
|
|
*
|
|
* In dieser Version werden Demo-Daten auf Basis der Konfiguration erzeugt.
|
|
* Später können hier echte SNMP-Queries (z. B. über die PHP-SNMP-Extension) verwendet werden.
|
|
*
|
|
* @return array<string, mixed> Assoziatives Array mit Statuswerten (Hostname, CPU%, RAM%, etc.)
|
|
*
|
|
* @throws RuntimeException wenn die SNMP-Konfiguration unvollständig ist (z. B. host fehlt)
|
|
*/
|
|
public function getServerStatus(): array
|
|
{
|
|
// Hostnamen aus der SNMP-Konfiguration lesen.
|
|
$host = (string)($this->config['host'] ?? '');
|
|
|
|
// Ohne Host ist keine sinnvolle Abfrage möglich -> Konfigurationsfehler.
|
|
if ($host === '') {
|
|
throw new RuntimeException('SNMP-Konfiguration ist unvollständig (host fehlt).');
|
|
}
|
|
|
|
// TODO: Später hier echte SNMP-Abfragen einbauen (z. B. snmp2_get/snmp2_walk).
|
|
// Die OIDs können aus $this->config['oids'] gelesen werden.
|
|
// Für den Anfang verwenden wir dieselben Demo-Werte wie vorher im DashboardController.
|
|
$status = [
|
|
'hostname' => $host,
|
|
'os' => 'Windows Server 2025 Datacenter',
|
|
'uptime' => '3 Tage 12 Stunden',
|
|
'cpu_usage' => 23, // CPU-Auslastung in Prozent (Demo)
|
|
'memory_usage' => 62, // RAM-Auslastung in Prozent (Demo)
|
|
'disk_usage_c' => 71, // Datenträger C in Prozent (Demo)
|
|
'last_update' => date('d.m.Y H:i:s'), // Zeitpunkt der letzten Aktualisierung
|
|
];
|
|
|
|
return $status;
|
|
}
|
|
}
|