
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 vhosts
dislocados en diferentes servidores.
Hasta ahora, la única solución que se me ocurrió es agregar manualmente un Web scenario
host al servidor Zabbix para cada uno vhost
que quiero monitorear. Pero no es tan útil.
Buscando, encontré un hilo del foro con una idea de funcionamiento parcial: usar a template
que lee desde el servidor de destino todos los vhosts
(a través de a macro
) y crea un Web scenario
para 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 LLD
el 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.