Wie automatisiere ich Zabbix-Web-Szenarien für virtuelle Hosts?

Wie automatisiere ich Zabbix-Web-Szenarien für virtuelle Hosts?

Ich bin neu bei Zabbix und Enterprise Monitoring. Ich habe gerade die Installation von Zabbix 2.4 abgeschlossen.

Ich versuche, den Status aller unserer vhostsauf verschiedenen Servern verteilten Server zu überwachen.

Bis jetzt ist die einzige Lösung, die mir eingefallen ist, für jeden Host , den ich überwachen möchte, manuell einen Web scenariozum Zabbix-Server-Host hinzuzufügen. Aber das ist nicht so praktisch.vhost

Beim Suchen habe ich einen Forenthread mit einer teilweise funktionierenden Idee gefunden: Die Verwendung eines , das alle (über ein ) templatevom Zielserver liest und für jedes ein erstellt .vhostsmacroWeb scenariovhost

BEARBEITEN: Diese Lösung (basierend auf Zabbix 2.2) funktioniert nicht, da die Verwendung von LLD (Low Level Discovery) damit nicht möglich ist Web scenarios.

Da ist einFeatureanfrageseit 14. Nov. zur Umsetzung LLDgeöffnet Web scenarios.

FRAGE

Die Frage ist, ob es eine Lösung oder einen Vorschlag gibt, wie man diese Art der Überwachung angehen kann, während man auf die Implementierung der Funktion wartet, oder ob mein Ansatz vielleicht völlig falsch ist.

Antwort1

Ich habe zum Erstellen der Szenarien ein Skript verwendet, das die Zabbix-API nutzt.

#!/bin/bash

read -s -p "Enter AdminAPI password: " password

response=$(curl "http://192.168.0.5:10052/api_jsonrpc.php" -H "Content-Type: application/json-rpc" --data @<(cat <<EOF
{
    "jsonrpc": "2.0",
    "method": "user.login",
    "params": {
        "user": "AdminAPI",
        "password": "$password"
    },
    "id": 1,
    "auth": null
}
EOF
))


read token id <<<$(echo $response | jq -r '.result, .id')

while read -p "enter quit or an url for a new web scenario" url && [ $url != "quit" ]

do

shorturl=$(echo $url | sed 's:.*//::')

echo ---------
echo $token
echo $url
echo $shorturl
echo ---------

# the hostid is visible when you are on the host page on the zabbix interface
#le hostid est visible dans l'url de de la page du host sur zabbix ici bunsrv
curl "http://192.168.0.5:10052/api_jsonrpc.php" -H "Content-Type: application/json-rpc" --data @<(cat <<EOF
{
    "jsonrpc": "2.0",
    "method": "httptest.create",
    "params": {
        "name": "$shorturl",
        "hostid": "10120",
        "steps": [
            {
                "name": "Homepage",
                "url": "$url",
                "status_codes": 200,
                "no": 1
            }
        ]
    },
    "auth": "$token",
    "id": $id
}
EOF
)

done

und für die Auslöser:

curl "http://192.168.0.5:10052/api_jsonrpc.php" -H "Content-Type: application/json-rpc" --data @<(cat <<EOF
{
    "jsonrpc": "2.0",
    "method": "trigger.create",
    "params": [
        {
            "description": "Web scenario $shorturl failed: {ITEM.VALUE} from {HOST.NAME}",
            "expression": "{BUNSRV:web.test.fail[$shorturl].last()}<>0 and {BUNSRV:web.test.error[$shorturl].strlen()}>0",
            "priority": "2"

        }
    ],
    "auth": "$token",
    "id": $id
}
EOF
)

done

Antwort2

Hierein Skript, das Ihnen vielleicht hilft. Dieses Skript liest eine Liste mit URL und erstellt ein Web-Szenario direkt in der Zabbix-Datenbank.

verwandte Informationen