Como automatizar cenários da web do zabbix para vhosts?

10

Eu sou novo no Zabbix e no monitoramento corporativo. Acabei de instalar o Zabbix 2.4.

Estou tentando monitorar o estado de todos os nossos vhostsdeslocados em diferentes servidores.

Até agora, a única solução que encontrei é adicionar manualmente um Web scenariohost ao servidor Zabbix para cada um que vhosteu queira monitorar. Mas não é tão útil.

Pesquisando, encontrei um tópico no fórum com uma ideia de funcionamento parcial: Usando um templateque lê do servidor de destino todo vhosts(através de a macro) e cria um Web scenariopara cada um vhost.

EDIT : Esta solução (baseada no Zabbix 2.2) não funciona porque não é possível usar o LLD (Low Level Discovery) com Web scenarios.

Há uma solicitação de recurso aberto desde 14 de novembro a implementar LLDno Web scenarios.

QUESTÃO

A questão é se há alguma solução ou sugestão sobre como abordar esse tipo de monitoramento enquanto aguarda a implementação do recurso, ou talvez minha abordagem esteja totalmente errada.

Borda afiada
fonte
1
De acordo com o manual , você deve poder usar o modelo para cenários da Web já em 2.2.
precisa
Você está certo, o problema não se deve ao modelo de criação de cenários da web. O problema é que não é possível usar o LLD com "cenários da web".
SharpEdge
Obrigado cara, é tão ruim o serverfault?
SharpEdge
Tanto quanto eu sei, você pode criar sua própria descoberta personalizada de baixo nível?
Navern
1
@peterh, curiosamente, da sua série de comentários semelhantes, a maioria deles parece estar em perguntas bem recebidas e com respostas bem recebidas.
BE77Y

Respostas:

1

Eu usei um script que usa a API do Zabbix para criar os cenários.

#!/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 para os gatilhos:

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
fonte
0

Aqui está um script que talvez o ajude. Este script lê uma lista com URL e cria um cenário da web diretamente no banco de dados zabbix.

Joao Vitorino
fonte