¿Cómo automatizar escenarios web de zabbix para vhosts?

¿Cómo automatizar escenarios web de zabbix para vhosts?

Soy nuevo en Zabbix y en el monitoreo empresarial. Acabo de terminar de instalar Zabbix 2.4.

Estoy intentando monitorear el estado de todos nuestros vhostsdislocados en diferentes servidores.

Hasta ahora, la única solución que se me ocurrió es agregar manualmente un Web scenariohost al servidor Zabbix para cada uno vhostque quiero monitorear. Pero no es tan útil.

Buscando, encontré un hilo del foro con una idea de funcionamiento parcial: usar a templateque lee desde el servidor de destino todos los vhosts(a través de a macro) y crea un Web scenariopara cada uno vhost.

EDITAR: Esta solución (basada en Zabbix 2.2) no funciona porque no es posible utilizar LLD (Low Level Discovery) con Web scenarios.

Hay unSolicitud de funciónabierto desde el 14 de noviembre para implementarse LLDel Web scenarios.

PREGUNTA

La pregunta es si hay alguna solución o sugerencia sobre cómo abordar este tipo de monitoreo mientras se espera la implementación de la función, o tal vez mi enfoque sea totalmente incorrecto.

Respuesta1

Utilicé un script que utiliza la API de Zabbix para crear los escenarios.

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

y para los desencadenantes:

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

Respuesta2

Aquíun script que tal vez te ayude. Este script lee una lista con URL y crea un escenario web directamente en la base de datos zabbix.

información relacionada