Net-SNMP snmpd 검사에서 확장 sh 스크립트 출력은 어떤 OID를 확인합니까?

Net-SNMP snmpd 검사에서 확장 sh 스크립트 출력은 어떤 OID를 확인합니까?

스크립트에서 확인한 조건이 true인 경우 "비어 있음"을 에코하는 쉘 스크립트를 사용하여 extend-shNet-SNMP의 기능을 확장했습니다 . 그러나 이 문자열 ( 및 ) snmpd을 포함하는 OID가 여러 개 있는 것으로 보입니다 . 모니터링할 올바른 OID는 무엇입니까? 여기서 가장 좋은 방법은 무엇입니까? 참고로 "백업"은 이름표일 뿐입니다. 또한 Net-NMP에서도 유사한 동작을 볼 수 있습니다.nsExtendOutput1Line."backup"nsExtendOutputFull."backup"nsExtendOutLine."backup".1위키피디아존재하다값 검색부분.

답변1

어떤 OID를 사용할지는 스크립트 출력 내용, 관심 있는 부분, 이러한 OID를 확인하는 모니터링 시스템 내에서 처리하기 더 쉬운 부분에 따라 달라집니다.

SNMP의 OID는 단지 (표준화된) 이름일 뿐입니다.무엇그들은 snmpd그것을 알고 있습니다.

OID에는 내부적으로 문자열이 포함되어 있으므로 일반적으로 문자열은 문자 수를 세고 각 문자에 대한 ASCII 코드를 추가하여 숫자로 변환됩니다. 예를 들어 "hello"(5자 길이)는 다음과 같습니다.5.104.101.108.108.111.

snmptranslate를 사용하여 이를 확인할 수 있습니다.

% snmptranslate .1.3.6.1.4.1.8072.1.3.2.3.1.1.5.104.101.108.108.111
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."hello"

그러나 질문으로 돌아갑니다. 확인하기 위해 구성할 수 있는 다양한 OID는 extend확장 스크립트 실행에서 여러 속성을 얻는 데 도움이 됩니다.

모든 기능을 보려면 두 줄을 출력하고 다음과 같이 구성된 임의의 값을 반환하는 실행 가능한 sh 스크립트를 고려하십시오.extend hello /usr/local/sbin/myscript

#!/bin/sh
echo today
date
exit 33

snmpwalk를 통한 출력은 다음과 같습니다.

% snmpwalk -v2c -c mysecretcommunity localhost .1.3.6.1.4.1.8072.1.3.2.3.1
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."hello" = STRING: today
NET-SNMP-EXTEND-MIB::nsExtendOutputFull."hello" = STRING: today
Sat Dec 19 15:59:59 UTC 2015
NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."hello" = INTEGER: 2
NET-SNMP-EXTEND-MIB::nsExtendResult."hello" = INTEGER: 33

따라서 확인할 수 있는 OID는 다음과 같습니다.

NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."hello"

이것첫 번째스크립트 출력 라인. 관심 있는 스크립트의 출력이 한 줄뿐이거나 중요한 데이터가 모두 첫 번째 줄에 있는 경우 이 방법을 사용하세요.

NET-SNMP-EXTEND-MIB::nsExtendOutputFull."hello"

스크립트가 여러 줄을 인쇄하고 이를 모두 기록해야 하는 경우 이 방법이 더 나을 수 있습니다.

NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."hello"

이것숫자스크립트 출력의 줄 수입니다. 출력에 몇 줄이 있는지 알고 싶다면 이 옵션을 사용하세요. 스크립트가 처리하는 각 파일에 대해 한 줄을 인쇄하고 처리되는 파일 수에만 관심이 있다면 이것이 필요할 수 있습니다.

NET-SNMP-EXTEND-MIB::nsExtendResult."hello"

스크립트가 실패했는지 성공했는지 확인하고 적절한 종료 코드를 반환했는지 확인하려는 경우 이 OID는 해당 코드를 반환합니다.

NET-SNMP-EXTEND-MIB::nsExtendOutLine."hello".1 = STRING: today
NET-SNMP-EXTEND-MIB::nsExtendOutLine."hello".2 = STRING: Sat Dec 19 16:02:44 GMT 2015

관심 있는 정보가 포함된 특정 행을 알고 있는 경우 위의 OID를 사용하여 특정 행 번호를 얻을 수 있습니다.

이러한 항목과 그 이상은 시스템의 다음 위치에 있는 이 OID에 대한 MIB 파일에서 사용 가능하고 문서화되어 있어야 합니다(다소 기술적인 방식이기는 하지만)./usr/share/snmpd/mibs/NET-SNMP-EXTEND-MIB.txt

따라서 모든 것은 실행하는 스크립트에서 처리 및/또는 모니터링해야 하는 항목에 따라 달라집니다.

SNMP는 UDP를 통해 이루어지기 때문에 구성된 시간 초과 내에 응답이 표시되지 않으면 많은 에이전트가 시간 초과되거나 요청을 다시 보냅니다.가능한여러 번 실행하거나 모니터링 스테이션에 결과가 표시되지 않고 실행될 수 있습니다. 매우 짧은 실행 스크립트(즉, 모든 경우에 몇 초 내에 완료)에만 이 기능을 사용하는 것이 가장 좋습니다.

또 다른 접근 방식은 백그라운드 프로세스를 시작한 다음~ 해야 하다적절한 잠금 방법을 통해 동시 실행을 방지합니다. 후자가 더 많은 질문을 제기한다면, 수행하려는 작업에 따라 다른 주제에서 더 나은 답변을 얻을 수 있을 것 같습니다.

관련 정보