
Halo semuanya, nama saya Igor Sidorenko. Monitoring adalah salah satu area utama pekerjaan saya dan juga hobi saya. Saya akan berbicara tentang Zabbix dan cara menggunakannya untuk memantau informasi yang kami butuhkan tentang volume NetApp, yang hanya dapat diakses melalui SSH. Siapa yang tertarik dengan topik pemantauan dan Zabbix, silakan, di bawah cat.
Awalnya, kami memantau volume dengan memasangnya ke server tertentu, di mana templat khusus digantung yang menangkap pemasangan NFS pada node dan menempatkannya di bawah pemantauan, dengan analogi dengan sistem file dari templat dasar Linux. Mount harus didaftarkan di fstab dan dipasang secara manual - karena itu, banyak yang hilang dan terlupakan.
Kemudian ide bagus muncul di benak saya: kita perlu mengotomatiskan semua ini. Ada beberapa opsi:
Ada templat siap pakai yang bekerja dengan SNMP, tetapi tidak ada akses.Mendapatkan daftar volume dan pemasangan otomatis pada node: Anda perlu membuat folder, mendaftarkan fstab, memasang, itu saja, terlalu banyak wasir.Ada API yang bagus , tetapi karena kami hanya menyewa ruang, dalam versi ONTAP kami, API itu dipotong dan tidak memberikan informasi yang diperlukan kepada pengguna.- Entah bagaimana, gunakan akses SSH untuk mendapatkan volume dan mengaturnya untuk pemantauan.
Pilihan jatuh pada agen SSH .
Penemuan Tingkat Rendah (LLD)
Pertama, kita perlu membuat penemuan tingkat rendah (LLD) , ini akan menjadi nama volume kita. Semua ini diperlukan untuk mendapatkan informasi spesifik tentang volume yang kita butuhkan. Data mentahnya terlihat seperti ini (114 pada saat penulisan):
set -unit B; volume show -state online
Nah, bagaimana kita bisa melakukannya tanpa kruk: mari kita tulis skrip bash satu baris yang akan menampilkan nama-nama volume dalam format JSON (karena ini adalah pemeriksaan eksternal , skrip ada di server Zabbix di direktori
/usr/lib/zabbix/externalscripts):
netapp_volume_discovery.sh
#!/usr/bin/bash
SVM_NAME=""
SVM_ADDRESS=""
USERNAME=""
PASSWORD=""
for i in $(sshpass -p $PASSWORD ssh -o StrictHostKeyChecking=no $USERNAME@$SVM_ADDRESS 'set -unit B; volume show -state online' | grep $SVM_NAME | awk {'print $2'}); do echo '{"volume_name":"'$i'"}'; done | jq -s '.
Sekarang Anda perlu membuat template dan membuat item data berdasarkan data yang diterima:
Item data
Untuk membuat item secara otomatis, Anda perlu membuat prototipe item : Kami akan menggunakan item master dan beberapa item dependen . Jadi, untuk setiap volume, satu elemen master dibuat di mana satu set perintah dieksekusi melalui SSH:
set -unit B; df -i -volume {#VOLUME_NAME}; volume show-space {#VOLUME_NAME}; statistics volume show -volume {#VOLUME_NAME}
Kami mendapatkan lembaran seperti itu:
Dapatkan Volume: info ackey_media
Last login time: 9/15/2020 12:42:45
Filesystem iused ifree %iused Mounted on
/vol/ackey_media/ 96 311191 0% /ackey_media
Volume Name: ackey_media
Volume MSID: 2159592810
Volume DSID: 1317
Vserver UUID: 46a00e5d-c22d-11e8-b6ed-00a098d48e6d
Aggregate Name: NGHF_FAS2720_04
Aggregate UUID: 7ec21b4d-b4db-4f84-85e2-130750f9f8c3
Hostname: FAS2720_04
User Data: 20480B
User Data Percent: 0%
Deduplication: -
Deduplication Percent: -
Temporary Deduplication: -
Temporary Deduplication Percent: -
Filesystem Metadata: 1150976B
Filesystem Metadata Percent: 0%
SnapMirror Metadata: -
SnapMirror Metadata Percent: -
Tape Backup Metadata: -
Tape Backup Metadata Percent: -
Quota Metadata: -
Quota Metadata Percent: -
Inodes: 12288B
Inodes Percent: 0%
Inodes Upgrade: -
Inodes Upgrade Percent: -
Snapshot Reserve: -
Snapshot Reserve Percent: -
Snapshot Reserve Unusable: -
Snapshot Reserve Unusable Percent: -
Snapshot Spill: -
Snapshot Spill Percent: -
Performance Metadata: 28672B
Performance Metadata Percent: 0%
Total Used: 1212416B
Total Used Percent: 0%
Total Physical Used Size: 1212416B
Physical Used Percentage: 0%
Logical Used Size: 1212416B
Logical Used Percent: 0%
Logical Available: 10736205824B
DOMCLIC_SVM : 9/15/2020 12:42:51
*Total Read Write Other Read Write Latency
Volume Vserver Ops Ops Ops Ops (Bps) (Bps) (us)
----------- ----------- ------ ---- ----- ----- ----- ----- -------
ackey_media DOMCLIC_SVM 0 0 0 0 0 0 0
Dari sheet ini, kita perlu memilih metrik yang kita butuhkan.
Keajaiban ekspresi reguler
Awalnya, saya ingin menggunakan JavaScript untuk preprocessing , tapi entah kenapa saya tidak menguasainya, itu tidak berhasil. Oleh karena itu, saya berhenti di pelanggan tetap, dan saya menggunakannya hampir di semua tempat.
Jumlah inode yang digunakan
Kami akan memilih informasi hanya tentang inode untuk setiap volume dalam dua tahap: Pertama, semua informasi:
\/vol\/\w+\/.*
Kemudian, secara khusus menurut metrik:
(\d+)\s+(\d+)\s+(\d+)
Output - Template format keluaran.
\N ( N=1..9)- urutan pelolosan diganti dengan kelompok pencocokan ke-N. Urutan escape \0diganti dengan teks yang cocok:
\1 - Inode used on {#VOLUME_NAME}- jumlah inode yang digunakan;\2 - Inode free on {#VOLUME_NAME}- jumlah inode gratis;\3 - Inode used percentage on {#VOLUME_NAME}- digunakan inode sebagai persentase;Inode total on {#VOLUME_NAME}- elemen yang dihitung , jumlah inode yang tersedia.
last(inode_free[{#VOLUME_NAME}])+last(inode_used[{#VOLUME_NAME}])
Ruang yang digunakan
Semuanya lebih sederhana di sini, data dan pelanggan tetap dalam format yang lebih menyenangkan: Kami mengeluarkan metrik yang kami butuhkan dan hanya mengambil angkanya:
(?<=Logical Available:\s)\d+
Metrik yang dikumpulkan:
Logical available on {#VOLUME_NAME}- jumlah ruang logis yang tersedia;Logical used percent on {#VOLUME_NAME}- menggunakan tempat logis dalam persentase;Logical used size on {#VOLUME_NAME}- jumlah ruang logika yang digunakan;Physical used percentage on {#VOLUME_NAME}- menggunakan ruang fisik dalam persentase;Total physical used size on {#VOLUME_NAME}- jumlah ruang fisik yang digunakan;Total used on {#VOLUME_NAME}- total ruang yang digunakan;Total used percent on {#VOLUME_NAME}- total tempat yang digunakan dalam persentase;Logical size on {#VOLUME_NAME}- elemen yang dihitung , jumlah ruang logis yang tersedia.
last(logical_available[{#VOLUME_NAME}])+last(total_used[{#VOLUME_NAME}])
Performa volume
Setelah membaca dokumentasi dan mencari-cari dengan perintah yang berbeda, saya menemukan bahwa kita bisa mendapatkan metrik pada kinerja volume kita. Sepotong kecil bertanggung jawab untuk ini:
statistics volume show -volume {#VOLUME_NAME}
Kami memilih metrik kinerja dari lembar umum dengan keteraturan pertama:
.DOMCLIC_SVM.*
Kedua, kami mengelompokkan angka:
(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)
Dimana:
\1 - Total number of operations per second on {#VOLUME_NAME}- jumlah total operasi per detik;\2 - Read operations per second on {#VOLUME_NAME}- membaca operasi per detik;\3 - Write operations per second on {#VOLUME_NAME}- operasi tulis per detik;\4 - Other operations per second on {#VOLUME_NAME}- operasi lain per detik (saya tidak tahu apa itu, tetapi untuk beberapa alasan saya menembak);\5 - Read throughput in bytes per second on {#VOLUME_NAME}- kecepatan membaca dalam byte per detik;\6 - Write throughput in bytes per second on {#VOLUME_NAME}- kecepatan menulis dalam byte per detik;\7 - Average latency for an operation in microseconds on {#VOLUME_NAME}- latensi rata-rata operasi dalam mikrodetik.
Memperingatkan
Himpunan pemicu adalah standar, tempat, dan inode:
- Kosongkan ruang disk kurang dari 1% di {#VOLUME_NAME}
- Kosongkan ruang disk kurang dari 5% di {#VOLUME_NAME}
- Kosongkan ruang disk kurang dari 10% di {#VOLUME_NAME}
- Inode gratis kurang dari 1% di {#VOLUME_NAME}
- Inode gratis kurang dari 5% di {#VOLUME_NAME}
- Inode gratis kurang dari 10% di {#VOLUME_NAME}
Visualisasi
Visualisasi terutama dilakukan pada Grafana , indah dan nyaman. Misalnya, satu volume terlihat seperti ini: Di sudut kanan atas terdapat tombol Tunjukkan di Zabbix , yang dengannya Anda dapat masuk ke Zabbix dan melihat semua metrik untuk volume yang dipilih.
Hasil
- Pengaturan volume otomatis untuk pemantauan.
- Penghapusan otomatis volume dari pemantauan, jika volume dihapus dari NetApp.
- Kami menyingkirkan pengikatan ke satu server dan volume pemasangan manual.
- Menambahkan metrik kinerja untuk setiap volume. Sekarang kami cenderung tidak menarik dukungan pusat data demi grafik dari NetApp.
Segera mereka berjanji untuk memperbarui ONTAP dan membawa API yang diperpanjang, template akan dipindahkan ke agen HTTP .
Template, skrip, dan dasbor
github.com/domclick/netapp-volume-monitoring
link yang berguna
docs.netapp.com/ontap-9/index.jsp
www.zabbix.com/documentation/current