Membuat templat untuk Zabbix menggunakan DVR Trassir SDK sebagai contoh

Tujuan membuat template adalah untuk mengotomatisasi pemantauan server sistem pengawasan video berdasarkan pendaftar Trassir di bawah kendali perangkat lunak berbasis linux dengan nama yang sama melalui server web SDK.

Trassir SDK termasuk dalam pengaturan server web, Anda juga harus menentukan kata sandi di sana. Menurut dokumentasi pabrikan, Anda tidak perlu membuat akun terpisah untuk membaca tentang server.

Trassir SDK menawarkan akses ke status server melalui permintaan

https://{ip   }:{ }/health?password={ SDK} 

Saat Anda membuka tautan ini melalui browser, sebuah pesan muncul yang menyatakan bahwa sertifikat yang digunakan tidak aman dan Anda harus mengikuti petunjuk browser untuk melanjutkan.

Untuk contoh spesifik, di badan respons kita mendapatkan yang berikut:

 { "disks": "1", "database": "1", "channels_total": "13", "channels_online": "13", "uptime": "882232", "cpu_load": "33.96", "network": "1", "automation": "1", "disks_stat_main_days": "16.41", "disks_stat_priv_days": "0.00", "disks_stat_subs_days": "16.41" } /* Meanings of values: -1 - undefined value 0 - bad health (error) 1 - good health (ok) Values for channels are channel counters. Value of cpu_load is given in percents. 

Bagian pertama dari output dari karakter {ke karakter} sesuai dengan dokumentasi dan merupakan format output JSON standar, yang sesuai dengan dokumentasi, dan kemudian ada deskripsi output, yang tidak sesuai dengan standar.

Sebelumnya, untuk menggunakan output ini dalam sistem pemantauan Zabbix, perlu untuk menulis skrip Anda sendiri, yang akan digunakan pada agen dan mendapatkan data yang diperlukan. Dengan pendekatan ini, Anda harus menyimpan file respons dan memantau relevansinya, atau meminta setiap elemen secara terpisah, mis. gunakan 11 kueri alih-alih 1.

Dalam versi Zabbix 4.0, tipe elemen data agen agen telah muncul, yang memungkinkan menerima data melalui protokol http dan https dan memprosesnya, serta elemen dependen, yang dihitung dari yang utama.

Idenya adalah untuk mendapatkan respons server ke dalam elemen data teks dan kemudian memilih elemen data yang diperlukan darinya.

Awalnya, kami akan menentukan makro untuk nomor port dan kata sandi untuk fleksibilitas dan keamanan templat kami.

Kami membuat templat dan menambahkan elemen data dengan jenis "agen HTTP", kunci yang diinginkan, URL https: // {HOST.IP}: {$ TRASSIR_SDK_PORT} / kesehatan dan bidang permintaan kata sandi {$ TRASSIR_SDK_PASS}. Di sini {HOST.IP} adalah makro yang, ketika menambahkan templat ke host, akan dikonversi ke alamat IP host.

Seperti yang telah kami temukan secara eksperimental sebelumnya, permintaan ini tidak sepenuhnya sesuai dengan format JSON dan tidak berfungsi untuk mengekstrak data darinya.

Kami akan menggunakan fungsionalitas Zabbix baru dan menambahkan ekspresi reguler \ {(\ n |. * *) Pada tab "preprocessing" dari templat elemen data dengan output \ 0 yang hanya akan mengembalikan data format JSON.

Siapa yang peduli mengapa demikian?
Untuk mengembangkan ekspresi seperti itu untuk pemula jauh lebih mudah di editor visual . Dalam ungkapan ini, kami mencari karakter tertentu dari kurung kurawal pembuka dan karena dalam ekspresi reguler kurung ini digunakan, perlu untuk menentukan garis miring terbalik sebelum karakter. Mungkin ada (sebenarnya, tidak, tapi jangan abaikan saat ini) karakter dalam data JSON, serta umpan baris. Opsi karakter ini yang menunjukkan periode atau karakter kontrol linefeed \ n ditunjukkan dalam tanda kurung dengan bilah vertikal. Di belakang tanda kurung adalah tanda bintang, yang menunjukkan bahwa karakter atau umpan baris yang ditemukan dapat diulang berkali-kali. Selanjutnya adalah kurung kurawal. Output \ 0 berarti bahwa semua urutan yang ditemukan akan ditampilkan.

Selanjutnya, elemen data dependen dibuat untuk elemen data utama diindikasikan respons yang diterima sebelumnya dalam format JSON dan preprocessing ditunjukkan dengan langkah "jalur JSON" yang memungkinkan Anda untuk mengakses elemen data apa pun dengan menentukan jalur JSON. Dalam contoh kami, semua data berada di tingkat atas, jadi kami menentukan $ .disks dan seterusnya untuk semua elemen.

Tetap hanya untuk membuat pemicu yang akan memeriksa data baru, entri mereka ke dalam rentang normal, serta grafik opsional.

Ternyata kami sangat mudah dan cepat dengan metode reguler Zabbix menerima data dari sistem eksternal, yang hasilnya tidak sepenuhnya memenuhi standar. Tidak adanya skrip eksternal menyederhanakan pemahaman sistem pemantauan dan meningkatkan kemudahan pemeliharaan.

Template yang ditentukan tersedia di portal pertukaran share.zabbix.com .

Source: https://habr.com/ru/post/id430534/


All Articles