Zum Inhalt springen

FortiGate

Ein Fortinet-FortiGate über die FortiOS-REST-API: down gegangene Site-to-Site-IPsec-Tunnel, aktivierte Schnittstellen, die ihren Link verloren haben, ein außer Sync geratener oder ein Mitglied verlierender HA-Cluster, sich dem Conserve-Modus nähernder Speicher, ablaufende FortiGuard- und FortiCare-Lizenzen, und angebotene Patch-Versionen für den laufenden FortiOS-Zweig.

DumbMonit nutzt einen REST-API-Benutzer, dessen Access-Profil nur liest und der nur Aufrufe von der Adresse des DumbMonit-Servers akzeptiert (Trusted Host). Sein Token wird als Authorization: Bearer gesendet, nie in der URL: FortiOS 7.4.5 und 7.6.1 lehnen es dort ohnehin ab.

Jede Minute liest DumbMonit drei erforderliche Seiten — /api/v2/monitor/system/status, /api/v2/monitor/system/resource/usage und /api/v2/monitor/system/interface/select — und sechs optionale, die ein engeres Profil, oder ein FortiGate ohne Cluster oder Tunnel, ohne Fehlschlag des Rests ablehnen oder leer lassen kann: den administrativen Zustand der Schnittstellen (/api/v2/cmdb/system/interface), HA-Statistiken und Prüfsummen, IPsec-Tunnel, Lizenzstatus und verfügbare Firmware.

Alle Metriken haben das Präfix dumbmonit_fortigate_.

MetrikLabelsBedeutung
version_infoversion, build, model, hostnameWert 1.
cpu_usage_percent, memory_used_percent, disk_used_percentAktuelle Nutzung.
sessions, session_setup_rateAktive Sitzungen, neue Sitzungen pro Sekunde.
log_disk_ok0, wenn die Log-Platte formatiert werden muss.
interface_link_upinterface, aliasPhysischer Link.
interface_enabledinterface, aliasAdministrativer Zustand; jede Schnittstelle zählt als aktiviert, wenn das Profil die Konfiguration nicht lesen kann.
interface_downinterface, alias1, wenn die Schnittstelle aktiviert ist, eine Adresse hat und keinen Link hat. Freie Ports ohne Adresse bleiben unberücksichtigt.
interface_speed_mbpsinterface, aliasWährend der Link up ist.
interface_bytes_in_total, interface_bytes_out_total, interface_errors_in_total, interface_errors_out_totalinterface, aliasZähler.
interfaces_downZählung.
ha_membersMitglieder im Cluster; 0 für ein eigenständiges FortiGate.
ha_in_syncMit zwei oder mehr Mitgliedern: 1, wenn jedes Mitglied dieselbe Konfigurationsprüfsumme hat.
ha_member_cpu_usage_percent, ha_member_memory_used_percentmemberPro Mitglied.
ipsec_tunnel_uptunnel1, wenn mindestens eine Phase 2 des Tunnels up ist. Dial-up-Tunnel (Remote Access) werden ausgelassen.
ipsec_phase2_uptunnel, phase2Pro Phase-2-Selektor.
ipsec_tunnel_bytes_in_total, ipsec_tunnel_bytes_out_totaltunnelZähler.
ipsec_tunnel_infotunnel, remote_gatewayWert 1.
ipsec_tunnels, ipsec_tunnels_downZählungen.
license_status_infolicense, statusWert 1, für jede Lizenz, die das FortiGate hält (antivirus, ips, web_filtering, forticare_hardware…); no_license-Einträge werden ausgelassen.
license_expiredlicense1, wenn der Status expired ist.
license_expiry_secondslicenseBis zum Ablauf; negativ nach Ablauf.
firmware_update_available1, wenn FortiGuard eine neuere Patch-Version des laufenden Zweigs anbietet (7.4.4 → 7.4.5). Ein neuer Zweig (7.6) ist ein Projekt, kein Alarm.
firmware_latest_infoversionWert 1: diese Patch-Version.

