2010년 4월 25일 일요일

MySQL를 snmpd로 감시4

pass의 구현과 사용방법

【사용방법】
우선은 사용방법부터 알아보자. snmpd.conf에 다음처럼 기술한다.

pass .1.3.6.1.4.1.2021.51 /etc/snmp/mysql_proc_pass.sh .1.3.6.1.4.1.2021.51


여기에서는 새롭게 /etc/snmp/mysql_proc_pass.sh스크립트를 만들어보자. 이 스크립트가 필요한 값을 표준출력으로 되돌려주게 된다.

exec와 마찬가지로 MIB OID는 맘대로 결정한다.
pass의 포맷은 다음과 같다.

pass MIBOID 명령어

mysql_proc_pass.sh의 뒤에 있는 .1.3.6.1.4.1.2021.51 는 명령어의 인수이다. 이것은 pass의 사양에 따른 것이다.

【snmpd의 동작】
snmpd에 .1.3.6.1.4.1.2021.51 를 질의하면 snmpd는 다음과 같이 실행한다.

/etc/snmp/mysql_proc_pass.sh .1.3.6.1.4.1.2021.51 -n .1.3.6.1.4.1.2021.51

복잡하게 보이므로 간략화하면 다음과 같다.

명령어 -n .1.3.6.1.4.1.2021.51

-n옵션과 지정된 MIB OID를 인수로 추가해서 명령어가 실행된다. -n이외에 -g 옵션이 지정되는 경우도 있다. -n은 SNMP getnext 요청시에 실행된다. -g는 SNMP get요청시에 실행된다.

pass에 지정된 명령어는 -g와 -n 모두의 옵션을 지원하지 않으면 안된다는 것이다.

또 -s옵션도 존재하지만 -s는 값을 set할 때에 사용되는 옵션이다.

【출력포맷】
실행되는 명령어의 -n와 -g옵션때에 출력되는 포맷은 다음과 같다.

MIB OID
타입


LF개행으로 세개의 행이다.
타입은 string, integer, counter, gauge, timeticks, ipaddress, objid중에 한개 이다.

스크립트 인수에 MIB OID가 있었던 것은 이 출력의 첫번째 행을 위해서이다.
출력의 첫번째 행을 스크립트내부에서 생성할 필요가 있다.


【에러처리】
-n과 -g 옵션일 때 스크립트가 에러를 처리하고자 할 때에는 표준출력에는 아무것도 되돌리지 말고 exit한다.

【-n 옵션】
ex 1>
명령:
명령어 -n .1.3.6.1.4.1.2021.51
결과:
.1.3.6.1.4.1.2021.51 .1
string
mysql_proc_pass
ex 2>
명령:
명령어 -n .1.3.6.1.4.1.2021.51.1
결과:
.1.3.6.1.4.1.2021.51 .2
string
/etc/snmp/mysql_proc_pass.sh
ex 3>
명령:
명령어 -n .1.3.6.1.4.1.2021.51.2
결과:
.1.3.6.1.4.1.2021.51 .3
integer
1
ex 3>
명령:
명령어 -n .1.3.6.1.4.1.2021.51.3
결과:
(없음)


【-g 옵션】
-g 옵션일 때에는 -n하고는 달리 지정된 MIB OID하고 그 값을 되돌려줄 필요가 있다.
결과의 첫번째 행에 -n의 경우는 「다음 MIB OID」, -g의 경우는 「지정된 MIB OID」가 된다.