2. SNMP Agent 설치#
이 장은 SNMP를 사용하기 위해서 SNMP Agent를 설치하는 방법과 Altibase를 설정하는 방법을 설명한다.
SNMP Agent 설치#
이 절에서는 SNMP Agent를 설치하고 Altibase와 연동하기 위한 방법을 설명한다. 알티베이스는 net-snmp를 실행하기 위해 두 가지 방법으로 설정할 수 있다.
-
알티베이스에서 패키징한 NET-SNMP로 설정하기
-
기설치된 환경에서 NET-SNMP에 설정하기
Altibase SNMP Agent는 오픈소스 net-snmp를 준수한다. NET-SNMP 바이너리 및 환경 파일의 설정 방법은 net-snmp 홈페이지를 참조한다.
패키지 다운로드#
Altibase 홈페이지에서 다운로드 받은 Altibase 패키지를 다운로드하여 설치한다.
altibase-snmp-xxx.tar.gz를 압축을 풀면, 아래와 같은 구성을 볼 수 있다.
$ gzip -d altibase-snmp-xxx.tar.gz
$ tar xvf altibase-snmp-xxx.tar
...
...
...
== bin
= snmp manger (snmpget, snmpset, snmpwak)
== sbin
= snmpd : snmp Master/Sub agent daemon
= snmptrapd : snmp trap daemon
= altisnmpd : Altibase snmp sub agent daemon
== share/snmp/mibs
= ALTIBASE-MIB.txt : Altibase MIB
== etc/snmp
= snmpd.conf : snmpd 환경파일
= altisnmpd.conf : altisnmpd 환경파일
= altisnmp.env : 환경 변수 설정
altisnmpd, altisnmpd.conf, ALTIBASE-MIB.txt 3개의 파일을 제외하고는 모두 net-snmp 오리지널 소스를 컴파일한 바이너리이다.
고객의 장비에 설치된 net-snmp와 연동하는 경우에는 위의 3개 파일만 설정하면 된다.
Altibase 프로퍼티 설정#
Altibase에서 SNMP 기능을 사용하기 위해서는 아래의 프로퍼티 파일을 사용 목적에 맞게 수정해야 한다. 알티베이스 프로퍼티 파일은 $ALTIBASE_HOME/conf에 있다.
SNMP 기능과 관련된 프로퍼티는 다음과 같다. 각 프로퍼티에 대한 상세한 설명은 General Reference > 2장. Altibase 프로퍼티를 참조한다.
-
SNMP_ENABLE
-
SNMP_PORT_NO
-
SNMP_TRAP_PORT_NO
-
SNMP_RECV_TIMEOUT
-
SNMP_SEND_TIMEOUT
-
SNMP_MSGLOG_FLAG
-
SNMP_ALARM_QUERY_TIMEOUT
-
SNMP_ALARM_FETCH_TIMEOUT
-
SNMP_ALARM_UTRANS_TIMEOUT
-
SNMP_ALARM_SESSION_FAILURE_COUNT
패키징한 NET-SNMP로 설치 및 구동#
이 절에서는 알티베이스에서 패키징한 NET-SNMP를 설정하고, 실행하기 위한 방법을 설명한다.
참고 : 포트 번호는 시스템에 구동중인 snmp와 충돌이 일어나지 않도록 기본포트 번호에 1000을 더하도록 설정한다.
환경변수 설정#
각 바이너리 실행을 쉽게 하기 위해 source 명령을 이용해 환경변수를 설정한다. 다음 설명부터는 altisnmp.env가 설정된 환경이라고 가정한다.
$ source altisnmp.env
ALTISNMP=/home/donlet/work/altibase-snmp-1.0.1.release
ALTISNMPCONF=/home/donlet/work/altibase-snmp-1.0.1.release/etc/snmp
ALTISNMPBIN=/home/donlet/work/altibase-snmp-1.0.1.release/bin
ALTISNMPSBIN=/home/donlet/work/altibase-snmp-1.0.1.release/sbin
SNMP_PERSISTENT_FILE=/home/donlet/work/altibase-snmp-1.0.1.release/var/net-snmp/snmpd.conf
SNMP_PERSISTENT_DIR=/home/donlet/work/altibase-snmp-1.0.1.release/var/net-snmp
MIBDIRS=/home/donlet/work/altibase-snmp-1.0.1.release/share/snmp/mibs
MIBS=ALL
snmpd 설정 및 실행#
snmpd는 SNMP의 마스터 에이전트 데몬이다. 아래에서 snmpd를 실행하기 위한 환경 설정과 실행을 설명한다.
환경파일 설정#
SNMP를 사용하기 위하여 포트번호와 snmpd를 설정한다.
snmpd와 snmptrapd는 포트번호 1162번으로 통신하고, snmpd는 master agent로 설정한다.
$ cat $ALTISNMPCONF/snmpd.conf
rocommunity public
rwcommunity private
syslocation mysystem
syscontact [email protected]
sysservices 0
trap2sink localhost public 1162
master agentx
실행#
SNMP Agent 실행 옵션은 [-f], [-l], [-s], [-p]이다.
[-f]는 snmpd의 실행을 foreground에서 볼 수 있다. [-l] 옵션은 파일에 로그를, [-s]는 syslog를 남기고, [-P]는 pid 파일을 생성한다.
우선 foreground로 snmpd가 실행되는지 확인한다.
$ $ALTISNMPSBIN/snmpd -f -L -c $ALTISNMPCONF/snmpd.conf -C -x localhost:1705 udp:localhost:1161
Turning on AgentX master support.
NET-SNMP version 5.0.8
snmpd와 altibase snmp subagent는 1705 포트로 TCP 통신을 하고, snmpd와 snmp manager (snmpget, snmpset, snmpwalk 등)는 1161 포트로 UDP 통신을 하는 것을 확인할 수 있다.
위와 같이 실행이 되는 것을 확인하였다면, "Ctrl + C"를 눌러 실행을 종료하고, background로 snmpd를 실행한다. background로 실행하기 위해 -f 옵션은 제거하였다.
$ $ALTISNMPSBIN/snmpd -c $ALTISNMPCONF/snmpd.conf -C -x localhost:1705 -l /tmp/snmpd.log -s -P /tmp/snmpd.pid udp:localhost:1161
snmpd 종료#
SNMP Agent를 종료하기 위해서 kill 명령으로 종료시킬 수 있다.
$ kill `cat /tmp/snmpd.pid`
snmptrapd 실행#
snmptrapd는 SNMP 트랩을 위한 데몬이다. 아래에서 snmptrapd를 사용하는 방법을 설명한다.
snmptrapd 실행 옵션은 [-f], [-o], [-s], [-u]이다. [-f]는 snmpd의 실행을 foreground에서 볼 수 있다. [-o] 옵션은 파일에 로그를, [-s]는 syslog를 남기고, [-u]는 pid 파일을 생성한다.
snmptrapd를 아래와 같이 foreground로 실행하여 확인한다. snmpd.conf에 trap2sink에 포트는 1162로 설정했으므로 udp:localhost:1162로 반드시 옵션을 설정해야 한다.
$ $ALTISNMPSBIN/snmptrapd -f -P udp:localhost:1162
2014-10-28 14:46:32 NET-SNMP version 5.0.8 Started.
위와 같이 실행이 되는 것을 확인하였다면, "Ctrl + C"를 눌러 실행을 종료하고, snmptrapd를 실행한다. background로 실행하기 위해 -f 옵션은 제거하였다.
$ $ALTISNMPSBIN/snmptrapd -s -o /tmp/snmptrapd.log -u /tmp/snmptrapd.pid udp:localhost:1162
snmptrapd를 실행한 상태에서 snmpd를 재시작한다. snmpd가 재시작했다는 트랩이 syslog와 /tmp/snmptrapd.log 파일에 생성된다.
이제 snmpd와 snmptrapd간에 통신이 정상적으로 실행되는 것을 확인할 수 있다.
$ cat /tmp/snmptrapd.log
Starting snmptrapd 5.0.8
2014-10-28 14:57:40 NET-SNMP version 5.0.8 Started.
2014-10-28 14:58:12 localhost [127.0.0.1]:
SNMPv2-MIB::sysUpTime.0 = Timeticks: (2) 0:00:00.02 SNMPv2-MIB::snmpTrapOID.0 = OID: SNMPv2-MIB::coldStart SNMPv2-MIB::snmpTrapEnterprise.0 = OID: NET-SNMP-TC::linux
localhost [127.0.0.1]: Trap SNMPv2-MIB::sysUpTime.0 = Timeticks: (2) 0:00:00.02, SNMPv2-MIB::snmpTrapOID.0 = OID: SNMPv2-MIB::coldStart, SNMPv2-MIB::snmpTrapEnterprise.0 = OID: NET-SNMP-TC::linux
2014-10-28 14:58:14 localhost [127.0.0.1]:
SNMPv2-MIB::sysUpTime.0 = Timeticks: (143) 0:00:01.43 SNMPv2-MIB::snmpTrapOID.0 = OID: NET-SNMP-AGENT-MIB::nsNotifyShutdown
localhost [127.0.0.1]: Trap SNMPv2-MIB::sysUpTime.0 = Timeticks: (143) 0:00:01.43, SNMPv2-MIB::snmpTrapOID.0 = OID: NET-SNMP-AGENT-MIB::nsNotifyShutdown
snmptrapd 종료#
snmptrapd의 실행을 종료하기 위해서 kill 명령으로 종료시킬 수 있다.
$ kill `cat /tmp/snmptrapd.pid`
altisnmpd 실행#
altisnmpd는 Altibase 서버에 설치되는 SNMP 서브 에이전트 데몬이다. 아래에서 altisnmpd를 사용하기 위한 환경 설정과 실행 방법을 설명한다.
환경파일 설정#
altisnmpd가 Altibase 서버와 통신을 하기 위해 PORT_NO와 SNMP_PORT_NO를 알티베이스 환경 파일에서 설정한 것과 동일하게 설정해야 한다.
또한 altibase_trap 역시 Altibase의 SNMP_TRAP_PORT_NO와 동일하게 설정한다.
$ cat $ALTISNMPCONF/altisnmpd.conf
# ALTIBASE PORT_NO SNMP_PORT_NO
altibase 52473 20400
# ALTIBASE_TRAP SNMP_TRAP_PORT_NO
altibase_trap 20500
만약 여러 대의 Altibase 서버와 통신하고 싶다면 아래와 같이 환경 파일에서 서버들을 기술한다.
altibase 52473 20400
altibase 20300 20800
...
altisnmpd 실행#
altisnmpd 실행 옵션은 [-f], [-l], [-s], [-p]이다. [-f]는 snmpd의 실행을 foreground에서 볼 수 있다. [-l] 옵션은 파일에 로그를, [-s]는 syslog를 남기고, [-p]는 pid 파일을 생성한다.
altisnmpd가 실행되는 것을 확인하기 위해 우선 foreground로 실행한다.
$ $ALTISNMPSBIN/altisnmpd -f -L -c $ALTISNMPCONF/altisnmpd.conf -x localhost:1705
AgentX subagent for Altibase
NET-SNMP version 5.0.8
Altibase[0] : 52473 20400
Trap : 20500
snmpd와 altisnmpd는 1705 포트로 TCP 통신을 하기 때문에 -x locathost:1705로 설정한 것을 확인하였다. 이제 background로 실행하기 위해 -f 옵션은 제거하였다.
$ $ALTISNMPSBIN/altisnmpd -c $ALTISNMPCONF/altisnmpd.conf -l /tmp/altisnmpd.log -s -P /tmp/altisnmpd.pid -x localhost:1705
altisnmpd 종료#
altisnmpd의 실행을 종료하기 위해서 kill 명령으로 종료시킨다.
$ kill `cat /tmp/altisnmpd pid`
만약 altisnmpd를 실행하거나 종료하면 트랩이 발생되기 때문에 snmptrapd에서 확인할 수 있다.
2014-10-28 15:39:57 localhost [127.0.0.1]:
SNMPv2-MIB::sysUpTime.0 = Timeticks: (1987) 0:00:19.87 SNMPv2-MIB::snmpTrapOID.0 = OID: SNMPv2-SMI::private ALTIBASE-MIB::altiTrapAddress = STRING: 12944 ALTIBASE-MIB::altiTrapLevel = STRING: 3 ALTIBASE-MIB::altiTra
pCode = STRING: 10000003 ALTIBASE-MIB::altiTrapMessage = STRING: /home/donlet/work/altibase-snmp-1.0.1.release/sbin/altisnmpd is running. ALTIBASE-MIB::altiTrapMoreInfo = STRING: coldstart
2014-10-28 15:41:29 localhost [127.0.0.1]:
SNMPv2-MIB::sysUpTime.0 = Timeticks: (11225) 0:01:52.25 SNMPv2-MIB::snmpTrapOID.0 = OID: SNMPv2-SMI::private ALTIBASE-MIB::altiTrapAddress = STRING: 12961 ALTIBASE-MIB::altiTrapLevel = STRING: 3 ALTIBASE-MIB::altiTra
pCode = STRING: 10000003 ALTIBASE-MIB::altiTrapMessage = STRING: /home/donlet/work/altibase-snmp-1.0.1.release/sbin/altisnmpd is running. ALTIBASE-MIB::altiTrapMoreInfo = STRING: coldstart
Altibase 실행#
Altibase를 실행하기 위해 기본적으로 아래의 프로퍼티를 클라이언트 환경에 맞춰 설정한다. 프로퍼티에 대한 자세한 설명은 Altibase 프로퍼티 설정을 참조하기 바란다.
-
SNMP_ENABLE
-
SNMP_PORT_NO
-
SNMP_TRAP_PORT_NO
Altibase를 실행하고 아래 명령을 실행하자.
$ $ALTISNMPBIN/snmpwalk -v 2c -c private udp:localhost:1161 altibase
ALTIBASE-MIB::altiPropertyIndex.1 = INTEGER: 1
ALTIBASE-MIB::altiPropertyAlarmQueryTimeout.1 = STRING: 1
ALTIBASE-MIB::altiPropertyAlarmUtransTimeout.1 = STRING: 1
ALTIBASE-MIB::altiPropertyAlarmFetchTimeout.1 = STRING: 1
ALTIBASE-MIB::altiPropertyAlarmSessionFailureCount.1 = STRING: 3
ALTIBASE-MIB::altiStatusIndex.1 = INTEGER: 1
ALTIBASE-MIB::altiStatusDBName.1 = STRING: mydb
ALTIBASE-MIB::altiStatusDBVersion.1 = STRING: 7.3.0.0.0
ALTIBASE-MIB::altiStatusRunningTime.1 = STRING: 00:00:02
ALTIBASE-MIB::altiStatusProcessID.1 = STRING: 12973
ALTIBASE-MIB::altiStatusSessionCount.1 = STRING: 0
SNMP가 제대로 동작하면, ALTIBASE-MIB 정보가 제대로 나오늘 것을 확인할 수 있다.
기설치된 NET-SNMP에 설정#
고객의 장비에 이미 net-snmp가 설치된 경우, net-snmp altisnmpd(altibase snmp subagent)간에 연동하는 방법을 설명한다.
이 절에서는 고객 서버에 snmpd 패키지가 이미 /usr에 설치되어 있다는 가정하에 설명한다.
-
Altibase 프로퍼티 설정
-
ALTIBASE-MIB.txt 등록
-
altisnmpd 설정
-
altisnmpd.conf
Altibase 프로퍼티 설정#
Altibase는 아래의 프로퍼티를 고객 환경에 맞춰 설정한다.
-
SNMP_ENABLE
-
SNMP_PORT_NO
-
SNMP_TRAP_PORT_NO
ALTIBASE-MIB.txt 등록#
ALTIBASE-MIB.txt를 복사하여 SNMP 환경파일인 snmp.conf에 ALTIBASE-MIB를 추가한다. 이 때 snmpd를 재시작할 필요는 없다.
sudo cp $ALTISNMP/share/snmp/mibs/ALTIBASE-MIB.txt /usr/share/snmp/mibs
# vi /etc/snmp/snmp.conf
mibs +ALTIBASE-MIB
altisnmpd 설정 및 실행#
altisnmpd 설정에 대한 자세한 설명은 앞 절의 "altisnmpd 실행"을 참조하기 바란다.
snmpd가 사용하는 포트를 지정해야 한다. 기본으로 localhost:705로 맞춰졌으며, 아닌 경우 시스템 관리자에게 문의한다.
$ $ALTISNMPSBIN/altisnmpd -c $ALTISNMPCONF/altisnmpd.conf -l /tmp/altisnmpd.log -s -P /tmp/altisnmpd.pid -x localhost:705
Altibase를 실행후, snmpwalk 명령을 실행한다.
$ /usr/bin/snmpwalk -v 2c -c private localhost:161 altibase
ALTIBASE-MIB::altiPropertyIndex.1 = INTEGER: 1
ALTIBASE-MIB::altiPropertyAlarmQueryTimeout.1 = STRING: 1
ALTIBASE-MIB::altiPropertyAlarmUtransTimeout.1 = STRING: 1
ALTIBASE-MIB::altiPropertyAlarmFetchTimeout.1 = STRING: 1
ALTIBASE-MIB::altiPropertyAlarmSessionFailureCount.1 = STRING: 3
ALTIBASE-MIB::altiStatusIndex.1 = INTEGER: 1
ALTIBASE-MIB::altiStatusDBName.1 = STRING: mydb
ALTIBASE-MIB::altiStatusDBVersion.1 = STRING: 7.3.0.0.0
ALTIBASE-MIB::altiStatusRunningTime.1 = STRING: 00:38:00
ALTIBASE-MIB::altiStatusProcessID.1 = STRING: 12973
ALTIBASE-MIB::altiStatusSessionCount.1 = STRING: 0
snmpwalk 명령을 실행하여, 아래와 같이 나온다면 /etc/snmp/snmpd.conf에 ACL 설정을 확인해야 한다.
$ /usr/bin/snmpwalk -v 2c -c private localhost:161 altibase
Timeout: No Response from localhost:161
/etc/snmp/snmpd.conf
# Full access from the local host
#rocommunity public localhost
#rwcommunity private localhost
시스템 관리자는 Full access를 하려면 주석을 해제해야 한다.