如何自動化 vhost 的 zabbix web 場景?

如何自動化 vhost 的 zabbix web 場景?

我是 Zabbix 和企業監控的新手。我剛安裝完 Zabbix 2.4。

vhosts我正在嘗試監視我們在不同伺服器上的所有脫節狀態。

到目前為止,我想出的唯一解決方案是為每個我想要監控的Web scenarioZabbix Server 主機手動新增一個。vhost但它不是那麼方便。

四處搜索,我發現了一個具有部分功能想法的論壇線程:使用 atemplate從目標伺服器讀取所有內容vhosts(通過 a 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 場景。

相關內容