Как автоматизировать веб-сценарии zabbix для vhosts?

10

Я новичок в Zabbix и корпоративного мониторинга. Я только что закончил установку Zabbix 2.4.

Я пытаюсь отслеживать состояние всех наших vhostsдислоцированных на разных серверах.

До сих пор единственное решение, которое я придумал, - это вручную добавить Web scenarioхост Zabbix Server для каждого, который vhostя хочу отслеживать. Но это не так удобно.

Осматривая вокруг, я нашел ветку форума с частично функционирующей идеей: использование a, templateкоторое считывает с целевого сервера все vhosts(через a macro) и создает a Web scenarioдля каждого vhost.

РЕДАКТИРОВАТЬ : Это решение (на основе Zabbix 2.2) не работает, потому что невозможно использовать LLD (Low Level Discovery) с Web scenarios.

Существует Feature Request открыт с 14 ноября по реализации LLDна Web scenarios.

ВОПРОС

Вопрос в том, есть ли какое-то решение или предложение о том, как подойти к такому виду мониторинга в ожидании реализации функции, или, возможно, мой подход совершенно неверен.

Острый край
источник
1
Согласно инструкции , вы должны быть в состоянии использовать шаблон для веб-сценариев уже в 2.2.
StephenKing
Вы правы, проблема не в шаблоне, создающем веб-сценарии. Проблема в том, что невозможно использовать LLD с «веб-сценариями».
SharpEdge
Спасибо, мужик, это так плохо на сервере?
SharpEdge
Насколько я знаю, вы можете создать свое собственное обнаружение низкого уровня?
Наверн
1
Интересно @peterh, из вашего количества подобных комментариев, большинство из них, кажется, на хорошо принятые вопросы с хорошо полученными ответами.
BE77Y

Ответы:

1

Я использовал скрипт, который использует Zabbix API для создания сценариев.

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

и для триггеров:

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
источник
0

Вот сценарий, который, возможно, поможет вам. Этот скрипт читает список с URL и создает веб-сценарий прямо в базе данных zabbix.

Жоао Виторино
источник