by: CITRAWEB SOLUSI TEKNOLOGI, PT
Aturan | Tentang Kami | Kontak Kami

Artikel

[APlus UPS] Monitoring UPS dengan NUT dan SNMP

Senin, 7 Desember 2020, 14:17:00 WIB
Kategori: Fitur & Penggunaan
Sebagai teknisi jaringan pastinya tidak terlepas dari yang namanya monitoring jaringan. Dengan kita memonitoring jaringan, kita bisa lebih profesional dalam mengurus jaringan yang kita handle. Tentunya jika terjadi masalah bisa lebih cepat untuk mengetahui penyebab nya dan kita juga bisa membuat laporan dengan data data yang ada.

Pada artikel ini kita akan membahas tentang bagaimana caranya untuk memonitor UPS menggunakan SNMP di UPS yang tidak memiliki SNMP card. Kita bisa memanfaatkan komunikasi menggunakan USB pada UPS menggunakan software NUT dan SNMP yang bisa kita install di mesin linux.

Pada artikel sebelumnya kita sudah pernah membahas mengenai Penggunaan NUT pada Orange Pi Zero untuk Monitoring UPS APlus dan Monitoring UPS Dengan Telegram

Untuk mengikuti tutorial ini Anda harus menggunakan NUT terlebih dahulu, tutorial bisa diikuti pada halaman Penggunaan NUT pada Orange Pi Zero untuk Monitoring UPS APlus.

Pertama, install snmpd untuk mengaktifkan SNMP pada mesin linux yang kita gunakan. Kebetulan citraweb menggunakan orangepizero dengan sistem operasi armbian debian 9. Jika teman teman menggunakan mesin lain atau os lain, silahkan disesuaikan yaa. :D



Pastikan NUT sudah siap. Karena kita sudah menggunakan NUT, cek lagi dan pastikan NUT bekerja dengan baik dengan perintah upsc [nama ups]


Kemudian buat file pada /etc/snmp/ups-nut.sh dan tambahkan script berikut untuk membuat nilai pada SNMP. Nilai apa yang ingin diambil bisa disesuaikan dengan hasil dari perintah upsc [nama ups], contoh: battery.charge atau input.voltage pada baris ke 8 dan sesuaikan jika menggunakan huruf maka ganti [0-9] menjadi [A-Z]. Sesuaikan juga nama UPS pada UPS_NAME.


