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

10

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

Estoy tratando de 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 scenarioservidor Zabbix Server para cada uno vhostque quiera monitorear. Pero no es tan útil.

Al buscar, encontré un hilo del foro con una idea de funcionamiento parcial: usando un templateque lee del servidor de destino todo 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 usar LLD (Low Level Discovery) con Web scenarios.

Hay un Pedido de funciones abierta desde el 14 de noviembre a poner en práctica LLDen 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 característica, o tal vez mi enfoque es totalmente erróneo.

Borde afilado
fuente
1
De acuerdo con el manual , debería poder usar la plantilla para escenarios web que ya están en 2.2.
StephenKing
Tiene razón, el problema no se debe a que la plantilla cree escenarios web. El problema es que no es posible usar LLD con "escenarios web".
SharpEdge
Gracias hombre, ¿es tan malo serverfault?
SharpEdge
Que yo sepa, ¿puedes crear tu propio descubrimiento personalizado de bajo nivel?
Navern
1
Curiosamente, @peterh, de su serie de comentarios similares, la mayoría de ellos parecen estar en preguntas bien recibidas con respuestas bien recibidas.
BE77Y

Respuestas:

1

Usé un script que usa 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
The_Pingu
fuente
0

Aquí un guión que quizás te ayude. Este script lee una lista con URL y crea un escenario web directamente en la base de datos zabbix.

Joao Vitorino
fuente