Die geltenden eingebauten Regeln:

  • FortiGate IPsec tunnel down: keine Phase 2 up seit fünf Minuten (Warning).
  • FortiGate interface without link: seit fünf Minuten (Advisory).
  • FortiGate HA out of sync: seit fünfzehn Minuten (Advisory).
  • FortiGate HA member lost: weniger Mitglieder als zu jedem Zeitpunkt der letzten 24 Stunden (Warning). Die erwartete Anzahl wird nirgendwo veröffentlicht, daher hört ein endgültig entferntes Mitglied am nächsten Tag auf zu alarmieren.
  • FortiGate memory near conserve mode: über 85 % seit zehn Minuten (Advisory). Bei 88 % (standardmäßig) geht FortiOS in den Conserve-Modus und hört auf, neue Sitzungen zu prüfen.
  • FortiGate CPU high: über 90 % seit fünfzehn Minuten (Advisory).
  • FortiGate licence expiring: weniger als 30 Tage übrig, oder abgelaufen (Advisory, täglich erinnert).
  • FortiGate firmware update: eine Patch-Version wird angeboten (Info, wöchentlich erinnert).

Das Firewall-Panel sagt in einem Satz, was nicht stimmt, zeigt CPU, Speicher, Sitzungen und den HA-Zustand, listet dann die IPsec-Tunnel (down zuerst), die Schnittstellen ohne Link, die innerhalb von 60 Tagen ablaufenden oder abgelaufenen Lizenzen, und eine verfügbare Patch-Version.

Einen nur-lesenden REST-API-Benutzer für DumbMonit erstellen

Abschnitt betitelt „Einen nur-lesenden REST-API-Benutzer für DumbMonit erstellen“
  1. Erstellen Sie über die FortiGate-CLI ein Access-Profil, das nur den System-, Netzwerk- und VPN-Zustand lesen kann, und nichts sonst.

    config system accprofile
    edit "dumbmonit-ro"
    set sysgrp read
    set netgrp read
    set vpngrp read
    set fwgrp none
    set loggrp none
    set utmgrp none
    set wanoptgrp none
    set wifi none
    next
    end
  2. Erstellen Sie den REST-API-Benutzer dumbmonit mit diesem Profil, der nur der Adresse des DumbMonit-Servers vertraut (192.0.2.10 ersetzen), und erzeugen Sie dann sein Token: Es wird einmal ausgegeben.

    config system api-user
    edit "dumbmonit"
    set accprofile "dumbmonit-ro"
    set vdom "root"
    config trusthost
    edit 1
    set ipv4-trusthost 192.0.2.10 255.255.255.255
    next
    end
    next
    end
    execute api-user generate-key dumbmonit
  3. Geben Sie in DumbMonit die Adresse des FortiGate ein, zum Beispiel “fw.lan” (fügen Sie den Port hinzu, falls die Administrationsoberfläche nicht auf 443 hört), und fügen Sie das Token als API-Token ein. FortiGate liefert ein selbstsigniertes Zertifikat: Kreuzen Sie “Accept an unverifiable certificate” an, sofern Sie kein eigenes installiert haben.

CredentialFelder
API-TokenDas von execute api-user generate-key dumbmonit ausgegebene Token, als Authorization: Bearer gesendet.

Adresse: der Hostname oder die IP des FortiGate, host:port, oder eine URL. Optionen:

  • Port (443): der HTTPS-Port der Administrationsoberfläche (set admin-sport unter config system global).
  • VDOM: die zu lesende virtuelle Domäne; leer für die, zu der der REST-API-Benutzer gehört.
  • Accept an unverifiable certificate: das eigene Zertifikat des FortiGate ist selbstsigniert.
  • Timeout pro Request (15 s).

“FortiGate refused the API token (401)”: Das Token ist falsch oder wurde neu erzeugt. Erzeugen Sie ein neues mit execute api-user generate-key dumbmonit.

“FortiGate refused … (403)”: Die DumbMonit-Adresse ist nicht unter den Trusted Hosts des Benutzers, oder sein Profil kann diese Seite nicht lesen. Eine optionale Seite, die so abgelehnt wird, wird einfach ausgelassen.

Keine IPsec-, Lizenz- oder Firmware-Zahl: Das Profil kann sie nicht lesen, oder das FortiGate hat keinen Tunnel; der Rest wird trotzdem gelesen.