Bagaimana cara mengotomatiskan skenario web zabbix untuk vhosts?

10

Saya baru mengenal Zabbix dan pemantauan perusahaan. Saya baru saja selesai menginstal Zabbix 2.4.

Saya mencoba untuk memantau keadaan semua vhostsdislokasi kami di server yang berbeda.

Sampai sekarang satu-satunya solusi yang saya buat adalah dengan menambahkan secara manual Web scenarioke host Server Zabbix untuk setiap yang vhostingin saya monitor. Tapi itu tidak terlalu berguna.

Pencarian di sekitar Saya telah menemukan utas forum dengan ide berfungsi parsial: Menggunakan templateyang membaca dari server target semua vhosts(melalui a macro) dan membuat Web scenariountuk masing-masing vhost.

EDIT : Solusi ini (berdasarkan Zabbix 2.2) tidak berfungsi karena tidak mungkin menggunakan LLD (Penemuan Tingkat Rendah) dengan Web scenarios.

Ada Permintaan Fitur terbuka sejak 14 November untuk diimplementasikan LLDpada Web scenarios.

PERTANYAAN

Pertanyaannya adalah apakah ada solusi atau saran tentang cara pendekatan pemantauan semacam ini sambil menunggu implementasi fitur, atau mungkin pendekatan saya benar-benar salah.

Tepi yang tajam
sumber
1
Menurut manual , Anda harus dapat menggunakan template untuk skenario web yang sudah ada di 2.2.
StephenKing
Anda benar masalahnya bukan karena template membuat skenario web. Masalahnya adalah bahwa tidak mungkin menggunakan LLD dengan "skenario web".
SharpEdge
Terima kasih kawan, apakah serverfault begitu buruk?
SharpEdge
Sejauh yang saya tahu Anda dapat membuat penemuan tingkat rendah kustom Anda sendiri?
Navern
1
@peterh menarik, dari banyaknya komentar serupa Anda, sebagian besar dari mereka tampaknya pada pertanyaan yang diterima dengan baik dengan jawaban yang diterima dengan baik.
BE77Y

Jawaban:

1

Saya menggunakan skrip yang menggunakan Zabbix API untuk membuat skenario.

#!/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

dan untuk pemicunya:

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
The_Pingu
sumber
0

Berikut skrip yang mungkin akan membantu Anda. Skrip ini membaca daftar dengan URL dan membuat skenario web langsung di basis data zabbix.

Joao Vitorino
sumber