Aktionen

Zabbix:Template Windows Service Auto-Discover Zabbix 3.x - Windows Dienste Service Discovery mit Bordmitteln

Aus znilwiki

Seit Version 3.x ist Zabbix direkt über den Windows-Agenten in der Lage, Windows Dienste per Discovery zu finden.
Nachfolgend die Anleitung wie man das umsetzt - inklusive Filter für Dienste die nicht mit Überwacht werden sollen.



1 Voraussetzungen

  • Zabbix Agent 3.x oder höher auf den zu überwachenden Windows-Hosts
  • Zabbix Server Version 3.x oder höher




2 Filter

Der Discovery-Prozess wird uns alle Dienste vom Starttyp

  • Automatisch
  • Automatisch (Verzögerter Start)

liefern. Trotzdem sind da immer wieder Dienste dabei die wir gar nicht überwachen wollen.
In meiner bisherigen Lösung hatte ich deshalb eine Text-Datei genutzt in welcher die Namen von Diensten die Ignoriert werden sollen eingetragen werden konnten.

In Zabbix führen wir diese Liste nun als Regular Expression
Wie bisher bauen wir das so, das wir wahlweise

  • den Dienstnamen, z.B. "Spooler"
  • Den Anzeigenamen, z.B. "Druckwarteschlange"

in diese Liste eintragen können.

Wir gehen zu

Administration => General => Regular expressions

und erstellen eine "New regular expression"

Name: Windows_Services_to_ignore

Und in diese tragen wir für jeden Dienst der Ignoriert werden soll eine Zeile ein: ClipCapIt-170426-130139.PNG
Da wird ein "Text in Text" vergleich genutzt! Solltet Ihr den Buchstaben "e" dort eintragen so werden alle Dienste die ein "e" enthalten ignoriert!
Wenn ihr das Zeichen ^ davor setzt so muss das Wort am Anfang stehen. Es gelten alle RegEx-Regeln für POSIX-Systeme



3 Template

3.1 Discovery rule

Wir erstellen ein neues Template, meines nenne ich

znil Template native Windows Service Discovery Zabbix 3.x


Im Bereich "Discovery rules" erstellen wir eine neue Rule mit dem folgenden Eigenschaften

Name ...........: Discover Windows Service
Type ...........: Zabbix Agent (active)
Key ............: service.discovery
Update intervall: 3600
Keep lost period: 1

ClipCapIt-170426-140103.PNG

Dann wechselt oben auf Filters:
ClipCapIt-170426-140228.PNG
mit den folgenden Einstellungen:

