Menyiapkan Alat Manajemen Jaringan (NUT) dari awal untuk mengelola UPS yang terhubung secara lokal

Mengkonfigurasi Jaringan Alat UPS di Linux menggunakan UPS Eaton 5E650iUSB sebagai contoh


Deskripsi


Layanan Linux NUT (Network UPS Tools) adalah serangkaian program pemantauan dan kontrol untuk berbagai unit catu daya yang tidak pernah terputus (selanjutnya disebut UPS). Daftar lengkap model yang didukung dapat diperoleh dengan melihat daftar driver di file /usr/share/nut/driver.list .


Manual ini menjelaskan cara menonaktifkan PC oleh NUT agent jika kehilangan tegangan dalam jaringan menggunakan contoh UPS Eaton 5E 650iUSB pada distribusi seperti Ubuntu. Untuk digunakan di bawah distribusi lain, gunakan manajer paket distribusi Anda atau kompilasi dari kode sumber. Versi terbaru Network UPS Tools dapat diunduh di GitHub dari tautan tautan .


Pasang NUT


Pertama, Anda perlu menginstal NUT:


root@hostname~# apt install nut 

Buat salinan cadangan folder dengan file konfigurasi NUT:


  root@hostname~# cp -r /etc/nut /etc/nut.orig 

Sekarang tambahkan arahan yang menunjukkan bahwa UPS terhubung ke komputer ini, dan bukan ke yang jauh:


  root@hostname~# echo "MODE=standalone" > /etc/nut/nut.conf 

Sekarang hubungkan UPS ke komputer dan lihat output dari perintah lsusb :


  root@hostname~# lsusb Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 004: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse Bus 001 Device 003: ID 1a2c:2124 China Resource Semico Co., Ltd Bus 001 Device 002: ID 0463:ffff MGE UPS Systems UPS 

Kami mencari apakah UPS didukung oleh layanan NUT. Anda dapat melihatnya secara manual atau menampilkan garis dengan nama merek UPS, misalnya:


  root@hostname~# grep Eaton /usr/share/nut/driver.list ... "Eaton" "ups" "5" "5E650iUSB" "USB port" "usbhid-ups" ... 

Sekarang kami telah memutuskan pada driver, Anda dapat mengkonfigurasi NUT.


Konfigurasi File Konfigurasi


Izin dan pemilik yang benar harus ditetapkan untuk file konfigurasi NUT


  root@hostname~# chown root:nut /etc/nut/* root@hostname~# chmod 640 /etc/nut/* 

Pengaturan NUT


Pengaturan driver, metode koneksi dan waktu shutdown


Tambahkan baris ke akhir file /etc/nut/ups.conf atau buat yang baru dengan konten berikut:


  root@hostname~# nano /etc/nut/ups.conf #    NUT.         [eaton] #   driver = usbhid-ups #  .           port = auto #        offdelay = 90 #          ondelay = 5 #   desc = "Eaton 5E 650iUSB" 

Mengonfigurasi NUT System Group Access ke UPS melalui USB


Agar NUT memiliki akses ke antarmuka USB UPS, Anda perlu menulis aturan akses untuk udev .


udev adalah subsistem manajemen perangkat Linux. Berkat udev, hanya perangkat yang saat ini terhubung yang berada di folder / dev .


Jalankan perintah


  root@hostname~# lsusb 

dan temukan jalur yang sesuai dengan UPS. Dalam contoh kita, ini


 Bus 001 Device 002: ID 0463:ffff MGE UPS Systems UPS 

di mana setelah ID pergi idVendor: idProduct ( 0463: ffff )


Sekarang buat file aturan untuk udev :


  root@hostname~# /etc/udev/rules.d/90-nut-ups.rules # Eaton 5E650iUSB ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="0463", ATTR{idProduct}=="ffff", MODE="0660", GROUP="nut" 

Setelah membuat aturan, Anda harus memulai kembali layanan udev :


  root@hostname~# service udev restart 

Setelah itu, cabut dan sambungkan kembali kabel USB dari UPS. Setelah itu, jalankan perintah untuk memverifikasi kesehatan aturan udev :


 root@hostname~# upsdrvctl start Network UPS Tools - UPS driver controller 2.7.4 Network UPS Tools - Generic HID driver 0.41 (2.7.4) USB communication driver 0.33 Using subdriver: MGE HID 1.39 

Jika outputnya kurang lebih sama, maka semuanya sudah terkonfigurasi dengan benar.


Konfigurasikan alamat NUT dan port mendengarkan untuk koneksi ke NUT


Tambahkan baris di akhir file /etc/nut/upsd.conf atau buat yang baru dengan konten berikut:


  root@hostname~# nano /etc/nut/upsd.conf #  Loopback    3493 LISTEN 127.0.0.1 3493 

