Backend/Network

SNMP Trap

petitCoding 2011. 5. 20. 17:21

SNMP TRAP

 

SNMP (Simple Network Management Protocol) 는 네트워크 장비의 상태 및 프로세스 상태 등을 관리자에게 전달해 줄 수 있는 프로토콜이다. SNMP 데몬은 관리자의 요청이 오면 해당 정보를 관리자에게 일정한 형식에 맞추어 전송해 주는데, GET, SET 등의 명령어를 이용해서 시스템의 정보를 받거나, 시스템에 일정 값을 셋팅해 줄 수도 있다.

 

그리고 한가지 옵션이 더 있는데, 바로 TRAP이다.

TRAP은 관리자가 요청을 해서 정보를 주는 것이 아니라, 시스템 자체에서 비동기적으로 일어나는 이벤트에 대한 정보를 알아서 관리자에게 보내주는 역할을 한다.

 

GET, SET 과 같은 명령어는 snmpd가 수행하고, 이러한 비동기적 TRAP 요청은 snmptrapd 라는 데몬이 실행하게 된다. (UDP 프로토콜을 사용하며, snmpd는 161번, snmptrapd는 162번 port를 사용한다.)

 

 > netstat -nap |grep snmp

udp        0      0 0.0.0.0:161                 0.0.0.0:*                               30551/snmpd
udp        0      0 0.0.0.0:162                 0.0.0.0:*                               14333/snmptrapd

 

사실 SNMP나 SNMP TRAP이나 모두 "SIMPLE"이 앞에 붙음에도 불구하고, 보기에는 상당히 까다로워 보인다. 그런데 실제 테스트 해보니까 의외로 쉬웠다.  (사실 지금 일하다가 까먹을까봐 급 포스팅 중임..ㅋㅋ 소중한 정보는 바로바로 저장해야겠죵)

 

간단한 쉘 스크립트를 작성하여 프로세스의 상태를 확인하고, 그 프로세스가 죽었으면 SNMP 패킷을 전송하여 죽었음을 알리도록 하였다.

 

일단 데몬 설정

 > cd /etc/snmp

 > ls

snmpd.conf     snmptrapd.conf

 > cat snmptrapd.conf

# Example configuration file for snmptrapd
#
# No traps are handled by default, you must edit this file!
#
 authCommunity   log,execute,net public
# traphandle SNMPv2-MIB::coldStart    /usr/bin/bin/my_great_script cold
#

 

설정은 요게 다이다. 빨간부분이 씌여 있어야 데이터가 제대로 보내지는듯.

그리고 snmptrapd 데몬을 실행시킨다.

 

 > snmptrapd -m all -Le -f -d

 

 

그 다음엔, 쉘 스크립트 작성!

 > vi test.sh

 

while true
do
    count=`ps -eaf |grep test | grep -v grep | wc -l`
    if [ $count -lt 1 ] ; then
        echo "sent"
        snmptrap -v 2c -c public 10.1.1.22 "" ucdStart sysContact.0 s "test program is dead!!"
    fi

sleep 1
done

 

> sh test.sh

 

그리고 쉘 프로그램을 실행하면...

 

짜잔~

다음과 같이 SNMP 패킷이 들어오는것을 확인할 수 있다. (SNMP 서버가 없어서 걍 패킷 덤프로 들어오는지만 확인)


반응형

'Backend > Network' 카테고리의 다른 글

FTP - 두 번째.  (0) 2012.04.12
FTP  (0) 2012.04.12
SNMP - MIB 정보 보기  (0) 2011.05.20
TLS Handshaking - 알기 쉽게 정리  (0) 2011.05.13
ARP  (0) 2011.05.13