Friday 7 June 2013

SNMP를 통하여 인터페이스 목록 추가 시키기


SNMP를 통하여 인터페이스 목록 추가 시키기

Racktables에서 기본적으로 지원하는 스위치를 제외한 다른 모델은 모두 수작업으로 데이터를 추가해 주어야 SNMP를 통하여 인터페이스(포트) 목록을 얻어올 수 있다.



다음은 Brocade BigIron RX-16 모델의 설정을 가져오기 위한 설정법이다.

Chapter에 스위치 모델 추가

다음 그림처럼 Dictionary -> network switch models에 Brocade%GPASS%BI RX 16을 추가한다.
추가하고 나면 해당 모델에 마우스를 올리게되면 key 값이 보이게 되는데 이 값을 기록해 놓는다.
본인이 추가한 모델의 키값은 50031이다.

인터페이스 정보 파싱을 위한 데이터 추가

SNMP Walk와 같은 프로그램으로 데이터를 요청해 보면 다음과 같이 결과를 돌려준다.
daehyung@daehyung-WS:~$ snmpwalk -v 1 -c ********* <IP> -m RFC1213-MIB ifDescr
RFC1213-MIB::ifDescr.1 = STRING: "GigabitEthernet1/1"
RFC1213-MIB::ifDescr.2 = STRING: "GigabitEthernet1/2"
RFC1213-MIB::ifDescr.3 = STRING: "GigabitEthernet1/3"
RFC1213-MIB::ifDescr.4 = STRING: "GigabitEthernet1/4"
RFC1213-MIB::ifDescr.5 = STRING: "GigabitEthernet1/5"
RFC1213-MIB::ifDescr.6 = STRING: "GigabitEthernet1/6"
RFC1213-MIB::ifDescr.7 = STRING: "GigabitEthernet1/7"
RFC1213-MIB::ifDescr.8 = STRING: "GigabitEthernet1/8"
RFC1213-MIB::ifDescr.9 = STRING: "GigabitEthernet1/9"
RFC1213-MIB::ifDescr.10 = STRING: "GigabitEthernet1/10"
RFC1213-MIB::ifDescr.11 = STRING: "GigabitEthernet1/11"
RFC1213-MIB::ifDescr.12 = STRING: "GigabitEthernet1/12"
RFC1213-MIB::ifDescr.13 = STRING: "GigabitEthernet1/13"
RFC1213-MIB::ifDescr.14 = STRING: "GigabitEthernet1/14"
RFC1213-MIB::ifDescr.15 = STRING: "GigabitEthernet1/15"
RFC1213-MIB::ifDescr.16 = STRING: "GigabitEthernet1/16"
RFC1213-MIB::ifDescr.17 = STRING: "GigabitEthernet1/17"
RFC1213-MIB::ifDescr.18 = STRING: "GigabitEthernet1/18"
RFC1213-MIB::ifDescr.19 = STRING: "GigabitEthernet1/19"
RFC1213-MIB::ifDescr.20 = STRING: "GigabitEthernet1/20"
RFC1213-MIB::ifDescr.21 = STRING: "GigabitEthernet1/21"
RFC1213-MIB::ifDescr.22 = STRING: "GigabitEthernet1/22"
RFC1213-MIB::ifDescr.23 = STRING: "GigabitEthernet1/23"
RFC1213-MIB::ifDescr.24 = STRING: "GigabitEthernet1/24"
RFC1213-MIB::ifDescr.65 = STRING: "GigabitEthernet2/1"
RFC1213-MIB::ifDescr.66 = STRING: "GigabitEthernet2/2"
RFC1213-MIB::ifDescr.67 = STRING: "GigabitEthernet2/3"
RFC1213-MIB::ifDescr.68 = STRING: "GigabitEthernet2/4"
RFC1213-MIB::ifDescr.69 = STRING: "GigabitEthernet2/5"
RFC1213-MIB::ifDescr.70 = STRING: "GigabitEthernet2/6"
RFC1213-MIB::ifDescr.71 = STRING: "GigabitEthernet2/7"
RFC1213-MIB::ifDescr.72 = STRING: "GigabitEthernet2/8"
RFC1213-MIB::ifDescr.73 = STRING: "GigabitEthernet2/9"
RFC1213-MIB::ifDescr.74 = STRING: "GigabitEthernet2/10"
RFC1213-MIB::ifDescr.75 = STRING: "GigabitEthernet2/11"
RFC1213-MIB::ifDescr.76 = STRING: "GigabitEthernet2/12"
RFC1213-MIB::ifDescr.77 = STRING: "GigabitEthernet2/13"
RFC1213-MIB::ifDescr.78 = STRING: "GigabitEthernet2/14"
RFC1213-MIB::ifDescr.79 = STRING: "GigabitEthernet2/15"
RFC1213-MIB::ifDescr.80 = STRING: "GigabitEthernet2/16"
RFC1213-MIB::ifDescr.81 = STRING: "GigabitEthernet2/17"
RFC1213-MIB::ifDescr.82 = STRING: "GigabitEthernet2/18"
RFC1213-MIB::ifDescr.83 = STRING: "GigabitEthernet2/19"
RFC1213-MIB::ifDescr.84 = STRING: "GigabitEthernet2/20"
RFC1213-MIB::ifDescr.85 = STRING: "GigabitEthernet2/21"
RFC1213-MIB::ifDescr.86 = STRING: "GigabitEthernet2/22"
RFC1213-MIB::ifDescr.87 = STRING: "GigabitEthernet2/23"
RFC1213-MIB::ifDescr.88 = STRING: "GigabitEthernet2/24"
RFC1213-MIB::ifDescr.129 = STRING: "GigabitEthernet3/1"
RFC1213-MIB::ifDescr.130 = STRING: "GigabitEthernet3/2"
RFC1213-MIB::ifDescr.131 = STRING: "GigabitEthernet3/3"
RFC1213-MIB::ifDescr.132 = STRING: "GigabitEthernet3/4"
RFC1213-MIB::ifDescr.133 = STRING: "GigabitEthernet3/5"
RFC1213-MIB::ifDescr.134 = STRING: "GigabitEthernet3/6"
RFC1213-MIB::ifDescr.135 = STRING: "GigabitEthernet3/7"
RFC1213-MIB::ifDescr.136 = STRING: "GigabitEthernet3/8"
RFC1213-MIB::ifDescr.137 = STRING: "GigabitEthernet3/9"
RFC1213-MIB::ifDescr.138 = STRING: "GigabitEthernet3/10"
RFC1213-MIB::ifDescr.139 = STRING: "GigabitEthernet3/11"
RFC1213-MIB::ifDescr.140 = STRING: "GigabitEthernet3/12"
RFC1213-MIB::ifDescr.141 = STRING: "GigabitEthernet3/13"
RFC1213-MIB::ifDescr.142 = STRING: "GigabitEthernet3/14"
RFC1213-MIB::ifDescr.143 = STRING: "GigabitEthernet3/15"
RFC1213-MIB::ifDescr.144 = STRING: "GigabitEthernet3/16"
RFC1213-MIB::ifDescr.145 = STRING: "GigabitEthernet3/17"
RFC1213-MIB::ifDescr.146 = STRING: "GigabitEthernet3/18"
RFC1213-MIB::ifDescr.147 = STRING: "GigabitEthernet3/19"
RFC1213-MIB::ifDescr.148 = STRING: "GigabitEthernet3/20"
RFC1213-MIB::ifDescr.149 = STRING: "GigabitEthernet3/21"
RFC1213-MIB::ifDescr.150 = STRING: "GigabitEthernet3/22"
RFC1213-MIB::ifDescr.151 = STRING: "GigabitEthernet3/23"
RFC1213-MIB::ifDescr.152 = STRING: "GigabitEthernet3/24"
RFC1213-MIB::ifDescr.2049 = STRING: "FastEthernetManagement1"
RFC1213-MIB::ifDescr.2060 = STRING: "v10"
RFC1213-MIB::ifDescr.2150 = STRING: "v100"
RFC1213-MIB::ifDescr.2152 = STRING: "v102"
RFC1213-MIB::ifDescr.2154 = STRING: "v104"
RFC1213-MIB::ifDescr.2156 = STRING: "v106"
RFC1213-MIB::ifDescr.2158 = STRING: "v108"
RFC1213-MIB::ifDescr.2160 = STRING: "v110"
RFC1213-MIB::ifDescr.2162 = STRING: "v112"
RFC1213-MIB::ifDescr.2164 = STRING: "v114"
RFC1213-MIB::ifDescr.2166 = STRING: "v116"
RFC1213-MIB::ifDescr.2168 = STRING: "v118"
RFC1213-MIB::ifDescr.2170 = STRING: "v120"
RFC1213-MIB::ifDescr.2172 = STRING: "v122"
RFC1213-MIB::ifDescr.2222 = STRING: "v172"

inc/snmp.php 파일 편집

인터페이스 정보(iftable_processors) 구문 추가

# Brocade SI RX-16 
$iftable_processors['brocade-BigIronRX-sfp'] = array
(
        'pattern' => '@^GigabitEthernet(1|2)/([[:digit:]]+)$@',
        'replacement' => 'e\\1/\\2',
        'dict_key' => '4-1202',
        'label' => 'GigabitEthernet\\1/\\2',
        'try_next_proc' => FALSE,
);
$iftable_processors['brocade-BigIronRX-copper'] = array
(
        'pattern' => '@^GigabitEthernet3/([[:digit:]]+)$@',
        'replacement' => 'e3/\\1',
        'dict_key' => '1-24',
        'label' => 'GigabitEthernet3/\\1',
        'try_next_proc' => FALSE,
);
$iftable_processors['brocade-chassis-mgmt'] = array
(
        'pattern' => '@^FastEthernet([[:digit:]])$@',
        'replacement' => 'fa\\1',
        'dict_key' => '1-19',
        'label' => 'mgmt',
        'try_next_proc' => FALSE,
);
위의 iftable_processors['brocade-BigIronRX-sfp']와 iftable_processors['brocade-BigIronRX-copper'] 는
스위치의 슬롯 1번 모듈과 2번 모듈이 각각 24개의 SFP 포트를 가지고 있고, 슬롯 3번 모듈은 24개의 Copper포트를 가지고 있기 때문에 Racktables상 해당 포트가 어떠한 케이블이 연결되는 지 구분 할 수 있도록 별도로 구분하였다.
  • replacement : Racktables의 local name으로 GigabitEthernet3/22와 같이 보이지 않고 e3/22와 같이 축약하여 보이도록 문자열을 변경해준다.
  • dict_key : 해당 포트가 어떠한 종류의 포트인지 알려주는 값으로 각각 MySQL DB내에 Port 테이블의 iif_id, oif_id를 말한다.
    oif_id는 Chapter의 PortOuterInterface에서 볼 수 있으나 iif_id는 알기 쉽지 않으므로 가급적 DB를 확인하도록 한다.
마지막의 iftable_processors['brocade-chassis-mgmt']은 콘솔 연결용 포트를 나타내는 정보인데 이는 단순히 Cisco 스위치 설정 값을 그대로 복사하여 사용하였다.

known_switches 목록에 스위치 값 추가

SNMP Walk를 통하여 스위치 OID 얻어오기
daehyung@daehyung-WS:~$ snmpwalk -v 1 -c ********* <IP> -m RFC1213-MIB sysObjectID.0
RFC1213-MIB::sysObjectID.0 = OID: RFC1155-SMI::enterprises.1991.1.3.40.1.2
여기서 enterprises. 하위 값을 기록한다.
        '1991.1.3.40.1.2' => array
        (
                'dict_key' => 50031,
                'text' => 'BI-RX16: 48 SFP-1000 + 24 combo-gig',
                'processors' => array ('brocade-BigIronRX-sfp', 'brocade-BigIronRX-copper', 'brocade-chassis-mgmt'),
        ),
known_switches 변수정의에 위와 같이 추가한다.
  • dict_key : 처음 스위치 모델을 추가했을 때 기록한 값을 넣는다.
  • text : 스위치에 대한 정보를 넣는다.
  • processors : 위에서 추가한 iftable_processors 이름들을 넣는다.

No comments:

Post a Comment