<span style="color: rgb(0, 0, 0); text-decoration: none; vertical-align: baseline; font-size: 11pt; font-family: Arial; font-style: normal;" class="c1">#!/usr/bin/env bash</span>
<p style="margin: 0px; color: rgb(0, 0, 0); font-size: 11pt; font-family: Arial; padding-top: 0pt; padding-bottom: 0pt; line-height: 1.15; text-align: left; height: 11pt; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;" class="c0 c2"><span style="color: rgb(0, 0, 0); text-decoration: none; vertical-align: baseline; font-size: 11pt; font-family: Arial; font-style: normal;" class="c1"></p>
<p style="margin: 0px; color: rgb(0, 0, 0); font-size: 11pt; font-family: Arial; padding-top: 0pt; padding-bottom: 0pt; line-height: 1.15; text-align: left; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;" class="c0"><span style="color: rgb(0, 0, 0); text-decoration: none; vertical-align: baseline; font-size: 11pt; font-family: Arial; font-style: normal;" class="c1">UPS_NAME='aplus'</span></p>
<p style="margin: 0px; color: rgb(0, 0, 0); font-size: 11pt; font-family: Arial; padding-top: 0pt; padding-bottom: 0pt; line-height: 1.15; text-align: left; height: 11pt; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;" class="c0 c2"><span style="color: rgb(0, 0, 0); text-decoration: none; vertical-align: baseline; font-size: 11pt; font-family: Arial; font-style: normal;" class="c1"></p>
<p style="margin: 0px; color: rgb(0, 0, 0); font-size: 11pt; font-family: Arial; padding-top: 0pt; padding-bottom: 0pt; line-height: 1.15; text-align: left; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;" class="c0"><span style="color: rgb(0, 0, 0); text-decoration: none; vertical-align: baseline; font-size: 11pt; font-family: Arial; font-style: normal;" class="c1">PATH=$PATH:/usr/bin:/bin</span></p>
<p style="margin: 0px; color: rgb(0, 0, 0); font-size: 11pt; font-family: Arial; padding-top: 0pt; padding-bottom: 0pt; line-height: 1.15; text-align: left; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;" class="c0"><span style="color: rgb(0, 0, 0); text-decoration: none; vertical-align: baseline; font-size: 11pt; font-family: Arial; font-style: normal;" class="c1">TMP=$(upsc $UPS_NAME 2>/dev/null)</span></p>
<p style="margin: 0px; color: rgb(0, 0, 0); font-size: 11pt; font-family: Arial; padding-top: 0pt; padding-bottom: 0pt; line-height: 1.15; text-align: left; height: 11pt; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;" class="c0 c2"><span style="color: rgb(0, 0, 0); text-decoration: none; vertical-align: baseline; font-size: 11pt; font-family: Arial; font-style: normal;" class="c1"></p>
<p style="margin: 0px; color: rgb(0, 0, 0); font-size: 11pt; font-family: Arial; padding-top: 0pt; padding-bottom: 0pt; line-height: 1.15; text-align: left; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;" class="c0"><span style="color: rgb(0, 0, 0); text-decoration: none; vertical-align: baseline; font-size: 11pt; font-family: Arial; font-style: normal;" class="c1">for value in "battery.charge: [0-9.]+" "input.frequency: [0-9]+" "ups.temperature: 
[0-9]+" "battery.voltage: [0-9.]+" "battery.voltage.nominal: [0-9]+" "input.voltage.nominal: 
[0-9.]+" "input.voltage: [0-9.]+" "ups.load: [0-9.]+"</span></p>
<p style="margin: 0px; color: rgb(0, 0, 0); font-size: 11pt; font-family: Arial; padding-top: 0pt; padding-bottom: 0pt; line-height: 1.15; text-align: left; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;" class="c0"><span style="color: rgb(0, 0, 0); text-decoration: none; vertical-align: baseline; font-size: 11pt; font-family: Arial; font-style: normal;" class="c1">do</span></p>
<p style="margin: 0px; color: rgb(0, 0, 0); font-size: 11pt; font-family: Arial; padding-top: 0pt; padding-bottom: 0pt; line-height: 1.15; text-align: left; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;" class="c0"><span style="color: rgb(0, 0, 0); text-decoration: none; vertical-align: baseline; font-size: 11pt; font-family: Arial; font-style: normal;" class="c1">    OUT=$(echo $TMP | grep -Eo "$value" | awk '{print $2}' | LANG=C sort | head 
-n 1)</span></p>
<p style="margin: 0px; color: rgb(0, 0, 0); font-size: 11pt; font-family: Arial; padding-top: 0pt; padding-bottom: 0pt; line-height: 1.15; text-align: left; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;" class="c0"><span style="color: rgb(0, 0, 0); text-decoration: none; vertical-align: baseline; font-size: 11pt; font-family: Arial; font-style: normal;" class="c1">    if [ -n "$OUT" ]; then</span></p>
<p style="margin: 0px; color: rgb(0, 0, 0); font-size: 11pt; font-family: Arial; padding-top: 0pt; padding-bottom: 0pt; line-height: 1.15; text-align: left; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;" class="c0"><span style="color: rgb(0, 0, 0); text-decoration: none; vertical-align: baseline; font-size: 11pt; font-family: Arial; font-style: normal;" class="c1">        echo $OUT</span></p>
<p style="margin: 0px; color: rgb(0, 0, 0); font-size: 11pt; font-family: Arial; padding-top: 0pt; padding-bottom: 0pt; line-height: 1.15; text-align: left; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;" class="c0"><span style="color: rgb(0, 0, 0); text-decoration: none; vertical-align: baseline; font-size: 11pt; font-family: Arial; font-style: normal;" class="c1">    else</span></p>
<p style="margin: 0px; color: rgb(0, 0, 0); font-size: 11pt; font-family: Arial; padding-top: 0pt; padding-bottom: 0pt; line-height: 1.15; text-align: left; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;" class="c0"><span style="color: rgb(0, 0, 0); text-decoration: none; vertical-align: baseline; font-size: 11pt; font-family: Arial; font-style: normal;" class="c1">        echo "Unknown"</span></p>
<p style="margin: 0px; color: rgb(0, 0, 0); font-size: 11pt; font-family: Arial; padding-top: 0pt; padding-bottom: 0pt; line-height: 1.15; text-align: left; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;" class="c0"><span style="color: rgb(0, 0, 0); text-decoration: none; vertical-align: baseline; font-size: 11pt; font-family: Arial; font-style: normal;" class="c1">    fi</span></p>
<p style="margin: 0px; color: rgb(0, 0, 0); font-size: 11pt; font-family: Arial; padding-top: 0pt; padding-bottom: 0pt; line-height: 1.15; text-align: left; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;" class="c0"><span style="color: rgb(0, 0, 0); text-decoration: none; vertical-align: baseline; font-size: 11pt; font-family: Arial; font-style: normal;" class="c1">done</span></p>
script di atas di ambil dari blog UPS Monitoring with NUT + Net-SNMP