A  {#SERVICE.STARTUP}     1
B  {#SERVICE.STARTUP}     0
C  {#SERVICE.NAME}        @Windows_Services_to_ignore
D  {#SERVICE.DISPLAYNAME} @Windows_Services_to_ignore

oben unbedingt bei "Type of calculation" auf "Custom expression" wechseln:

(A or B) and C and D


Erklärung:

  • Der Dienst muss vom Starttyp 1 ODER 0 sein (Automatischer Start & Automatischer Start verzögert)
  • UND der Dienstname muss unserem Regular Expression entsprechen
  • UND Dienst-Anzeigename muss unserem Regular Expression entsprechen




3.2 Item prototype

Wir erstellen einen neuen Item-Protypen:
ClipCapIt-170426-140943.PNG

Name ..............: Service - {#SERVICE.DISPLAYNAME} - State
Type ..............: Zabbix agent (active)
Key ...............: service.info[{#SERVICE.NAME}]
Type of information: Numeric (unsigned)
Data type .........: Decimal
Update interval ...: 120
Show value ........: Windows service state




3.3 Trigger

Und noch den passenden Trigger-Prototypen:
ClipCapIt-170426-141737.PNG

Name .....: Service {#SERVICE.DISPLAYNAME} is not running
Expression: {znil Template native Windows Service Discovery Zabbix 3.x:service.info[{#SERVICE.NAME}].last()}<>0 and {znil Template native Windows Service Discovery Zabbix 3.x:service.info[{#SERVICE.NAME}].last()}<>255
Severity .: Warning

Bei der Expression testen wir ob der Zustand NICHT 0 (= läuft) und NICHT 255 ist.
255 steht für "Dienst nicht vorhanden" - Falls der Dienst deinstalliert wird, wird so kein Alarm ausgelöst.



4 Download

Hier das Template als Download.
Die Regular expression müsst Ihr aber auf jeden Fall von Hand anlegen!
Znil_Template_native_Windows_Service_Discovery_Zabbix_3.x.xml.zip



5 Migration vom bisherigen Template

Vorher hatte ich ja immer mein eigenes Programm dafür eingesetzt (servdisc.exe) da Zabbix bis 3.x das noch nicht konnte.
Um von der alten Version auf diese neue zu migrieren gibt es 2 Möglichkeiten:

  • Ihr erstellte dieses neue Template, löscht das alte bei den Hosts und fügt stattdessen dieses hinzu. Ggf. die zugewiesenen Templates bei der Auto-Registration nicht vergessen
  • Ihr baut das schon vorhandene Template auf dieses um. Achtung: Viele Schlüsselwörter sehen ähnlich aus, haben aber andere Schreibweise! Also alles mit Copy&Paste anpassen
    • In diesem Fall wird er alle Dienste neu erkennen und die alten löschen!
    • Setzt vorher Keep lost resources period (in days) auf 0 - so löscht er die alten Dienste sofort - und kann die neuen auch wieder sofort anlegen
    • Eventuell setzt Ihr auch den Intervall runter - aber nicht vergessen den hinterher wieder hoch zu setzten.




6 Kommentare


Oli

27 Monaten zuvor
Punktzahl 0++
supper, vielen Dank!

TED

13 Monaten zuvor
Punktzahl 0++

Hallo,

ich habe eine Frage zu dem Template....

Wie kann ich denn jetzt vers. Trigger, für spezielle Dienste konfigurieren???

BLinz

13 Monaten zuvor
Punktzahl 0++

Nunja, dieses Template baut für jeden Dienst einen Trigger der auslöst wenn der Dienst nicht läuft. Trigger für spezielle Dienste??? Wenn es nur wenige Dienste betrifft - Sonderlocke für einen Dienst - kannst lokal auf dem Host den automatisch erzeugten Trigger einfach clonen und dir deinen angepassten daraus bauen. Du kannst natürlich auch einen Trigger im Template bauen der zusätzlich nach dem Dienstnamen prüft - den hätten dann aber alle Dienste mit dran pbwohl er nicht gebraucht wird.

Oder du baust dir "Oldschool" ein template welches nur gezielt nach bestimmten Diensten fragt, z.B. alle Exchange 2016 Dienste.

TED

13 Monaten zuvor
Punktzahl 0++

Ja das ist mir schon klar, und läuft bei mir auch auf ca. 200 Hosts zuverlässig. Nur habe ich div. spezielle Dienste, die ich anders triggern will / muss und hatte hier auf eine Möglichkeit einer 2. Discovery gehofft... Hier versuche ich atm erfolglos dieses ans Laufen zu bekommen.

Von daher scheint mir der Schritt "zurück" mit der ignore.txt und critical.txt schon fast wieder praktikabel :-/
Kommentar hinzufügen
znilwiki freut sich über alle Kommentare. Sofern du nicht anonym bleiben möchtest, trage deinen Namen oder deine Email-Adresse ein oder melde dich an. Du kannst das Feld auch einfach leer lassen. Bei einem Kommentar wird deine IP-Adresse zusammen mit dem Text, den angegebenen Namen bzw. der Email-Adresse in der Datenbank für die Kommentare dauerhaft gespeichert. Genaueres kannst du hier nachlesen: Datenschutzerklärung