Як контролювати стан USB UPS через SNMP
Як контролювати стан USB UPS через SNMP
Існує кілька комп’ютерів із USB-підключеним ДБЖ. Усі комп’ютери використовують програму apcupsd. Скажімо, ви хочете зібрати інформацію про стан джерела живлення для кожного блоку в одному місці. Оскільки snmpd там уже працює, логічно було б розширити його функціональність.
Реклама
Наведене нижче рішення, надане Блог адміністратора, збиратиме дані з усіх одиниць snmpd одночасно.
Щоб відстежувати стан USB UPS через SNMP, нам потрібно спочатку змінити конфігурацію демона snmp.
Препарати
Додає наступне до конфігурації snmpd.conf.
# ДБЖ APC
передати .1.3.6.1.4.1.318.1.1.1 /bin/sh /etc/snmp/apcupsd.sh
Вміст сценарію /etc/snmp/apcupsd.sh виглядає наступним чином.
#!/bin/sh -f # Перевірте, чи apcupsd онлайн. apcaccess > /dev/null 2>&1 || вихід 0 PLACE=".1.3.6.1.4.1.318.1.1.1" REQ="$2" # Запрошений OID # # Обробляйте запити SET, просто реєструючи призначене значення. # Зауважте, що такі "призначення" не є постійними, # не перевіряються синтаксис чи запитане значення. # якщо [ "$1" = "-s" ]; тоді. echo $* >> /tmp/passtest.log. вихід 0. fi # # Запити GETNEXT - визначити наступний дійсний екземпляр. # якщо [ "$1" = "-n" ]; тоді. випадок "$REQ" у. $PLACE| \ $PLACE.0| \ $PLACE.0.*| \ $PLACE.1| \ $PLACE.1.1.0*) RET=$PLACE.1.1.1.0;; $PLACE.1*| \ $PLACE.2.0| \ $PLACE.2.0.*| \ $PLACE.2.1| \ $PLACE.2.2.0*) RET=$PLACE.2.2.1.0;; $PLACE.2.2.1*) RET=$PLACE.2.2.2.0;; $PLACE.2.2.2*) RET=$PLACE.2.2.3.0;; $PLACE.2.2.3*) RET=$PLACE.2.2.4.0;; $PLACE.2*| \ $PLACE.3.0*| \ $PLACE.3.1*| \ $PLACE.3.2.0*) RET=$PLACE.3.2.1.0;; $PLACE.3.2.1*| \ $PLACE.3.2.2*| \ $PLACE.3.2.3*) RET=$PLACE.3.2.4.0;; $PLACE.3.2.4*) RET=$PLACE.3.2.5.0;; $PLACE.3.2*| \ $PLACE.4.0*| \ $PLACE.4.1*| \ $PLACE.4.2.0*) RET=$PLACE.4.2.1.0;; $PLACE.4.2.1*) RET=$PLACE.4.2.2.0;; $PLACE.4.2.2*) RET=$PLACE.4.2.3.0;; $PLACE.4.2.3*) RET=$PLACE.4.2.4.0;; $PLACE.4.2.*| \ $PLACE.5*| \ $PLACE.6*| \ $PLACE.7.0*| \ $PLACE.7.1*| \ $PLACE.7.2.0*| \ $PLACE.7.2.1*| \ $PLACE.7.2.2*) RET=$PLACE.7.2.3.0;; $PLACE.7.2.3*) RET=$PLACE.7.2.4.0;; $PLACE.7*| \ $PLACE.8.0*) RET=$PLACE.8.1.0;; *) вихід 0;; esac. інше. # # Запити GET - перевірте дійсний екземпляр. # випадок "$REQ" у. $PLACE.1.1.1.0| \ $PLACE.2.2.1.0| \ $PLACE.2.2.2.0| \ $PLACE.2.2.3.0| \ $PLACE.2.2.4.0| \ $PLACE.3.2.1.0| \ $PLACE.3.2.4.0| \ $PLACE.3.2.5.0| \ $PLACE.4.2.1.0| \ $PLACE.4.2.2.0| \ $PLACE.4.2.3.0| \ $PLACE.4.2.4.0| \ $PLACE.7.2.3.0| \ $PLACE.7.2.4.0| \ $PLACE.8.1.0) RET=$REQ;; *) вихід 0;; esac. fi # # "Обробити" запити GET* - повернути жорстко запрограмоване значення. # луна "$RET" справа "$RET" у. $PLACE.1.1.1.0) echo "рядок"; apcaccess -u -p МОДЕЛЬ; вихід 0;; $PLACE.2.2.1.0) echo "Gauge32"; apcaccess -u -p BCHARGE; вихід 0;; $PLACE.2.2.2.0) echo "Gauge32"; apcaccess -u -p ITEMP; вихід 0;; $PLACE.2.2.3.0) echo "Timeticks"; echo $(($(LC_ALL=C printf "%.*f" 0 $(apcaccess -u -p TIMELEFT)) * 6000)); вихід 0;; $PLACE.2.2.4.0) echo "рядок"; apcaccess -u -p BATTDATE; вихід 0;; $PLACE.3.2.1.0) echo "Gauge32"; apcaccess -u -p LINEV; вихід 0;; $PLACE.3.2.4.0) echo "Gauge32"; apcaccess -u -p LINEFREQ; вихід 0;; $PLACE.3.2.5.0) echo "рядок"; apcaccess -u -p LASTXFER; вихід 0;; $PLACE.4.2.1.0) echo "Gauge32"; apcaccess -u -p OUTPUTV; вихід 0;; $PLACE.4.2.2.0) echo "Gauge32"; apcaccess -u -p LINEFREQ; вихід 0;; $PLACE.4.2.3.0) echo "Gauge32"; apcaccess -u -p LOADPCT; вихід 0;; $PLACE.4.2.4.0) echo "Gauge32"; apcaccess -u -p LOADPCT; вихід 0;; $PLACE.7.2.3.0) echo "рядок"; apcaccess -u -p САМОТЕСТ; вихід 0;; $PLACE.7.2.4.0) echo "рядок"; apcaccess -u -p САМОТЕСТ; вихід 0;; $PLACE.8.1.0) echo "Gauge32"; відлуння 1; вихід 0;; *) echo «рядок»; луна "підтвердити... $RET $REQ"; вихід 0;; # Не повинно статися. esac.
Якщо вам цікаво про OID, ви можете знайти їх ТУТ. Зауважте, що деякі моделі ДБЖ повертають не всі параметри або у неправильному форматі, тому код може містити неточності та заглушки.
Тепер ви готові.
Як контролювати стан USB UPS через SNMP
Щоб контролювати стан USB UPS через SNMP, виконайте таку команду: snmpwalk -v 1 -c загальнодоступна 127.0.0.1 .1.3.6.1.4.1.318.1.1.1
. Вихід буде таким:
SNMPv2-SMI:: enterprises.318.1.1.1.1.1.1.0 = STRING: «Smart-UPS 750»
SNMPv2-SMI:: enterprises.318.1.1.1.2.2.1.0 = Gauge32: 100
SNMPv2-SMI:: enterprises.318.1.1.1.2.2.2.0 = Gauge32: 36
SNMPv2-SMI:: enterprises.318.1.1.1.2.2.3.0 = Timeticks: (432000) 1:12:00.00
SNMPv2-SMI:: enterprises.318.1.1.1.2.2.4.0 = STRING: "2020-05-14"
SNMPv2-SMI:: enterprises.318.1.1.1.3.2.1.0 = Gauge32: 227
SNMPv2-SMI:: enterprises.318.1.1.1.3.2.4.0 = Gauge32: 50
SNMPv2-SMI:: enterprises.318.1.1.1.3.2.5.0 = STRING: "Автоматична або явна самоперевірка"
SNMPv2-SMI:: enterprises.318.1.1.1.4.2.1.0 = Gauge32: 227
SNMPv2-SMI:: enterprises.318.1.1.1.4.2.2.0 = Gauge32: 50
SNMPv2-SMI:: enterprises.318.1.1.1.4.2.3.0 = Gauge32: 13
SNMPv2-SMI:: enterprises.318.1.1.1.4.2.4.0 = Gauge32: 13
SNMPv2-SMI:: enterprises.318.1.1.1.7.2.3.0 = STRING: "НІ"
SNMPv2-SMI:: enterprises.318.1.1.1.7.2.4.0 = STRING: "НІ"
SNMPv2-SMI:: enterprises.318.1.1.1.8.1.0 = Gauge32: 1
Якщо ви додатково налаштуєте сценарій моніторингу, ви можете отримати ці чудові графіки: