Zabbix와 엔터프라이즈 모니터링을 처음 사용합니다. Zabbix 2.4 설치를 마쳤습니다.
vhosts
다른 서버에있는 우리의 모든 탈퇴 상태를 모니터링하려고 합니다.
지금까지 내가 Web scenario
찾은 유일한 솔루션은 vhost
모니터링하려는 각 서버에 대해 Zabbix 서버 호스트에 수동으로 추가하는 것 입니다. 그러나 그렇게 편리하지 않습니다.
나는 부분적인 기능의 아이디어 포럼 스레드를 발견 한 주변 검색 : 사용하여 template
모든 대상 서버에서 읽습니다 vhosts
(스루 macro
)과를 만들어 Web scenario
각각에 대해 vhost
.
편집 :이 솔루션 (Zabbie 2.2 기반)은 LLD (Low Level Discovery)와 함께 사용할 수 없기 때문에 작동하지 않습니다 Web scenarios
.
이 기능 요청 구현하기 11월 14일 이후 개방 LLD
에가 Web scenarios
.
질문
문제는 기능 구현을 기다리는 동안 이러한 종류의 모니터링에 접근하는 방법에 대한 해결책이나 제안이 있는지, 아니면 내 접근 방식이 완전히 잘못된 것입니다.
답변
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