가상 호스트에 대한 zabbix 웹 시나리오를 자동화하는 방법은 무엇입니까?

가상 호스트에 대한 zabbix 웹 시나리오를 자동화하는 방법은 무엇입니까?

저는 Zabbix와 기업 모니터링을 처음 사용합니다. 방금 Zabbix 2.4 설치를 마쳤습니다.

vhosts저는 서로 다른 서버에 있는 모든 탈북 상태를 모니터링하려고 합니다 .

지금까지 제가 생각해낸 유일한 해결책은 모니터링하려는 Web scenario각각에 대해 Zabbix Server 호스트에 수동으로 추가하는 것입니다. vhost하지만 그다지 편리하지는 않습니다.

주변을 검색하면서 부분적으로 작동하는 아이디어가 있는 포럼 스레드를 찾았습니다. a를 사용하여 대상 template서버에서 모든 내용을 읽고 각 .vhostsmacroWeb scenariovhost

편집하다: 이 솔루션(Zabbix 2.2 기반)은 LLD(Low Level Discovery)를 사용할 수 없기 때문에 작동하지 않습니다 Web scenarios.

이있다기능 요청11월 14일부터 오픈하여 LLD에 구현합니다 Web scenarios.

질문

문제는 기능 구현을 기다리는 동안 이러한 종류의 모니터링에 접근하는 방법에 대한 해결책이나 제안이 있는지, 아니면 내 접근 방식이 완전히 잘못된 것일 수 있는지입니다.

답변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

답변2

여기아마도 당신에게 도움이 될 스크립트입니다. 이 스크립트는 URL이 포함된 목록을 읽고 zabbix 데이터베이스에서 직접 웹 시나리오를 생성합니다.

관련 정보