Aktionen

Zabbix:Template Windows Top 5 Prozesse ermitteln: Unterschied zwischen den Versionen

Aus znilwiki

(Die Seite wurde neu angelegt: „<u>'''Changelog:'''</u><br> * 07.11.2020 erste Version ---- ==Vorwort== Ich hatte gerade privat das Problem das einer meiner Windows-Server zwischendurch stän…“)
 
KKeine Bearbeitungszusammenfassung
Zeile 11: Zeile 11:
Nachfolgend findet Ihr die Schritt für Schritt Anleitung, am Ende gibt es auch ein Download des fertigen Templates.<br>
Nachfolgend findet Ihr die Schritt für Schritt Anleitung, am Ende gibt es auch ein Download des fertigen Templates.<br>
----
----
==Das Item==
==Das Grund-Item (RAW JSON Item)==
Ich arbeite inzwischen gerne mit JSONs in Zabbix. Auf die Art kann ich hier zum Beispiel alle Werte der Top 5 Prozesse in einem Rutsch übergeben und mir trotzdem daraus 15 Werte holen.<br>
Ich arbeite inzwischen gerne mit JSONs in Zabbix. Auf die Art kann ich hier zum Beispiel alle Werte der Top 5 Prozesse in einem Rutsch übergeben und mir trotzdem daraus 15 Werte holen.<br>
Früher hätte ich das mit einem Skript und 15 mal <code>zabbix_sender.exe</code> Aufrufen geholfen - das hier finde ich viel eleganter.<br>
Früher hätte ich das mit einem Skript und 15 mal <code>zabbix_sender.exe</code> Aufrufen geholfen - das hier finde ich viel eleganter.<br>
Zeile 44: Zeile 44:
Damit ist das Grund-Item fertig.<br>
Damit ist das Grund-Item fertig.<br>
----
----
==Die Einzel-Items für die Top 5 Prozesse==
Das Grund-Item liefert uns ein JSON wie in diesem Beispiel:<br>
<source lang="JSON">
[
{
"Name": "BlueIris",
"IDProcess": 19000,
"PercentProcessorTime": 73
},
{
"Name": "rsync#14",
"IDProcess": 18980,
"PercentProcessorTime": 11
},
{
"Name": "System",
"IDProcess": 4,
"PercentProcessorTime": 5
},
{
"Name": "WmiPrvSE#1",
"IDProcess": 6400,
"PercentProcessorTime": 5
},
{
"Name": "svchost#14",
"IDProcess": 1688,
"PercentProcessorTime": 0
}
]
</source>

Version vom 7. November 2020, 12:37 Uhr

Changelog:

  • 07.11.2020 erste Version

Vorwort

Ich hatte gerade privat das Problem das einer meiner Windows-Server zwischendurch ständig eine hohe CPU-Last meldet (bei mir ein "über 90% CPU Auslastung für mehr als 5 Minuten").
Und immer wenn ich nachgesehen habe war natürlich alles in Ordnung ...

Also habe ich mir überlegt ständig die 5 Prozesse mit der höchsten CPU-Auslastung zu ermitteln.
Dann muss ich bei einem Alarm ja nur die Werte mit dieser Liste abgleichen bzw. kann diese ja ggf. im Trigger gleich mit angeben.

Nachfolgend findet Ihr die Schritt für Schritt Anleitung, am Ende gibt es auch ein Download des fertigen Templates.


Das Grund-Item (RAW JSON Item)

Ich arbeite inzwischen gerne mit JSONs in Zabbix. Auf die Art kann ich hier zum Beispiel alle Werte der Top 5 Prozesse in einem Rutsch übergeben und mir trotzdem daraus 15 Werte holen.
Früher hätte ich das mit einem Skript und 15 mal zabbix_sender.exe Aufrufen geholfen - das hier finde ich viel eleganter.
Das JSON zerpflückt der Zabbix-Server dann in die Einzelwerte.

Variante 1 per Userparameter

Zunächst müssen wir dem ZabbixAgenten einen neuen Befehl beibringen:
Auf eurem Windows-System öffnet Ihr die Konfigurationsdatei eures Zabbix-Agenten ( zabbix_agentd.win.conf )und fügt folgende Zeile ein:

UserParameter=znil.Top5Processes,powershell "Get-WmiObject Win32_PerfFormattedData_PerfProc_Process | where-object { $_.Name -ne \"_Total\" -and $_.Name -ne \"Idle\"} | Sort-Object PercentProcessorTime -Descending | select -First 5 | select Name,IDProcess,PercentProcessorTime | ConvertTo-Json -Compress"


Danach den Dienst des Zabbix-Agenten neu starten.
Lokal testen könnt Ihr das mit folgendem Befehl:

zabbix_agentd.exe -c zabbix_agentd.win.conf -t znil.Top5Processes

Den solltet Ihr im Verzeichnis des Zabbix-Agenten ausführen. Mit -c wird die Konfigurationsdatei angegeben.

ClipCapIt-201107-113922.PNG


Dann erstellen wir in Zabbix ein Item:

ClipCapIt-201107-114435.PNG
Name:                   RAW JSON - Top 5 Processes
Type:                   Zabbix agent (active)
Key:                    znil.Top5Processes
Type of information:    Text
Update interval:        1m
History storage period: 1d
New application:        Top 5 Processes

Das Item erstellt Ihr entweder in einem Template und weißt es einem Host zu (empfohlen) oder Ihr erstellt es direkt auf einem Host.
Nach einer Weile sollte es einen JSON als Wert zurück liefern:

ClipCapIt-201107-115315.PNG


ClipCapIt-201107-115350.PNG


Damit ist das Grund-Item fertig.


Die Einzel-Items für die Top 5 Prozesse

Das Grund-Item liefert uns ein JSON wie in diesem Beispiel:

[
	{
		"Name": "BlueIris",
		"IDProcess": 19000,
		"PercentProcessorTime": 73
	},
	{
		"Name": "rsync#14",
		"IDProcess": 18980,
		"PercentProcessorTime": 11
	},
	{
		"Name": "System",
		"IDProcess": 4,
		"PercentProcessorTime": 5
	},
	{
		"Name": "WmiPrvSE#1",
		"IDProcess": 6400,
		"PercentProcessorTime": 5
	},
	{
		"Name": "svchost#14",
		"IDProcess": 1688,
		"PercentProcessorTime": 0
	}
]