Fortigate Firewall Performance Troubleshooting

CPU und Memory Auslastung

get system performance status gibt einen groben Überblick über die Auslastung der Maschine.

get system performance status

Einzelne Prozesse

diag sys top zeigt detailliert jeden einzelnen Prozess. Für CPU bezogene Probleme ist diag sys top besser geeignet.

diag sys top 1 30

Run Time:  44 days, 10 hours and 20 minutes
0U, 0N, 0S, 99I, 0WA, 0HI, 1SI, 0ST; 1867T, 1236F
          cw_acd      150      S       0.9     1.4
          hasync      133      S <     0.9     0.5
         src-vis    23593      S       0.9     0.4
          newcli    12969      R       0.9     0.2
         miglogd      114      S       0.0     1.6
         cmdbsvr       93      S       0.0     1.5
         miglogd      177      S       0.0     1.5
         miglogd      176      S       0.0     1.5
         pyfcgid     2504      S       0.0     1.1
       forticron      123      S       0.0     0.9
          httpsd      116      S       0.0     0.8
          httpsd    19863      S       0.0     0.8
          httpsd     2683      S       0.0     0.8
         pyfcgid     2508      S       0.0     0.7
         pyfcgid     2506      S       0.0     0.7
         pyfcgid     2507      S       0.0     0.7
         updated      222      S       0.0     0.5

Refresh nach 1 Sekunde, 30 Prozesse anzeigen.

Nach CPU sortieren: Shift-P

Nach Memory sortieren: Shift-M

Die Kolonnen sind Prozess, ProzessID, Status, % CPU, % Memory

Prozess Status: S = Sleeping, R = Running, D = Do not Disturb, Z = Zombie. D und Z lassen sich nicht killen. D darf nur selten und kurz auftreten. Z darf gar nie auftreten.

Gesamte Subsysteme

diag sys top-summary

diag sys top-summary zeigt eine Zusammenfassung der Subsysteme, inklusive Shared Memory

diag sys top-summary hat mit 5.6.3 ein Problem. Hoffentlich wird das bald behoben.

Update: diag sys top-summary wurde in 6.4 ersatzlos gestrichen.

Prozesse killen

Prozesse mit dem Status „S“ oder „R“ können brutal abgewürgt werden. Auf der Fortigate läuft ein Watchdog, der den abgewürgten Prozess wieder neu startet. ACHTUNG! Prozesse abwürgen kann zu Fehlfunktionen und Störungen der Produktion führen. Führen Sie diag sys kill nur aus, wenn Sie genau wissen was Sie machen.

diag sys kill 9 <process-id>

Um die IPS Engine neu zu starten gibt es die Möglichkeit

diag test appl ipsmonitor 99

Dieser Befehl führt einen geordneten Neustart des IPS Subsystems durch. Die IPS Engine neigt dazu, alles Memory aufzubrauchen. Anstelle eines Reboots führt der Restart auch zum Ziel.

Die FortiGate führt ein Log, auf dem man sieht, ob die Prozesse sauber beendet wurden oder ob es einen Crash gab.

diag debug crashlog read

Prozesse die sich selbst sauber beendet haben sehen so aus:

61: 2018-01-15 08:47:29 the killed daemon is /bin/pyfcgid: status=0x0
62: 2018-01-16 22:50:05 the killed daemon is /bin/hatalk: status=0x0

Prozesse die abgewürgt wurden oder die einen Crash hatten hingegen so:

68: 2018-01-25 10:59:06 <00136> firmware FortiGate-80E v5.6.3,build1547b1547,171204 (GA) (Release)
69: 2018-01-25 10:59:06 <00136> application src-vis
70: 2018-01-25 10:59:06 <00136> *** signal 11 (Segmentation fault) received ***
71: 2018-01-25 10:59:06 <00136> Register dump:
72: 2018-01-25 10:59:06 <00136> R0: 04b2d300   R1: 5ec6a240   R2: 00000014    R3: 00000000
73: 2018-01-25 10:59:06 <00136> R4: 01932260   R5: 00000000   R6: 5ec6a368    R7: 5ec6a254
74: 2018-01-25 10:59:06 <00136> R8: 5ec6a354   R9: 01994184  R10: 04b8d660    FP: 01994188
75: 2018-01-25 10:59:06 <00136> IP: 00000000   SP: 5ec6a220   LR: 00153aa3    PC: 001538ea
76: 2018-01-25 10:59:06 <00136> CPSR: 000e0030   Addr: 00000000
77: 2018-01-25 10:59:06 <00136> Trap: 0000000e   Error: 00000017   OldMask: 00000000
78: 2018-01-25 10:59:06 <00136> Backtrace:
79: 2018-01-25 10:59:06 <00136> [0x001538ea] => /bin/src-vis  
80: 2018-01-25 10:59:06 <00136> [0x00153aa2] => /bin/src-vis  
81: 2018-01-25 10:59:06 <00136> [0x00155a12] => /bin/src-vis  
82: 2018-01-25 10:59:06 <00136> [0x0014e400] => /bin/src-vis  
83: 2018-01-25 10:59:06 <00136> [0x00150a92] => /bin/src-vis  
84: 2018-01-25 10:59:06 <00136> [0x0014f696] => /bin/src-vis  
85: 2018-01-25 10:59:06 <00136> [0x0016cf56] => /bin/src-vis  
86: 2018-01-25 10:59:06 <00136> [0x00c65d40] => /bin/src-vis

Conserve Mode

Wird die Memory Auslastung zu hoch, geht die FortiGate in den Conserve Mode. In diesem Fall wird das Security Profile einer Policy ignoriert.

diag hardware sysinfo conserve

Dort sehe ich die Schwellwerte meiner jeweiligen FortiGate Firewall und ob der Conserve Mode aktiv ist oder nicht.