소개
이 문서에서는 Cisco WLC(Wireless LAN Controller)에서 SNMP를 구성하고 모니터링하는 방법에 대해 설명합니다.
사전 요구 사항
요구 사항
Cisco에서는 운영 체제 또는 기술 자료에 기본 SNMP(Simple Network Management Protocol) 툴을 설치하여 설치할 것을 권장합니다.
사용되는 구성 요소
이 문서는 특정 소프트웨어 및 하드웨어 버전으로 한정되지 않습니다. 모든 테스트는 이미지 버전 8.9 및 MacOS 10.14를 실행하는 3504 WLC에서 수행되었습니다. 이 문서의 OID는 이전 AireOS 릴리스 및 기타 AireOS 기반 무선 컨트롤러(8540/5508/5520/2504)에서도 유효합니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
WLC에서 SNMP 설정 구성
SNMPv2c는 SNMP의 커뮤니티 기반 버전이며 디바이스 간의 모든 통신은 일반 텍스트로 표시됩니다. SNMPv3는 메시지 무결성 확인, 인증 및 패킷의 암호화를 제공하는 가장 안전한 버전입니다. SNMPv1은 매우 오래되었지만 여전히 기존 소프트웨어 호환성을 제공하기 위해 존재합니다.
참고: SNMPv2c는 기본적으로 읽기 및 쓰기 권한이 있는 커뮤니티 전용 및 읽기 전용 권한이 있는 커뮤니티 퍼블릭으로 활성화됩니다. 이를 제거하고 다른 이름으로 새 커뮤니티를 만드는 것이 좋습니다.
이 문서에서는 SNMPv2c 및 SNMPv3만 사용됩니다. 컨트롤러의 웹 인터페이스에 로그인합니다. 에서 Management > SNMP > General 원하는 프로토콜 버전을 활성화하십시오.
Communities(커뮤니티) 메뉴 아래에는 현재 생성된 모든 커뮤니티가 표시됩니다.
미리 구성된 기본 커뮤니티를 제거하고 새로 만드는 것이 좋습니다. IP 주소 및 넷마스크는 액세스 목록처럼 작동합니다. 기본적으로 둘 다 0.0.0.0으로 설정되어 있으므로 모든 IP 주소가 이 커뮤니티에 대해 SNMP 쿼리를 만들 수 있습니다. 이 커뮤니티는 모니터링에만 사용되며 WLC 컨피그레이션에는 사용되지 않으므로 액세스 모드 필드는 읽기 전용으로 유지됩니다.
참고: 8.7.1.135 이전의 모든 버전은 Cisco 버그 ID CSCvg61933의 영향을 받습니다. 이 경우 넷마스크를 255.255.255.255로 설정할 수 없습니다. 컨트롤러를 8.7.1.135 이후 권장되는 최신 릴리스로 업그레이드하거나 CLI에서 이 명령을 사용하여 새 커뮤니티를 생성합니다config snmp community ipaddr <ip_address> <netmask> <community_name>.
SNMP V3 Users(SNMP V3 사용자) 메뉴에서 모든 구성된 사용자, 해당 권한 및 인증 및 암호화에 사용된 프로토콜을 볼 수 있습니다. New(새로 만들기) 버튼을 사용하면 새 사용자를 생성할 수 있습니다. 인증 프로토콜로 HMAC-SHA를 선택하고 프라이버시 프로토콜로 CFB-AES-128을 선택하는 것이 좋습니다. 인증 및 프라이버시 비밀번호가 로 설정된 admin이라는 사용자를 Cisco123Cisco123 생성합니다.
객체 이름 및 OID(객체 ID)
객체 이름 및 OID란?
OID는 특정 변수 또는 객체를 나타내는 고유한 식별자입니다. 예를 들어 현재 CPU 사용량은 해당 개체 ID를 호출할 때 값을 검색할 수 있는 변수로 간주됩니다. 각 OID는 고유하며 MAC 주소와 상당히 비슷한 두 OID가 전세계에서 동일해야 합니다. 이러한 식별자는 트리 계층 구조에 있으며, 각 OID를 다시 루트로 추적할 수 있습니다. 각 벤더는 공통 루트 뒤에 고유한 브랜치를 갖습니다.
비유는 집 주소일 수 있으며, 여기서 루트는 국가 또는 주, 도시 우편번호, 거리, 그리고 마지막으로 집 번호입니다.
점 뒤에 오는 숫자는 해당 트리나 가지 내의 특정 지점에 도달하는 데 걸리는 각 단계를 나타냅니다.
이러한 모든 값은 각 네트워크 디바이스의 MIB(Management Information Base)에 저장됩니다. 각 식별자에는 이름과 정의(가능한 값, 유형 등의 범위)가 있습니다.
유효한 OID가 알려진 경우 SNMP를 사용하고 디바이스를 쿼리하기 위해 SNMP 툴에 MIB를 로드할 필요가 없습니다. 디바이스는 OID가 나타내는 변수에 저장된 값으로 응답합니다. 예를 들어, 표시된 이미지에서 SNMP 관리자는 OID 1.3.6.1.2.1.1.1.0을 사용하여 시스템 설명을 위해 디바이스의 SNMP 에이전트를 쿼리합니다.
MIB를 쿼리 툴에 로드하는 경우 이를 사용하여 OID 번호를 이름으로 변환하고 해당 정의를 검색할 수 있습니다.
MIB 및 Cisco WLC의 모든 개체 이름 및 ID 목록
2019년 5월 현재, 사용 가능한 모든 개체 이름 및 무선 LAN 컨트롤러에 대한 각 OID를 포함하는 간단하고 사용자 친화적인 테이블이 없습니다. 대안으로, Cisco는 쉽게 읽을 수 없지만 사용 가능한 모든 객체 이름 및 해당 설명이 포함된 MIB(Management Information Base)를 제공합니다. Cisco 3504 WLC MIB는 여기에서 다운로드할 수 있습니다.
다운로드한 아카이브 파일에는 서드파티 SNMP 모니터링 서버로 가져오거나 일반 텍스트 편집기로 간단히 열 수 있는 여러 .my 텍스트 파일이 포함되어 있습니다. 특정 개체 이름의 OID를 찾으려면 먼저 해당 OID가 포함된 정확한 파일을 찾아야 합니다.
예를 들어, 디바이스의 물리적 상태 모니터링과 관련된 모든 객체(예: 온도 및 팬 속도)는 라는 MIB 내부에 CISCO-ENVMON-MIB.my있습니다. 여기서 ciscoEnvMonFanState 는 WLC 팬의 상태를 제공하기 위해 사용되는 객체 이름입니다. MIB 파일에는 다음과 같은 구문이 표시됩니다. 팬 상태 객체에 대한 정보는 다음과 같습니다.
ciscoEnvMonFanState OBJECT-TYPE SYNTAX CiscoEnvMonState MAX-ACCESS read-only STATUS current DESCRIPTION "The current state of the fan being instrumented." ::= { ciscoEnvMonFanStatusEntry 3 }
대부분의 서드파티 모니터링 소프트웨어는 개체 이름이 아니라 OID에 의존합니다. Cisco SNMP Object Navigator Tool을 사용하면 개체 이름과 개체 ID 간의 변환이 가능합니다. 검색 창에 객체 이름을 입력합니다. OID와 간단한 설명을 제공합니다. 또한 동일한 도구를 사용하여 OID의 해당 개체 이름을 찾을 수 있습니다.
OID를 사용하여 WLC 상태 모니터링
모니터링해야 하는 객체의 OID를 얻은 후 첫 번째 SNMP 쿼리를 실행할 수 있습니다. 다음 예에서는 SHA 인증 비밀번호 및 AES 프라이버시 비밀번호가 로 설정된 SNMPv2 커뮤니티 snmp_test 및 SNMPv3 사용자에 대해 코어당 WLC CPU 사용량(OID = 1.3.6.1.4.1.9.9.618.1.4.1) admin 을 획득하는 방법Cisco123Cisco123 을 Cisco123Cisco123 보여줍니다. 컨트롤러 관리 인터페이스는 10.48.39.164에 있습니다.
SNMPwalk를 통한 모니터링
SNMPwalk는 SNMP GETNEXT 요청을 사용하여 네트워크 엔터티에 정보 트리를 쿼리하는 SNMP 애플리케이션입니다. MacOS 및 대부분의 Linux 배포판에는 기본적으로 표시됩니다. SNMPv2c의 경우 명령에는 다음과 같은 구문이 있습니다.
snmpwalk -v2c -c <community_name> <WLC_management_interface_ip> <OID>
예를 들면 다음과 같습니다.
VAPEROVI-M-H1YM:~ vaperovi$ snmpwalk -v2c -c snmp_test 10.48.39.164 1.3.6.1.4.1.9.9.618.1.4.1 SNMPv2-SMI::enterprises.9.9.618.1.4.1.0 = STRING: "0%/1%, 0%/1%, 0%/1%, 0%/1%"
SNMPv3을 사용하는 경우 명령에는 다음과 같은 구문이 있습니다.
snmpwalk -v3 -l authPriv -u <username> -a [MD5|SHA] -A <auth_password> -x [AES|DES] -X <priv_password> <WLC_management_interface_ip> <OID>
컨트롤러에서 SNMPv3 사용자를 생성한 방법에 따라 MD5/SHA 및 AES/DES를 선택합니다.
예를 들면 다음과 같습니다.
VAPEROVI-M-H1YM:~ vaperovi$ snmpwalk -v3 -l authPriv -u admin -a SHA -A Cisco123Cisco123 -x AES -X Cisco123Cisco123 10.48.39.164 1.3.6.1.4.1.9.9.618.1.4.1 SNMPv2-SMI::enterprises.9.9.618.1.4.1.0 = STRING: "0%/1%, 0%/1%, 0%/0%, 0%/1%"
Python 3 및 pysmnp 라이브러리를 통한 모니터링
이러한 코드 조각은 Python 3.7에 기록되며 pysnmp 모듈(pip install pysnmp )을 사용하여 Cisco 3504 WLC의 CPU 사용률을 위한 SNMP 쿼리를 생성합니다. 이러한 예에서는 이전 장 중 하나에서 생성한 것과 동일한 SNMPv2 커뮤니티 및 SNMPv3 사용자를 사용합니다. 변수 값을 바꾸고 코드를 사용자 지정 스크립트와 통합하기만 하면 됩니다.
SNMPv2c 예:
from pysnmp.hlapi import *
communityName = 'snmp_test'
ipAddress = '10.48.39.164'
OID = '1.3.6.1.4.1.14179.2.3.1.13.0'
errorIndication, errorStatus, errorIndex, varBinds = next( getCmd(SnmpEngine(), CommunityData(communityName), UdpTransportTarget((ipAddress, 161)), ContextData(), ObjectType(ObjectIdentity(OID))) ) if errorIndication: print(errorIndication) elif errorStatus: print('%s at %s' % (errorStatus.prettyPrint(), errorIndex and varBinds[int(errorIndex) - 1][0] or '?')) else: for varBind in varBinds: print(' = '.join([x.prettyPrint() for x in varBind]))
성과:
SNMPv2-SMI::enterprises.14179.2.3.1.13.0 = 73
SNMPv3 예:
from pysnmp.hlapi import * username = 'admin' ipAddress = '10.48.39.164' OID = '1.3.6.1.4.1.14179.2.3.1.13.0' authKey = 'Cisco123Cisco123' privKey = 'Cisco123Cisco123' errorIndication, errorStatus, errorIndex, varBinds = next( getCmd(SnmpEngine(), UsmUserData(username, authKey, privKey, authProtocol=usmHMACSHAAuthProtocol, privProtocol=usmAesCfb128Protocol), UdpTransportTarget((ipAddress, 161)), ContextData(), ObjectType(ObjectIdentity(OID))) ) if errorIndication: print(errorIndication) elif errorStatus: print('%s at %s' % (errorStatus.prettyPrint(), errorIndex and varBinds[int(errorIndex) - 1][0] or '?')) else: for varBind in varBinds: print(' = '.join([x.prettyPrint() for x in varBind]))
타사 소프트웨어와의 통합(Grafana/PRTG Network Monitor/SolarWinds)
Cisco Prime Infrastructure는 무선 컨트롤러를 포함하는 여러 네트워크 디바이스를 쉽게 모니터링하고 구성할 수 있는 기능을 제공합니다. Prime Infrastructure에는 모든 OID가 사전 로드되어 제공되며 WLC와의 통합은 Prime에 WLC 자격 증명을 추가하는 것만으로 구성됩니다. 동기화 후 경보를 설정하고 여러 무선 컨트롤러에 대한 컨피그레이션 템플릿을 동시에 푸시할 수 있습니다.
한편, OID를 알고 있는 경우 Cisco WLC를 여러 서드파티 모니터링 솔루션과 통합할 수도 있습니다. Grafana, PRTG Network Monitor 및 SolarWinds 서버와 같은 프로그램을 사용하면 MIB 또는 OID를 가져오고 값을 사용자 친화적인 그래프로 표시할 수 있습니다.
이러한 통합을 수용하기 위해 모니터링 서버를 조정해야 할 수 있습니다. 이미지에 표시된 예에서 PRTG 모니터링 서버에는 문자열을 반환하는 코어당 CPU 사용률 OID가 0%/1%, 1%/1%, 0%/1%, 0%/1%제공됩니다. PRTG에는 정수 값이 필요한데 오류가 발생합니다.
가장 일반적으로 모니터링되는 OID 테이블
MIB가 데이터를 사용자에게 친숙한 구문으로 나타낸다고 가정할 경우, 이 표에는 Cisco 고객이 사용하는 가장 일반적인 개체 이름 및 해당 OID가 포함됩니다.
설명 |
개체 이름 |
OID |
예상 응답 |
전체 CPU 사용량(%) |
상담원현재사용자 맞춤화 |
1.3.6.1.4.1.14179.1.1.5.1.0 |
정수: 0 |
코어 CPU 사용량당 |
cls모두Cpu사용 |
1.3.6.1.4.1.9.9.618.1.4.1.0 |
문자열: 0%/1%, 0%/1%, 0%/1%, 0%/1% |
RAM 사용량(%) |
clsSys현재 메모리 사용량 |
1.3.6.1.4.1.9.9.618.1.8.6.0 |
게이지32: 33 |
CPU 온도(°C) |
bsn센서온도 |
1.3.6.1.4.1.14179.2.3.1.13.0 |
정수: 76 |
조인된 AP 수 |
clsSysApConnectCount |
1.3.6.1.4.1.9.9.618.1.8.4.0 |
게이지32: 2 |
클라이언트 수 |
clsMax클라이언트 수 |
1.3.6.1.4.1.9.9.618.1.8.12.0 |
계기32: 0 |
WLAN당 클라이언트 수 |
bsnDot11Ess이동국수 |
1.3.6.1.4.1.14179.2.1.1.1.38.0 |
카운터32: 3 카운터32: 2 |