Ingatlah bahwa MENDENGAR harus ditulis dengan huruf kapital, atau tidak ada yang berhasil.


Konfigurasikan profil pengguna untuk mengakses NUT


Kami membuat pengguna upsmonitor tanpa hak masuk dan folder rumah, dengan UID kurang dari 1000, sehingga dianggap sebagai layanan dan bukan pada layar masuk pengguna, dan dengan GID dari grup kacang .


Cari tahu GID dari grup kacang :


  root@hostname~# cat /etc/group | grep nut:x: nut:x:134: 

Sekarang kami mengambil UID untuk pengguna. Kami memilih salah satu yang hampir tidak digunakan oleh program apa pun, misalnya, 339, atau kami menjalankan:


 root@hostname~# cat /etc/passwd | grep [  100  1000] 

dan jika itu tidak menampilkan apa pun, maka UID gratis dan dapat digunakan untuk membuat pengguna upsmonitor :


 root@hostname~# useradd -d /dev/null -s /usr/sbin/nologin -u 339 -g 134 -p UPSPASS upsmonitor 

Sekarang tambahkan pengguna ini ke file profil pengguna NUT /etc/nut/upsd.users :


 root@hostname~# nano /etc/nut/upsd.users #   [upsmonitor] #   password = UPSPASS #      ,     .. actions = SET #          upscmd instcmds = ALL #       NUT upsmon master 

Pengaturan Pemantauan NUT


Tambahkan baris ke akhir file /etc/nut/upsmon.conf atau buat yang baru dengan konten berikut:


 root@hostname~# nano /etc/nut/upsmon.conf #   eaton  localhost     upsmonitor MONITOR eaton@localhost 1 upsmonitor UPSPASS master #    MINSUPPLIES 1 #    NUT,      NOTIFYCMD /sbin/upssched #           POLLFREQ 5 #           POLLFREQALERT 5 #      NUT    HOSTSYNC 15 #  NUT                "" DEADTIME 15 #  ,  ,           POWERDOWNFLAG /etc/killpower #          NOTIFYMSG ONLINE "UPS %s on line power" #           NOTIFYMSG ONBATT "UPS %s on battery" #             NOTIFYMSG LOWBATT "UPS %s battery is low" #          NOTIFYMSG FSD "UPS %s: forced shutdown in progress" #           NOTIFYMSG COMMOK "Communications with UPS %s established" #           , ,    USB  NOTIFYMSG COMMBAD "Communications with UPS %s lost" #                        NOTIFYMSG SHUTDOWN "Auto logout and shutdown proceeding" #            NOTIFYMSG REPLBATT "UPS %s battery needs to be replaced" #            NOTIFYMSG NOCOMM "UPS %s is unavailable" #            NUT upsmon NOTIFYMSG NOPARENT "upsmon parent process died - shutdown impossible" #     ,   NOTIFYFLAG. # SYSLOG        ,   /var/log/syslog # WALL          # EXEC   ,    /etc/nut/upsshed.conf,    NOTIFYFLAG ONLINE SYSLOG+WALL+EXEC NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC NOTIFYFLAG LOWBATT SYSLOG+WALL+EXEC NOTIFYFLAG FSD SYSLOG+WALL+EXEC NOTIFYFLAG COMMOK SYSLOG+WALL+EXEC NOTIFYFLAG COMMBAD SYSLOG+WALL+EXEC NOTIFYFLAG SHUTDOWN SYSLOG+WALL+EXEC NOTIFYFLAG REPLBATT SYSLOG+WALL+EXEC NOTIFYFLAG NOCOMM SYSLOG+WALL+EXEC NOTIFYFLAG NOPARENT SYSLOG+WALL+EXEC #           (12 ) RBWARNTIME 43200 #  NUT      ,    NOCOMM  300  NOCOMMWARNTIME 300 #       FINALDELAY 5 

Tes koneksi


Mari kita lihat apa yang dapat dilaporkan oleh UPS tentang kondisinya:


  root@hostname~# upsc eaton@localhost battery.charge: 100 battery.runtime: 1964 battery.type: PbAc device.mfr: EATON device.model: 5E 650i device.type: ups driver.name: usbhid-ups driver.parameter.offdelay: 60 driver.parameter.pollfreq: 30 driver.parameter.pollinterval: 2 driver.parameter.port: auto driver.parameter.synchronous: no driver.version: 2.7.4 driver.version.data: MGE HID 1.39 driver.version.internal: 0.41 input.voltage: 228.0 outlet.1.status: on outlet.desc: Main Outlet outlet.id: 1 outlet.switchable: no output.frequency: 50.0 output.frequency.nominal: 50 output.voltage: 226.0 output.voltage.nominal: 230 ups.beeper.status: enabled ups.delay.shutdown: 60 ups.firmware: 03.08.0018 ups.load: 18 ups.mfr: EATON ups.model: 5E 650i ups.power.nominal: 650 ups.productid: ffff ups.start.battery: yes ups.status: OL ups.timer.shutdown: -1 ups.vendorid: 0463 