Ubah permision agar script bisa di eksekusi.


Setelah itu bisa kita coba terlebih dahulu dan pastikan script tadi bekerja dengan baik.

 

Konfigurasi SNMP agar bisa dijangkau dari network dengan mengubah file /etc/snmp/snmpd.conf


Kemudian tambahkan baris berikut :
 agentAddress udp:161,udp6:[::1]:161


dan tambahkan juga baris berikut :
 rocommunity public default

 extend ups-nut /etc/snmp/ups-nut.sh


Setelah itu simpan dan jalankan snmpd.


Setelah snmp berjalan, coba lakukan snmpwalk ke perangkat orangepizero tadi. Sebagai contoh kita akan menggunakan the dude untuk melakukan snmpwalk.

Jika snmpwalk sudah selesai, cari baris yang menunjukkan nilai dari UPS tadi, bisa kita cari dengan kata kunci "netsnmp".


Jika sudah menemukan oid nya, kita bisa memanfaatkan untuk kebutuhan lebih banyak lagi. Sebagai contoh disini bisa kita gunakan untuk membuat label pada appearance device the dude.



Contoh appearance yang bisa digunakan, tentunya disesuaikan dengan oid yang ditemukan :

[Device.Name][device_performance()][Device.ServicesDown]

Battery : [oid("1.3.6.1.4.1.8072.1.3.2.4.1.2.7.117.112.115.45.110.117.116.1")]

Tegangan baterai : [oid("1.3.6.1.4.1.8072.1.3.2.4.1.2.7.117.112.115.45.110.117.116.4")] 
V

Tegangan masuk : [oid("1.3.6.1.4.1.8072.1.3.2.4.1.2.7.117.112.115.45.110.117.116.7")] 
V

Frekuensi : [oid("1.3.6.1.4.1.8072.1.3.2.4.1.2.7.117.112.115.45.110.117.116.2")] 
Hz

Suhu : [oid("1.3.6.1.4.1.8072.1.3.2.4.1.2.7.117.112.115.45.110.117.116.3")] derajat 
C

UPS load : [oid("1.3.6.1.4.1.8072.1.3.2.4.1.2.7.117.112.115.45.110.117.116.8")]%

Hasil dari appearance diatas adalah sebagai berikut:


Contoh lain bisa digunakan untuk chart pada the dude. Detail penggunaan chart bisa dilihat pada artikel Penggunaan Chart pada The Dude


Selamat mencoba...

Artikel ini dibuat pada tanggal 7 Desember 2020 Menggunakan Orange Pi Zero dengan Armbian Debian 9 dan UPS Aplus 800VA



Kembali ke :
Halaman Artikel | Kategori Fitur & Penggunaan