SNMP를 통해 USB UPS 상태를 모니터링하는 방법
SNMP를 통해 USB UPS 상태를 모니터링하는 방법
USB 연결 UPS가 있는 컴퓨터가 여러 대 있습니다. 모든 컴퓨터는 apcupsd 프로그램을 사용합니다. 모든 장치의 전원 공급 장치 상태에 대한 정보를 한 곳에서 집계하려고 한다고 가정해 보겠습니다. snmpd는 이미 그곳에서 실행되고 있기 때문에 기능을 확장하는 것이 논리적일 것입니다.
아래 솔루션, 의례 관리자의 블로그, 모든 snmpd 장치에서 한 번에 데이터를 수집합니다.
SNMP를 통해 USB UPS 상태를 모니터링하려면 먼저 snmp 데몬 구성을 수정해야 합니다.
준비
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" ]; 그 다음에. 에코 $* >> /tmp/passtest.log. 0번 출구. 파이 # # 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; 이삭. 또 다른. # # 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; 이삭. 파이 # # "Process" 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 항목; 0번 출구;; $PLACE.2.2.3.0) echo "타임틱"; 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 SELFTEST; 0번 출구;; $PLACE.7.2.4.0) echo "문자열"; apcaccess -u -p SELFTEST; 0번 출구;; $PLACE.8.1.0) echo "Gauge32"; 에코 1; 0번 출구;; *) echo "문자열"; 에코 "아... $RET $REQ"; 0번 출구;; # 일어나지 않아야 합니다. 이삭.
OID가 궁금하시다면 찾으실 수 있습니다 여기. 일부 UPS 모델은 모든 매개변수 또는 잘못된 형식을 반환하지 않으므로 코드에 부정확한 내용과 스텁이 포함될 수 있습니다.
이제 준비가 되었습니다.
SNMP를 통해 USB UPS 상태를 모니터링하는 방법
SNMP를 통해 USB UPS 상태를 모니터링하려면 다음 명령을 실행하십시오. snmpwalk -v 1 -c 공개 127.0.0.1 .1.3.6.1.4.1.318.1.1.1
. 출력은 다음과 같습니다.
SNMPv2-SMI:: enterprise.318.1.1.1.1.1.1.0 = STRING: "Smart-UPS 750"
SNMPv2-SMI:: enterprise.318.1.1.1.2.2.1.0 = Gauge32: 100
SNMPv2-SMI:: enterprise.318.1.1.1.2.2.2.0 = Gauge32: 36
SNMPv2-SMI:: enterprise.318.1.1.1.2.2.3.0 = 타임틱: (432000) 1:12:00.00
SNMPv2-SMI:: enterprise.318.1.1.1.2.2.4.0 = STRING: "2020-05-14"
SNMPv2-SMI:: enterprise.318.1.1.1.3.2.1.0 = Gauge32: 227
SNMPv2-SMI:: enterprise.318.1.1.1.3.2.4.0 = Gauge32: 50
SNMPv2-SMI:: enterprise.318.1.1.1.3.2.5.0 = STRING: "자동 또는 명시적 자체 테스트"
SNMPv2-SMI:: enterprise.318.1.1.1.4.2.1.0 = Gauge32: 227
SNMPv2-SMI:: enterprise.318.1.1.1.4.2.2.0 = Gauge32: 50
SNMPv2-SMI:: enterprise.318.1.1.1.4.2.3.0 = Gauge32: 13
SNMPv2-SMI:: enterprise.318.1.1.1.4.2.4.0 = Gauge32: 13
SNMPv2-SMI:: enterprise.318.1.1.1.7.2.3.0 = STRING: "아니요"
SNMPv2-SMI:: enterprise.318.1.1.1.7.2.4.0 = STRING: "아니요"
SNMPv2-SMI:: enterprise.318.1.1.1.8.1.0 = Gauge32: 1
모니터링 스크립트를 추가로 구성하면 다음과 같은 멋진 그래프를 얻을 수 있습니다.