Semua bidang kurang lebih jelas atau didefinisikan oleh kami dalam file konfigurasi sebelumnya. Kode status UPS ditampilkan dalam bidang ups.status: dan dapat mengambil nilai:


  • OL - sistem ini ditenagai oleh jaringan;
  • OB - sistem beroperasi dengan daya baterai;
  • LB - sistem beroperasi dengan baterai yang kosong.

Perintah dan variabel internal UPS


UPS dapat mengeluarkan perintah langsung dari konsol menggunakan perintah upscmd . Daftar perintah yang tersedia dapat diperoleh dengan menjalankan perintah:


  root@hostname~# upscmd -l eaton@localhost Instant commands supported on UPS [eaton]: beeper.disable - Disable the UPS beeper beeper.enable - Enable the UPS beeper beeper.mute - Temporarily mute the UPS beeper beeper.off - Obsolete (use beeper.disable or beeper.mute) beeper.on - Obsolete (use beeper.enable) load.off - Turn off the load immediately load.off.delay - Turn off the load with a delay (seconds) shutdown.stop - Stop a shutdown in progress 

Pager. * Pengaturan mengontrol alarm UPS jika terjadi kehilangan daya, load.off segera mematikan PC, load.off.delay penundaan dalam hitungan detik sebelum mematikan PC, shutdown.stop - perintah untuk menghentikan proses mematikan PC.


Dalam beberapa UPS ada opsi lain, misalnya, tes baterai atau shutdown.return , dalam hal ini komputer akan dimatikan, tetapi UPS akan mengirim sinyal start PC segera setelah daya listrik kembali. Agar ini berfungsi, di BIOS PC, fungsi yang sesuai, yang biasanya terletak di suatu tempat di area pengaturan daya, harus diaktifkan.


Misalnya, matikan UPS yang mencicit ketika listrik padam:


  root@hostname~# upscmd -u upsmonitor -p UPSPASS eaton@localhost beeper.disable 

Untuk mengaktifkan, ganti beeper.disable dengan beeper.enable .


Mengkonfigurasi Penjadwal Tugas NUT ditingkatkan


Tambahkan baris di akhir file /etc/nut/upssched.conf atau buat yang baru dengan konten berikut:


  root@hostname~# nano /etc/nut/upssched.conf # ,       CMDSCRIPT /etc/nut/cmd.sh PIPEFN /tmp/upspipe LOCKFN /tmp/upslock #     case    /etc/nut/cmd.sh AT COMMBAD * EXECUTE commbad AT COMMOK * EXECUTE commok AT NOCOMM * EXECUTE nocomm #      .         AT ONBATT * EXECUTE powerout #  ,      shutdownnow  cmd.sh AT ONBATT * START-TIMER shutdownnow 90 AT LOWBATT * EXECUTE shutdowncritical AT ONLINE * CANCEL-TIMER shutdownnow AT ONLINE * EXECUTE powerup 

Sekarang kita membutuhkan script /etc/nut/cmd.sh . Buat itu, tetapkan haknya dan isi:


  root@hostname~# touch /etc/nut/cmd.sh root@hostname~# chmod 666 /etc/nut/cmd.sh root@hostname~# nano /etc/nut/cmd.sh #!/bin/sh # logger     syslog case $1 in commbad) logger "UPS communications failure" ;; commok) logger "UPS communications restored" ;; nocomm) logger "UPS communications cannot be established" ;; powerout) #         logger "UPS on battery. Shutdown in 90 seconds...." upscmd -u upsmonitor -p UPSPASS eaton@localhost shutdown.return ;; shutdownnow) logger "UPS has been on battery for 120 seconds. Starting orderly shutdown" #     upsmon -c fsd ;; shutdowncritical) logger "UPS battery level CRITICAL. Shutting down NOW!!!!" #     upsmon -c fsd ;; powerup) logger "UPS on line. Shutdown aborted." #     upscmd -u upsmon -p pass mustek@localhost shutdown.stop ;; *) logger "Unrecognized command: $1" ;; esac 

Kesimpulan


Ini menyelesaikan pengaturan. Anda dapat mengujinya dengan mencabut UPS dari soket.

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


All Articles