Aqui um script que talvez o ajude. Esse script leu uma lista com URL e criou um cenário da Web direto no banco de dados do zabbix.
Sou novo no Zabbix e no monitoramento corporativo. Acabei de instalar o Zabbix 2.4.
Estou tentando monitorar o estado de todos os nossos vhosts
deslocados em servidores diferentes.
Até agora, a única solução que consegui foi adicionar manualmente Web scenario
ao host do Zabbix Server para cada vhost
que eu quisesse monitorar. Mas não é tão prático.
Pesquisando, encontrei um thread do fórum com uma ideia parcial de funcionamento: Usando um template
que lê o servidor de destino todo o vhosts
(através de um macro
) e cria um Web scenario
para cada vhost
.
EDITAR : 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
.
Existe uma Solicitação de recurso aberta desde 14 de novembro para implementar LLD
on Web scenarios
.
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.
Aqui um script que talvez o ajude. Esse script leu uma lista com URL e criou um cenário da Web direto no banco de dados do zabbix.
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
Tags monitoring virtualhost linux zabbix