Come automatizzare gli scenari web zabbix per i vhosts?


10

Sono nuovo di Zabbix e monitoraggio aziendale. Ho appena finito di installare Zabbix 2.4.

Sto cercando di monitorare lo stato di tutti i nostri vhostsdislocati su server diversi.

Fino ad ora l'unica soluzione che mi è venuta in mente è quella di aggiungere manualmente un Web scenariohost Zabbix Server per ognuno di quelli vhostche voglio monitorare. Ma non è così utile.

Cercando in giro ho trovato un thread del forum con un'idea di funzionamento parziale: usando un templateche legge dal server di destinazione tutto vhosts(attraverso un macro) e crea un Web scenarioper ciascuno vhost.

EDIT : questa soluzione (basata su Zabbix 2.2) non funziona perché non è possibile utilizzare LLD (Low Level Discovery) con Web scenarios.

C'è una richiesta di funzionalità aperta da 14 Novembre da implementare LLDsu Web scenarios.

DOMANDA

La domanda è se esiste una soluzione o un suggerimento su come affrontare questo tipo di monitoraggio in attesa dell'implementazione della funzione, o forse il mio approccio è totalmente sbagliato.


1
Secondo il manuale , dovresti essere in grado di utilizzare il modello per gli scenari Web già in 2.2.
StephenKing,

Hai ragione il problema non è dovuto al modello che crea scenari Web. Il problema è che non è possibile utilizzare LLD con "scenari Web".
SharpEdge,

Grazie amico, è un serverfault così male?
SharpEdge,

Per quanto ne so puoi creare la tua scoperta personalizzata di basso livello?
Navern,

1
@peterh è interessante notare che, a causa della tua follia di commenti simili, la maggior parte di loro sembra rispondere a domande ben accolte con risposte ben accolte.
BE77Y,

Risposte:


1

Ho usato uno script che utilizza l'API Zabbix per creare gli scenari.

#!/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

e per i trigger:

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

0

Ecco una sceneggiatura che forse ti aiuterà. Questo script legge un elenco con URL e crea uno scenario Web direttamente nel database zabbix.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.