我是 Zabbix 和企业监控的新手。我刚刚安装完 Zabbix 2.4。
vhosts
我正在尝试监控我们在不同服务器上的所有错位的状态。
到目前为止,我想到的唯一解决方案是手动将要监控Web scenario
的每台主机添加到 Zabbix Server 主机vhost
。但这并不方便。
经过一番搜索,我发现了一个论坛主题,其中有一个部分可行的想法:使用template
从目标服务器读取所有vhosts
(通过macro
)并Web scenario
为每个创建一个vhost
。
编辑:该解决方案(基于 Zabbix 2.2)不起作用,因为无法使用 LLD(低级发现)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 数据库中创建 web 场景。