Pada postingan ini, kita akan mencoba melakukan konfigurasi dan pengaturan NUT (Network UPS Tools) pada Proxmox. Tujuannya cukup sederhana, yaitu untuk melakukan monitoring status UPS, apakah dalam kondisi Online, On Battery, atau Low Battery.
Alurnya adalah: ketika UPS berada pada salah satu kondisi tersebut, sistem akan mengirimkan notifikasi melalui Telegram ke Administrator dan auto action shutdown, sehingga dapat segera dilakukan pengecekan dan tindakan lebih lanjut.
Setup di UPS
Langkah pertama pastikan UPS sudah terkoneksi dengan Jaringan. Pada kasus ini kita pakai UPS APC SRT3000XLI 3000VA 230V Online UPS dengan tambahan modul NMC (Network Management Control) yang terpasang. Untuk tutorialnya bisa di cek disni
Berikutnya pastikan untuk mengkonfigurasi Timezone.
Caranya pergi ke menu
Configuration > General > Date/Time > Mode
Set ke NTP Pool https://www.ntppool.org/en/zone/id
Jangan lupa juga untuk setting snmpv3, kita perlu enable dan membuat user, caranya pergi ke
Configuration->Network->SNMPv3>Access lalu centang enable.

Untuk membuat user access snmpnya ada di menu
Configuration>Network>SNMPv3>User Profile
Defaultnya ada 4 user profile, kita pilih salah satu saja
Pastikan jug auntuk enable Access Controlnya pada bagian
Configuration>Network>SNMPv3>Access Control
Jangan lupa juga untuk set delay jadi 20, konfignya ada pada Configuration>Shutdown lalu pilih Low Battery Duration
Restart network config agar semua perubahan reload
Control>Network>Reset/Reboot
Setup di Proxmox Host
Kita mulai install tools untuk requirementnya, installkan NUT dan konek ke UPS
apt install snmp nut nut-snmp -y
Setelah terinstall lalu ganti mode
nano /etc/nut/nut.conf
Ubah bagian mode ke standalone
MODE=standalone
Konfigurasi UPS, gunakan perintah berikut
nano /etc/nut/ups.conf
Tambahkan script berikut, sesuiakan ini dengan user profile yang sudah dibuat sebelumnya.
[apcsrt]
driver = snmp-ups
port = 10.0.3.136
snmp_version = v3
secLevel = authPriv
secName = apc_agent3
authProtocol = SHA
authPassword = farmcenter1009
privProtocol = AES
privPassword = farmcenter1009
Buat juga user untuk NUT, konfig ada pada bagian berikut
nano /etc/nut/upsd.users
Tambahkan script berikut di bagian paling bawah, ctrl+w lalu ctrl+v.
[monuser]
password = passwordbebas
upsmon primary
Konfigurasi monitor untuk eksekusi shutdown server, modifikasi file berikut
nano /etc/nut/upsmon.conf
Pada bagian dibawah modifikasi seperti berikut
# Example:
# NOTIFYCMD /usr/bin/notifyme
+NOTIFYCMD /usr/local/bin/nut-notif.sh
NOTIFYFLAG ONBATT EXEC
NOTIFYFLAG LOWBATT EXEC
NOTIFYFLAG ONLINE EXEC
Kemudian pada bagian paling bawah tambahkan baris ini
MONITOR apcsrt@localhost 1 monuser passwordbebas primary
sesuaikan dengan password yang di buat di file /etc/nut/upsd.users
Restart semua servicenya
systemctl restart nut-server nut-monitor
Untuk mengecek apakah NUT server sudah konek dengan UPS jalankan perintah berikut
upsc apcsrt@localhost
upsc apcsrt@localhost | egrep "battery.charge|battery.runtime|ups.status|battery.runtime.low|battery.runtime"
harusnya terbaca parameter ups nya
lalu untuk /usr/local/bin/nut-notif.sh
isi kan script bash berikut ini
#!/bin/bash
# Setup variabel
+TOKEN="6495733192:AAEiztfp_b6JoZB7uUWhpZV89KbpVQou_34"
+CHAT_ID="-1001768856329"
+TOPIC_ID="53038"
EVENT="$NOTIFYTYPE"
DATE=$(date '+%Y-%m-%d %H:%M:%S')
# Buat fungsi untuk kirim ke telegram
send() {
curl -s -X POST "https://api.telegram.org/bot${TOKEN}/sendMessage" \
-d chat_id="${CHAT_ID}" \
-d message_thread_id="${TOPIC_ID}" \
-d parse_mode=HTML \
--data-urlencode text="$1"
}
# Buat triger EVENT dari upsmon.conf
case "$EVENT" in
ONBATT)
MSG=$(printf "UPS ON BATTERY \n\n%s" " ${DATE}")
;;
LOWBATT)
MSG=$(printf "UPS LOW BATTERY \n\n%s\nProd server Graceful Shutdown" "$DATE")
;;
ONLINE)
MSG=$(printf "UPS ONLINE \n\n%s" "${DATE}")
;;
*)
exit 0
;;
esac
# Panggil fungsi dan parameter dari $MSG
send "$MSG"
Perlu di perhatikan pada bagian yg diberi warna hijau adalah token yg di dapat dari telegram bot, saya asumsikan sudah mensetting di botfather telegram masing-masing.
Untuk uji cobanya script di atas gunakan ini
NOTIFYTYPE=ONLINE UPSNAME=apcsrt@localhost /usr/local/bin/nut-notif.sh
NOTIFYTYPE=ONBATT UPSNAME=apcsrt@localhost /usr/local/bin/nut-notif.sh
NOTIFYTYPE=LOWBATT UPSNAME=apcsrt@localhost /usr/local/bin/nut-notif.sh
Jika sesuai harusnya akan muncul pesan di telegram sesuai pesan yg kita buat. Kemudaian untuk uji coba tingkat lanjut bisa dengan mencabut power UPS dan tunggu sampai masuk mode Low Batt, jika konfig sesuai harusnya server otomatis mengeksekusi shutdown.
Selamat mencoba, semoga bermanfaat.




Top comments (0)