Jak zautomatyzować scenariusze sieciowe zabbix dla vhostów?

10

Jestem nowy w Zabbix i monitorowaniu przedsiębiorstw. Właśnie skończyłem instalować Zabbix 2.4.

Próbuję monitorować stan wszystkich naszych vhostsprzemieszczonych na różnych serwerach.

Do tej pory jedynym rozwiązaniem, jakie wymyśliłem, jest ręczne dodanie Web scenariodo hosta Zabbix Server dla każdego, vhostktóry chcę monitorować. Ale to nie jest tak przydatne.

Rozglądając się, znalazłem wątek na forum z częściowo funkcjonującym pomysłem: używając templatetego, który odczytuje z serwera docelowego wszystkie vhosts(przez a macro) i tworzy Web scenariodla każdego vhost.

EDYCJA : To rozwiązanie (oparte na Zabbix 2.2) nie działa, ponieważ nie można używać LLD (Low Level Discovery) z Web scenarios.

Jest Zapytanie Cecha otwarte od 14 listopada do wdrożenia LLDna Web scenarios.

PYTANIE

Pytanie brzmi, czy jest jakieś rozwiązanie lub sugestia, jak podejść do tego rodzaju monitorowania podczas oczekiwania na wdrożenie funkcji, a może moje podejście jest całkowicie błędne.

Ostra krawędź
źródło
1
Zgodnie z instrukcją powinno być możliwe używanie szablonu dla scenariuszy internetowych już w wersji 2.2.
StephenKing
Masz rację, problem nie wynika z tworzenia scenariuszy internetowych przez szablon. Problem polega na tym, że nie można używać LLD w „scenariuszach sieciowych”.
SharpEdge,
Dziękuję człowieku, czy to tak zły błąd serwera?
SharpEdge
O ile wiem, możesz stworzyć własne niestandardowe odkrycie niskiego poziomu?
Navern
1
@peterh, co ciekawe, spośród wielu podobnych komentarzy wydaje się, że większość z nich dotyczy dobrze przyjętych pytań z dobrze otrzymanymi odpowiedziami.
BE77Y,

Odpowiedzi:

1

Użyłem skryptu, który używa interfejsu API Zabbix do tworzenia scenariuszy.

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

a dla wyzwalaczy:

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
źródło
0

Oto skrypt, który może ci pomóc. Ten skrypt odczytuje listę z adresem URL i tworzy scenariusz internetowy bezpośrednio w bazie danych zabbix.

Joao Vitorino
źródło