Zabbix 3.0.4: Windows Agent mit TLS- und LLD-Laufwerken, ein einfaches SMART-Beispiel und nur eine Befehlszeile

    Wir gehen davon aus, dass der Zabbix 3.0.4-Server installiert ist. Für Agent-Installationsskripte verwenden wir laut Hardcore nur die native Windows-Befehlszeile ohne Pythons, Perlen usw., d. H. ohne zusätzliche Installationen auf dem Agentensystem. Konfigurieren Sie die Verschlüsselung mit dem PSK.

    Die externe IP des Zabbix-Servers soll 30.0.1.1 sein Die
    lokale IP des Zabbix-Servers 10.3.10.1
    Adresse des Testknotens 30.0.1.3
    Portweiterleitung wird hier nicht erwähnt . Der Knoten im Beispiel hört auf 10050, der Server auf 10051.

    Problemstellung:

    1) Vereinfachen Sie die Installation von Agenten auf Windows-Systemen.
    2) Konfigurieren Sie die Verschlüsselung zwischen dem Agenten und dem Server.
    3) Konfigurieren Sie die Festplattenerkennung (Namen, Modelle, Seriennummern, Typen) mit dem Dienstprogramm smartmontools, SMART control.
    4) Erstellen Sie eine skalierbare Bereitstellungsskriptvorlage.
    5) Richten Sie eine Warnung ein.
    6) Verwenden Sie nur die Befehlszeile.

    Aus irgendeinem Grund haben Windows-Agenten noch keine TLS-Unterstützung, aber es gibt kompilierte Versionen, die hier heruntergeladen werden können . Die Diskussion .

    Auspacken. Wir brauchen nur das bin-Verzeichnis. Wir brauchen keine Standardkonfiguration.

    Erstellen Sie das zabbix- Verzeichnis und kopieren Sie das bin- Verzeichnis hineinvom ausgepackten Agenten. Als Nächstes erstellen Sie ein Verzeichnis zabbix Unterverzeichnisse die conf, Disketten, Protokollordner, psk, scripts, smartmontools . Wir werden sofort entscheiden, dass wir den zabbix- Ordner im Stammverzeichnis von Volume C: \ ablegen.


    die conf - es wird eine Datei config
    Platten - hier Informationen zu den Discs im JSON erzeugen
    Ordner Protokolle - Protokolle
    pks - dort liegen wird Z_agent.psk Datei , um die Pre-Shared Key enthält
    scripts - Skripte
    smartmontools - setzen hier den gleichen Namen des Programms SMART

    Bereiten Sie sofort die PSK-Schlüssel und die Datendatei vor. Erstellen Sie die pskgen4ik-Datei auf dem Server:

    #!/bin/bash
    echo -n  "Сколько ключей нужно? : "
    read LIMIT
    a=1
    echo \# > /home/appliance/agent_psk
    while [ "$a" -le $LIMIT ]
    do
      openssl rand -hex 64 >> /home/appliance/agent_psk
      let "a++"
    done
    less /home/appliance/agent_psk

    Wir speichern, machen es ausführbar (chmod + x), führen es aus und kopieren das Ergebnis in eine Datendatei. Ich werde ein Beispiel für Excel zur Veranschaulichung geben. Sie können die Datenbank verwenden. Etwa so:



    Nach dem Erstellen der Agentenkonfiguration füllen wir das Feld Hostname aus (es sei denn, es gibt bereits eine Liste). Wir erfinden und fügen eindeutige PSK-IDs hinzu. Wir speichern die Datendatei, erstellen ein Backup, beschränken den Zugriff darauf strikt und löschen die Datei agent_psk. Wir haben lediglich eine Datendatei mit Schlüsseln und Bezeichnern, die wir verwenden werden.

    SMART


    Um Informationen über Festplatten und deren SMART zu erhalten, verwenden wir das Dienstprogramm Smartmontools . Ich nehme die neueste Version 6.5. In dieser Version werden normalerweise USB-Pässe erkannt und neue Manifeste für 10 KB. Über alle Korrekturen in der Veröffentlichung .

    Laden Sie den Ordner zabbix \ smartmontools herunter und werfen Sie ihn hinein

    Bekanntschaft mit dem Dienstprogramm.


    Siehe die Liste der zugeordneten Laufwerke:

    c:\>"Program Files"\smartmontools\bin\smartctl.exe --scan 


    Der Schalter –d zeigt den Festplattentyp an.

    Wir interessieren uns für das Laufwerk / dev / sda. Bisher hat er wenig zu sagen, außer dass er vom Typ ATA ist und höchstwahrscheinlich bootfähig.

    Wir schauen uns die Informationen über ihn an:

    c:\>"Program Files"\smartmontools\bin\smartctl.exe -i /dev/sda -d ata 


    Schon interessanter. Wie Sie sehen, ist SMART deaktiviert. Schalten Sie es ein:

    c:\>"Program Files\smartmontools\bin\smartctl.exe" --smart=on --offlineauto=on --saveauto=on /dev/sda

    Wir sehen uns die SMART-Attributtabelle an .

    c:\>"Program Files"\smartmontools\bin\smartctl.exe -A /dev/sda -d ata


    RAID kann die Smart-Tabelle nicht sehen, aber wir können den Integritätsstatus abrufen.

    Wir betrachten SMART Health:

    c:\>"Program Files"\smartmontools\bin\smartctl.exe -H /dev/sda -d ata


    Jetzt muss für die verbleibenden 1000 Datenträger dasselbe getan werden.) Das Erstellen von Vorlagen für jeden Datenträger kommt nicht in Frage. Außerdem muss ich beispielsweise noch das Modell und die Seriennummer jedes Datenträgers im Bericht abrufen. Zabbix LLD kommt zur Rettung .

    Da Zabbix Daten mit dem von seiner API bereitgestellten JSON-Protokoll verarbeiten kann , generieren wir die erforderlichen Informationen von smartmontools im JSON-Format und übertragen sie passiv an den Server.

    Wir beginnen mit der Erstellung von Skripten. Zunächst werden Erkennungsmakros erstellt und die Daten festgelegt:
    Makro {#DISKPORT} - der Name der Festplatte im System (/ dev / sda, / dev / sdb usw.),
    Makro {#DISKTYPE} - der Festplattentyp (ata, scsi, sat, csmi usw.),
    Makro {#DISKMODEL} - Festplattenmodell,
    Makro {#DISKSN} - Seriennummer.

    Erstellen Sie ein Verzeichnis zabbix \ scripts Datei DiskInfoGenerationJSON.cmd wie folgt:

    @echo off
    echo @echo off > c:\zabbix\disks\disks.cmd
    echo echo {"data": >> c:\zabbix\disks\disks.cmd
    echo echo    [ >> c:\zabbix\disks\disks.cmd
    for /F "tokens=1,3" %%a in ('C:\"Program Files"\smartmontools\bin\smartctl.exe --scan') ^
    do (for %%s in ("Device Model" "Product") ^
    do (for /F "tokens=2*" %%c in ('C:\"Program Files"\smartmontools\bin\smartctl.exe -i %%a -d %%b ^| find %%s ') ^
    do (for %%i in ("Serial Number") do (for /F "tokens=3*" %%k in ('C:\"Program Files"\smartmontools\bin\smartctl.exe -i %%a -d %%b ^| find %%i ') ^
    do echo echo      {"{#DISKPORT}":"%%a","{#DISKTYPE}":"%%b","{#DISKMODEL}":"%%d","{#DISKSN}":"%%k"},>> c:\zabbix\disks\disks.cmd))))
    echo echo      {"{#SMARTV}":"Smartctl 6.5"}>> c:\zabbix\disks\disks.cmd
    echo echo    ] >> c:\zabbix\disks\disks.cmd
    echo echo } >> c:\zabbix\disks\disks.cmd
    

    Save DiskInfoGenerationJSON.cmd

    Ich konnte das Problem des letzten Kommas mit cmd nicht vereinfachen (ja, ich habe nicht damit begonnen, es zu lösen, weil das verrücktes Zeug ist), in der Zeile ...

    {"{#DISKPORT}":"%%a","{#DISKTYPE}":"%%b","{#DISKMODEL}":"%%d","{#DISKSN}":"%%k"},

    ... was gegen die JSON-Syntax verstößt. Also habe ich gerade die Zeile {"{#SMARTV}": "Smartctl 6.5"} hinzugefügt , die den Körper ohne Komma schließt.

    Wenn Sie DiskInfoGenerationJSON.cmd ausführen . Als Ergebnis sollte die Datei c: \ zabbix \ disks \ disks.cmd mit folgendem Inhalt abgerufen werden :



    Erstellen Sie die Datei GetSmartAllDisk.cmd im Verzeichnis zabbix \ scripts mit folgendem Inhalt:

    rem включаем СМАРТ у всех дисков которые это позволят:
    for /F "tokens=1" %%a in ('C:\"Program Files"\smartmontools\bin\smartctl.exe --scan') ^
    do "C:\Program Files\smartmontools\bin\smartctl.exe" --smart=on --offlineauto=on --saveauto=on %%a

    Speichern GetSmartAllDisk.cmd

    Config Generation


    Die Generierung wird in zwei Teile unterteilt: Verbindungseinstellungen und Benutzerparameter.

    Erstellen einer Konfiguration


    Wir analysieren die zukünftige Agentenkonfigurationsdatei:

    LogFile=C:\zabbix\logs\logs.log  	# журнал логов
    LogFileSize=100 			# ограничение размера файла логов
    Server=30.0.1.1			# сервер пассивных проверок
    ServerActive=30.0.1.1		# сервер активных проверок
    StartAgents=3 			# кол-во пре-форков
    Timeout=30 				# не более 30 сек на обработку
    Hostname=				# уникальное имя хоста
    # TLS
    TLSConnect=psk			# тип исходящих подключений (активная проверка)	
    TLSAccept=psk			# тип входящих подключений (пассивная проверка)	
    TLSPSKFile=C:\zabbix\psk\Z_agent.psk	# путь к файлу с pre-shared ключом
    TLSPSKIdentity=			# уникальный идентификатор
    

    Für jeden Host sind die Felder Hostname = und TLSPSKIdentity = in der Konfigurationsdatei eindeutig . Ebenso der Pre-Shared Key in der Datei zabbix \ psk \ Z_agent.psk . Deshalb definieren wir diese Werte in Variablen.

    Im Katalog zabbix \ Scripts erstellen Datei AgentConfigGeneration.cmd :

    @echo off
    chcp 866 > nul
    set /P CLIENT="Enter Organization name: "
    set /P PSKID=" Enter PSKIdentity: "
    set /P PSKkey="Enter PSKkey: "
    rem Генерация конфига
    @echo # zabbix_agent 3.0.1> C:\zabbix\conf\zabbix_agentd.conf
    @echo. >>C:\zabbix\conf\zabbix_agentd.conf
    @echo %PSKkey%>>C:\zabbix\psk\Z_agent.psk
    @echo LogFile=C:\zabbix\logs\logs.log >> C:\zabbix\conf\zabbix_agentd.conf
    @echo LogFileSize=100 >> C:\zabbix\conf\zabbix_agentd.conf
    @echo Server=30.0.1.1 >> C:\zabbix\conf\zabbix_agentd.conf
    @echo ServerActive=30.0.1.1 >> C:\zabbix\conf\zabbix_agentd.conf
    @echo StartAgents=3 >> C:\zabbix\conf\zabbix_agentd.conf
    @echo Timeout=30 >> C:\zabbix\conf\zabbix_agentd.conf
    @echo Hostname=%CLIENT%.%COMPUTERNAME%>> C:\zabbix\conf\zabbix_agentd.conf
    @echo. >> C:\zabbix\conf\zabbix_agentd.conf
    @echo ##### TLS ###########>> C:\zabbix\conf\zabbix_agentd.conf
    @echo TLSConnect=psk>> C:\zabbix\conf\zabbix_agentd.conf
    @echo TLSAccept=psk>> C:\zabbix\conf\zabbix_agentd.conf
    @echo TLSPSKFile=C:\zabbix\psk\Z_agent.psk>> C:\zabbix\conf\zabbix_agentd.conf
    @echo TLSPSKIdentity=%PSKID%>> C:\zabbix\conf\zabbix_agentd.conf
    @echo. >> C:\zabbix\conf\zabbix_agentd.conf

    Alles ist einfach. Geben Sie beim Start den Namen der Organisation ein, z. B. Organisation1, und rufen Sie den Hostnamen in der Konfiguration in der Form " Organisation1.Hostname " ab. Innerhalb des Netzwerks einer Organisation ist die Verwendung identischer Hostnamen generell ausgeschlossen, sodass wir eindeutige Namen haben. Geben Sie als Nächstes die PSK-ID aus der zuvor kompilierten Datendatei und den Schlüssel ein. Bisher starten wir aber noch nichts.

    Hinzufügen von benutzerdefinierten Parametern zur Konfiguration


    Im Katalog zabbix \ Scripts erstellen Datei UserParameters.txt , die die benutzerdefinierten Einstellungen enthält (Userparameter = <key>)

    ##### Обнаружение дисков.
    UserParameter=HDD.discovery,for /F "tokens=*" %a in ('C:\zabbix\disks\disks.cmd') do @echo %a
    ##### S.M.A.R.T.
    # RAW_VALUE
    UserParameter=HDD.raw[*], for /F "tokens=10" %a in ('C:\"Program Files"\smartmontools\bin\smartctl.exe -A $1 -d $2 ^| find "$3"') do @echo %a
    # VALUE
    UserParameter=HDD.value.[*], for /F "tokens=4" %a in ('C:\"Program Files"\smartmontools\bin\smartctl.exe -A $1 -d $2^| find "$3"') do @echo %a
    # WORST
    UserParameter=HDD.worst.[*], for /F "tokens=5" %a in ('C:\"Program Files"\smartmontools\bin\smartctl.exe -A $1 -d $2 ^| find "$3"') do @echo %a
    # THRESOLD
    UserParameter=HDD.thresh.[*], for /F "tokens=6" %a in ('C:\"Program Files"\smartmontools\bin\smartctl.exe -A $1 -d $2 ^| find "$3"') do @echo %a
    # WHEN_FAILED
    UserParameter=HDD.when.failed.[*], for /F "tokens=9" %a in ('C:\"Program Files"\smartmontools\bin\smartctl.exe -A $1 -d $2 ^| find "$3"') do @echo %a
    # HEALTH Status
    UserParameter=HDD.health.[*], for /F "tokens=6" %a in ('C:\"Program Files"\smartmontools\bin\smartctl.exe -H $1 -d $2 ^| find "test"') do @echo %a
    

    Speichern Sie UserParameters.txt . Wir haben uns Schlüssel und Schleifen ausgedacht, um Daten abzurufen. Fügen Sie am Ende der Datei AgentConfigGeneration.cmd die folgende Zeile hinzu:

    type C:\zabbix\scripts\UserParameters.txt>> C:\zabbix\conf\zabbix_agentd.conf

    Wir müssen den Port auf dem Host noch öffnen, wenn die Firewall aktiviert ist. Erstellen Sie die Datei OpenLocalPort.cmd

    @echo off
    set localportname=10050
    set rulename=zabbix
    set dirrname=in
    set protocolname=TCP
    set actionname=allow
    netsh advfirewall firewall add rule name=%rulename% dir=%dirrname% action=%actionname% protocol=%protocolname% localport=%localportname%

    Also haben wir die Skripte geschrieben. Folgendes bekommen wir:


    Jetzt müssen Sie die Startreihenfolge für diese Elemente festlegen:

    1) Variablen
    eingeben 2) smartmontools im unbeaufsichtigten Modus installieren
    3) Zabbix Agent-Dienst
    installieren 4) Konfiguration mit Benutzerparametern erstellen - AgentConfigGeneration.cmd
    5) Liste der Festplatten erstellen - DiskInfoGenerationJSON.cmd
    6) SMART aktivieren - GetSmartAllDisk.cmd.cmd
    7) Öffnen Sie den Port - OpenLocalPort.cmd
    8) Starten Sie den Zabbix Agent-Dienst.

    Erstellen Sie die Datei INSTALL_AGENT.cmd im Stammverzeichnis des zabbix-Verzeichnisses und kombinieren Sie alle Schritte unserer Skripte darin:

    @echo off
    chcp 866 > nul
    set /P CLIENT="Client NAME: "
    set /P PSKID="PSKIdentity: "
    set /P PSKkey="Enter PSKkey: "
    cls
    rem Устанавливаем smartmontools в тихом режиме
    C:\zabbix\smartmontools\smartmontools-6.5-1.win32-setup.exe /S
    rem Открывает порт 10050 в брандмауэре
    set localportname=10050
    set rulename=zabbix
    set dirrname=in
    set protocolname=TCP
    set actionname=allow
    netsh advfirewall firewall add rule name=%rulename% dir=%dirrname% action=%actionname% protocol=%protocolname% localport=%localportname%
    echo "port %localportname% was open on host %hostname%"
    rem создание конфига
    @echo # zabbix_agent 3.0.1> C:\zabbix\conf\zabbix_agentd.conf
    @echo. >>C:\zabbix\conf\zabbix_agentd.conf
    @echo %PSKkey%>C:\zabbix\psk\Z_agent.psk
    @echo LogFile=C:\zabbix\logs\logs.log >> C:\zabbix\conf\zabbix_agentd.conf
    @echo LogFileSize=100 >> C:\zabbix\conf\zabbix_agentd.conf
    @echo Server=30.0.1.1 >> C:\zabbix\conf\zabbix_agentd.conf
    @echo ServerActive=30.0.1.1 >> C:\zabbix\conf\zabbix_agentd.conf
    @echo StartAgents=3 >> C:\zabbix\conf\zabbix_agentd.conf
    @echo Timeout=30 >> C:\zabbix\conf\zabbix_agentd.conf
    @echo Hostname=%CLIENT%.%COMPUTERNAME%>> C:\zabbix\conf\zabbix_agentd.conf
    @echo. >> C:\zabbix\conf\zabbix_agentd.conf
    @echo ##### TLS ###########>> C:\zabbix\conf\zabbix_agentd.conf
    @echo TLSConnect=psk>> C:\zabbix\conf\zabbix_agentd.conf
    @echo TLSAccept=psk>> C:\zabbix\conf\zabbix_agentd.conf
    @echo TLSPSKFile=C:\zabbix\psk\Z_agent.psk >> C:\zabbix\conf\zabbix_agentd.conf
    @echo TLSPSKIdentity=%PSKID%> C:\zabbix\conf\zabbix_agentd.conf
    @echo. >> C:\zabbix\conf\zabbix_agentd.conf
    rem Добавляем пользовательские параметры
    type C:\zabbix\scripts\UserParameters.txt>> C:\zabb\conf\zabbix_agentd.conf
    rem Создание списка дисков
    @echo off
    echo @echo off > c:\zabbix\disks\disks.cmd
    echo echo {"data": >> c:\zabbix\disks\disks.cmd
    echo echo    [ >> c:\zabbix\disks\disks.cmd
    for /F "tokens=1,3" %%a in ('C:\"Program Files"\smartmontools\bin\smartctl.exe --scan') ^
    do (for %%s in ("Device Model" "Product") ^
    do (for /F "tokens=2*" %%c in ('C:\"Program Files"\smartmontools\bin\smartctl.exe -i %%a -d %%b ^| find %%s ') ^
    do (for %%i in ("Serial Number") do (for /F "tokens=3*" %%k in ('C:\"Program Files"\smartmontools\bin\smartctl.exe -i %%a -d %%b ^| find %%i ') ^
    do echo echo      {"{#DISKPORT}":"%%a","{#DISKTYPE}":"%%b","{#DISKMODEL}":"%%d","{#DISKSN}":"%%k"},>> c:\zabbix\disks\disks.cmd))))
    echo echo      {"{#SMARTV}":"Smartctl 6.5"}>> c:\zabbix\disks\disks.cmd
    echo echo    ] >> c:\zabbix\disks\disks.cmd
    echo echo } >> c:\zabbix\disks\disks.cmd
    rem Включение смарт на всех дисках
    for /F "tokens=1" %%a in ('C:\"Program Files"\smartmontools\bin\smartctl.exe --scan') ^
    do "C:\Program Files\smartmontools\bin\smartctl.exe" --smart=on --offlineauto=on --saveauto=on %%a
    rem Установка службы Zabbix Agent
    if DEFINED ProgramFiles(x86) (goto :x64) else (goto :x86)
    :x64
    C:\zabbix\bin\win64\zabbix_agentd.exe -i -c C:\zabbix\conf\zabbix_agentd.conf
    goto :NEXT
    :x86
    C:\zabbix\bin\win32\zabbix_agentd.exe -i -c C:\zabbix\conf\zabbix_agentd.conf
    goto :NEXT
    :NEXT
    rem Запуск службы Zabbix Agent
    net start "Zabbix Agent"
    echo.
    echo OK!
    @echo ------------------------------------
    @echo Hostname: %CLIENT%.%COMPUTERNAME%
    @echo ------------------------------------
    @echo.
    Pause

    Wir packen den zabbix-Katalog in das SFX-Archiv und verschlüsseln ihn bei Bedarf mit einem Passwort

    Ein Beispiel.


    Wir haben einen Server in der Organisation "Organisation 1". Wir haben die Datei zabbix.exe auf dem Server abgelegt und in das Stammverzeichnis von Volume C: \

    Run INSTALL_AGENT.cmd als Administrator entpackt. Geben Sie den Namen der Organisation ohne Leerzeichen ein, kopieren Sie die PSK-ID und den Schlüssel aus der Datendatei:


    Geben Sie ein:


    Überprüfen Sie die Protokolldatei C: \ zabbix \ logs \ logs.log:


    Kopieren Sie den Hostnamen "Organization1.SUNSET" in die Datendatei:


    Und so weiter mit jedem Host. Rufen Sie nach dem Ausfüllen der Datei das Zabbix-Büro auf ( 10.3.10.1/zabbix ) und fügen Sie Gruppen und Knoten hinzu. Markieren Sie in den Hostverschlüsselungseinstellungen PSK und warten Sie online.



    Wir warten ein paar Sekunden:


    Über Verschlüsselung und Einschränkungen

    LLD


    Zur Änderung den Schrank russifizieren)

    Erstellen Sie eine SMART-Vorlage und eine Gruppe von Datenelementen. Ich habe zum Beispiel die folgenden Gruppen für die Attribute von smart erstellt:


    Wählen Sie "Erkennungsregeln" und erstellen Sie eine Regel:


    Geben Sie im Feld "Schlüssel" denselben Benutzerparameter an, den wir aus der Datei C: \ zabbix \ scripts \ UserParameters.txt erfunden haben

    UserParameter=HDD.discovery,for /F "tokens=*" %a in ('C:\zabbix\disks\disks.cmd') do @echo %a

    Und auf der Registerkarte "Filter" schreiben wir unsere Makros aus der erstellten Datei c: \ zabbix \ disks \ disks.cmd und klicken auf "Hinzufügen".



    Lassen Sie uns "Prototypen von Datenelementen" erstellen


    Ich werde zum Beispiel zwei Prototypen des Attributs Spin_Retry_Count erstellen und der Datenelementgruppe Pre-Fail hinzufügen: Spin_Retry_Count. Der erste erhält einen VALUE- Wert, der zweite THRESHOLD- Wert aus der Smart-Attributtabelle für jedes erkannte Laufwerk. Schauen
    wir uns noch einmal die Datei C: \ zabbix \ scripts \ UserParameters.txt (oder die bereits erstellte Konfiguration) an. Und mal sehen, in welchen Zyklen wir die Daten bekommen, die wir brauchen:

    UserParameter=HDD.value.[*], for /F "tokens=4" %a in ('C:\"Program Files"\smartmontools\bin\smartctl.exe -A $1 -d $2^| find "$3"') do @echo %a
    UserParameter=HDD.thresh.[*], for /F "tokens=6" %a in ('C:\"Program Files"\smartmontools\bin\smartctl.exe -A $1 -d $2 ^| find "$3"') do @echo %a

    Wie Sie dem Skript für die Schlüssel HDD.value. [*] Und HDD.thresh entnehmen können. [*] Wir benötigen drei Argumente: $ 1 - Festplatte (/ dev / *), $ 2 - Festplattentyp (ata, sat usw.). ), $ 3 - Attribut (in unserem Fall Spin_Retry_Count). Infolgedessen erhält der Schlüssel das Format HDD.value. [$ 1, $ 2, $ 3]. Für unsere Festplatte / dev / sda vom Typ "ata" ist dies beispielsweise HDD.value. [/ Dev / sda, ata, Spin_Retry_Count]. Da wir jedoch für jedes erkannte Laufwerk Makros erstellt haben, lautet das Schlüsselformat im Prototyp-Datenelement HDD.value. [{# DISKPORT}, {# DISKTYPE}, Spin_Retry_Count] . Dieser Schlüssel durchläuft jede Festplatte mit diesem Attribut.

    Übrigens können wir den Schlüssel vom Server mit zabbix_get überprüfen

    root@zabbix:~# zabbix_get -s 30.0.1.3 -k HDD.value.[/dev/sda,ata,Spin_Retry_Count] --tls-connect psk --tls-psk-identity "ZP10001AA" --tls-psk-file /root/Organization1.SUNSET.psk
    


    Und auch für die Schwelle:


    Also erstellen wir unseren Datenprototyp für VALUE und verwenden die passive Verifikation:



    Ebenso erstellen wir einen Prototyp für Threshold. Als Ergebnis haben wir:



    Erstellen Sie einen "Trigger-Prototyp". Geben Sie zum Beispiel der Übersichtlichkeit

    halber einen Namen: SMART: ACHTUNG! Laufwerk {#DISKMODEL} ({#DISKPORT} - {#DISKTYPE}). Ein Ausfall und / oder ein vollständiger Festplattenausfall in den nächsten 24 Stunden wird erwartet! Der Wert des Attributs ist schlechter als der kritische Schwellenwert.

    Im "Feldausdruck" schreiben wir die Bedingung:

    ({S.M.A.R.T.:HDD.value.[{#DISKPORT},{#DISKTYPE},Spin_Retry_Count].last()}-{S.M.A.R.T.:HDD.thresh.[{#DISKPORT},{#DISKTYPE},Spin_Retry_Count].last()})<0

    Der Punkt ist, dass Sie ein Problem ausgeben müssen, wenn Value kleiner als Threshold ist. Last () - zeigt den zuletzt empfangenen Wert an ( mehr über Funktionen). In das Feld "Beschreibung" schreiben Sie zum Beispiel:

    Диск: {#DISKPORT}
    Тип дика: {#DISKTYPE}
    Модель: {#DISKMODEL}
    Серийный номер: {#DISKSN}
    Объяснение:
    Threshold — это порог: если Value больше Threshold — атрибут в порядке; если меньше либо равен — с атрибутом проблемы. Именно по такому критерию утилиты, читающие S.M.A.R.T., выдают отчёт о состоянии диска либо отдельного атрибута вроде «Good» или «Bad».
    Если VALUE стало меньше THRESH в случае Pre-fail атрибута - существует большая вероятность, что диск вылетит в ближайшие 24 часа.
     / Spin_Retry_Count /
    Число повторных попыток раскрутки дисков до рабочей скорости в случае, если первая попытка была неудачной. Если значение атрибута увеличивается, то велика вероятность неполадок с механической частью.

    Die Wichtigkeit, "Außerordentliches" zu setzen


    Wir gehen davon aus, dass die Warnung von EMAIL konfiguriert wird. Wenn nicht, dann hier .

    Gehen Sie zu Einstellungen> Aktionen. Erstellen Sie ein Berichtsformular. Klicken Sie auf "Aktion erstellen".

    Name : Problemberichte
    Standardbetreff: PROBLEMA! [{HOST.NAME}] - {TRIGGER.NAME} ({EVENT.ID})
    Standardnachricht:

    Обнаружена проблема!
    Категория: {TRIGGER.SEVERITY}
        Узел: {HOST.NAME}
        Описание узла: {HOST.DESCRIPTION}
        Дата: {EVENT.DATE}
        Время: {EVENT.TIME}
    {TRIGGER.NAME}
    Описание события:
    {TRIGGER.DESCRIPTION}
    Проблема получена на основе сл. данных:
    1. {ITEM.NAME1} = {ITEM.VALUE1}. Ключ: {ITEM.KEY1}
    2. {ITEM.NAME2} = {ITEM.VALUE2}. Ключ: {ITEM.KEY2}
    {TRIGGER.EXPRESSION}
    Event ID: {EVENT.ID}
    

    Füllen Sie die Wiederherstellungsnachricht aus:
    Wiederherstellungszweig: OK. [{HOST.NAME}] Nachricht wiederherstellen
    :

    Проблема события "{EVENT.ID}" сейчас устранена.
        Узел: {HOST.NAME}
        Описание узла: {HOST.DESCRIPTION}
        Дата и время события: {EVENT.DATE} {EVENT.TIME}
        Дата и время восстановления: {EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
    Ранее была проблема: {TRIGGER.NAME}
    Категория: {TRIGGER.SEVERITY}
    Нынешний статус: ИСПРАВЛЕНО
    Данные:
    1. {ITEM.NAME1} = {ITEM.VALUE1}. Ключ: {ITEM.KEY1}
    2. {ITEM.NAME2} = {ITEM.VALUE2}. Ключ: {ITEM.KEY2}
    URL: {TRIGGER.URL}
    Event ID: {EVENT.ID}
    

    Aktivieren Sie "Aktivieren".

    Gehen Sie zur Registerkarte "Bedingungen" und füllen Sie sie wie folgt aus:


    Als Beispiel habe ich nur "Emergency" -Probleme genannt. Die Bedingungen können nach Herzenslust festgelegt werden.

    Wir gehen zur Registerkarte „Operations“ und fügen entweder unsere Benutzergruppe hinzu oder geben nur uns selbst an. Grundsätzlich gibt es nichts zu kommentieren.


    Jetzt werde ich einen Fehler simulieren. Zum Beispiel habe ich alle Attribute in der richtigen Reihenfolge, also ändere ich den Wert im Trigger und setze ihn auf "größer als Null".

    ({S.M.A.R.T.:HDD.value.[{#DISKPORT},{#DISKTYPE},Spin_Retry_Count].last()}-{S.M.A.R.T.:HDD.thresh.[{#DISKPORT},{#DISKTYPE},Spin_Retry_Count].last()})>0

    Ich glaube, ich muss keine Arithmetik erklären.

    Wir warten einige Zeit und bekommen das Problem:


    Und nach ein paar Sekunden kommt eine Nachricht in der Post an:


    Nach der Wiederherstellung erhalten wir die folgende Nachricht:


    Wenn es Fehler gibt oder etwas einfacher geht, lassen Sie es uns bitte wissen! Ich habe ein Thema für ein paar Stunden mit Screenshots geschrieben, als hätte ich es erfolgreich überprüft.

    Laden Sie die fertige

    PS- Vorlage herunter : Es ist ein besonderes Ereignis, wenn zabbix eine Nachricht an den Lieferanten sendet, in der eine neue Festplatte in Rechnung gestellt wird, oder wenn beispielsweise der Toner im Drucker ausgeht, ein Support-Ticket zum Nachfüllen der Patrone auslöst, aber das ist eine andere Geschichte ...

    Jetzt auch beliebt: