כיצד לנטר את מצב UPS של USB באמצעות SNMP
כיצד לנטר את מצב UPS של USB באמצעות SNMP
ישנם מספר מחשבים עם UPS המחובר ל-USB. כל המחשבים משתמשים בתוכנת apcupsd. נניח שברצונך לצבור מידע על מצב ספק הכוח עבור כל יחידה במקום אחד. מכיוון ש-snmpd כבר פועל שם, זה יהיה הגיוני להרחיב את הפונקציונליות שלו.
הפתרון שלהלן, באדיבות הבלוג של מנהל, יאסוף את הנתונים מכל יחידות snmpd בבת אחת.
על מנת לפקח על סטטוס UPS של USB באמצעות SNMP, עלינו לשנות תחילה את תצורת הדמון snmp.
הכנות
מוסיף את הדברים הבאים ל-config snmpd.conf.
# APC UPS
העבר את .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 פשוט על ידי רישום הערך שהוקצה. # שימו לב ש"הקצאות" כאלה אינן מתמידות, # וגם התחביר או הערך המבוקש לא מאומתים. # if [ "$1" = "-s" ]; לאחר מכן. echo $* >> /tmp/passtest.log. יציאה 0. fi # # בקשות GETNEXT - קבע את המופע התקין הבא. # if [ "$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) הד "מחרוזת"; apcaccess -u -p MODEL; יציאה 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) הד "מחרוזת"; 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) הד "מחרוזת"; 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) הד "מחרוזת"; apcaccess -u -p SELFTEST; יציאה 0;; $PLACE.7.2.4.0) הד "מחרוזת"; apcaccess -u -p SELFTEST; יציאה 0;; $PLACE.8.1.0) echo "Gauge32"; הד 1; יציאה 0;; *) הד "מחרוזת"; הד "אק... $RET $REQ"; יציאה 0;; # לא אמור לקרות. esac.
אם אתה תוהה לגבי OIDs, אתה יכול למצוא אותם פה. שים לב שדגמי UPS מסוימים אינם מחזירים את כל הפרמטרים או בפורמט שגוי, כך שהקוד עשוי להכיל אי דיוקים ושבבים.
עכשיו אתה מוכן.
כיצד לנטר את מצב UPS של USB באמצעות SNMP
כדי לעקוב אחר מצב USB UPS באמצעות SNMP, הפעל את הפקודה הבאה: snmpwalk -v 1 -c public 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 = מד32: 100
SNMPv2-SMI:: enterprises.318.1.1.1.2.2.2.0 = מד32: 36
SNMPv2-SMI:: enterprises.318.1.1.1.2.2.3.0 = זמני זמן: (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 = מד32: 227
SNMPv2-SMI:: enterprises.318.1.1.1.3.2.4.0 = מד32: 50
SNMPv2-SMI:: enterprises.318.1.1.1.3.2.5.0 = STRING: "בדיקה עצמית אוטומטית או מפורשת"
SNMPv2-SMI:: enterprises.318.1.1.1.4.2.1.0 = מד32: 227
SNMPv2-SMI:: enterprises.318.1.1.1.4.2.2.0 = מד32: 50
SNMPv2-SMI:: enterprises.318.1.1.1.4.2.3.0 = מד32: 13
SNMPv2-SMI:: enterprises.318.1.1.1.4.2.4.0 = מד32: 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 = מד32: 1
אם תגדיר עוד יותר את סקריפט הניטור, תוכל לקבל את הגרפים הנחמדים האלה: