Comment automatiser les scénarios web zabbix pour les vhosts?

10

Je suis nouveau sur Zabbix et la surveillance d'entreprise. Je viens de terminer l'installation de Zabbix 2.4.

J'essaie de surveiller l'état de tous nos vhostsdisloqués sur différents serveurs.

Jusqu'à présent, la seule solution que j'ai trouvée consiste à ajouter manuellement un Web scenarioà l'hôte du serveur Zabbix pour chacun que vhostje veux surveiller. Mais ce n'est pas si pratique.

En cherchant autour, j'ai trouvé un fil de discussion avec une idée de fonctionnement partiel: utiliser un templatequi lit sur le serveur cible tous les vhosts(via a macro) et crée un Web scenariopour chacun vhost.

EDIT : Cette solution (basée sur Zabbix 2.2) ne fonctionne pas car il n'est pas possible d'utiliser LLD (Low Level Discovery) avec Web scenarios.

Il y a une demande de fonctionnalité ouverte depuis le 14 novembre à mettre en œuvre LLDsur Web scenarios.

QUESTION

La question est de savoir s'il existe une solution ou une suggestion sur la façon d'aborder ce type de surveillance en attendant la mise en œuvre de la fonctionnalité, ou peut-être que mon approche est totalement fausse.

Tranchant
la source
1
Selon le manuel , vous devriez être en mesure d'utiliser un modèle pour les scénarios Web déjà en 2.2.
StephenKing
Vous avez raison, le problème n'est pas dû au modèle créant des scénarios Web. Le problème est qu'il n'est pas possible d'utiliser LLD avec des "scénarios Web".
SharpEdge
Merci mec, c'est si mauvais défaut de serveur?
SharpEdge
Autant que je sache, vous pouvez créer votre propre découverte personnalisée de bas niveau?
Navern
1
@peterh fait intéressant, de votre série de commentaires similaires, la plupart d'entre eux semblent être sur des questions bien reçues avec des réponses bien reçues.
BE77Y

Réponses:

1

J'ai utilisé un script qui utilise l'API Zabbix pour créer les scénarios.

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

et pour les déclencheurs:

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
The_Pingu
la source
0

Voici un script qui vous aidera peut-être. Ce script lit une liste avec URL et crée un scénario Web directement dans la base de données zabbix.

Joao Vitorino
la source