이 문서에서는 Cisco 9800 WLC(Wireless LAN Controller)를 모니터링하도록 SNMP(Simple Network Management Protocol)를 구성하는 방법에 대해 설명합니다.
모든 테스트는 이미지 버전 17.5.1의 MacOS 10.14 및 9800-CL WLC에서 수행되었습니다. 이 문서에서 언급한 일부 OID는 이전 이미지 버전에 없습니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
이전 AireOS WLC는 SNMP를 모니터링하기 위한 기본 프로토콜로 사용합니다. 클라이언트 수, 연결된 액세스 포인트 수, 프로세서 및 메모리 사용량과 같은 대부분의 관련 정보는 WLC를 모니터링하는 툴에서 SNMP 쿼리를 통해 얻을 수 있습니다.
9800 WLC에서는 텔레메트리를 중점적으로 살펴보았습니다. 텔레메트리는 WLC가 쿼리 요구 사항 없이 관련 정보를 서버로 전송하는 "푸시" 모델에서 작동합니다. Catalyst 9800은 여전히 레거시 목적을 위해 SNMP를 제공합니다. 일부 정보는 텔레메트리 전용일 수 있으며, 이전에 AireOS에서 사용 가능했던 일부 OID는 9800에서 아직 사용할 수 없습니다.
Cisco IOS XE® Bengaluru 17.6.1에서 이더넷 서비스 포트(관리 인터페이스 VRF/GigabitEthernet 0)는 Cisco Catalyst 9800 Series Wireless Controller에서 지원됩니다.
이 릴리스 이전에는 Catalyst 9800 WLC는 무선 관리 인터페이스 또는 이중화 관리 인터페이스(버전 17.5.1 이상의 HA 클러스터에 대기 WLC가 있는 경우)를 통해서만 SNMP로 모니터링할 수 있었습니다.
SNMPv2c는 SNMP의 커뮤니티 기반 버전이며 디바이스 간의 모든 통신은 일반 텍스트로 표시됩니다. SNMPv3는 메시지 무결성 확인, 인증 및 패킷의 암호화를 제공하는 가장 안전한 버전입니다. SNMPv1은 오래되었지만 여전히 기존 소프트웨어 호환성을 제공하기 위해 존재합니다. 이 글에서는 언급되지 않았습니다.
1. 9800 WLC의 웹 인터페이스에 로그인합니다. Administration(관리) > Management(관리) > SNMP (SNMP)에서 SNMP가 전역적으로 활성화되어 있는지 확인합니다. Community Strings(커뮤니티 문자열)에 현재 구성된 모든 커뮤니티 및 해당 권한 수준이 표시됩니다.

2. SNMP V3 사용자가 생성되기 전에 SNMP V3 그룹을 정의해야 합니다. 읽기 + 쓰기 권한이 있는 사용자 그룹을 만들려면 읽기 보기 및 쓰기 보기를 v1default로 설정합니다. 읽기 전용 그룹 쓰기 보기 필드 상자를 비워 둡니다.

3. SNMP v3 Users(SNMP v3 사용자) 탭 아래에서 구성된 모든 사용자, 인증 및 암호화에 사용된 권한 및 프로토콜을 볼 수 있습니다. New(새로 만들기) 버튼을 사용하여 새 사용자를 만들 수 있습니다.
3가지 보안 모드를 사용할 수 있습니다.
4. 인증 프로토콜로 SHA를 선택하고 프라이버시 프로토콜로 AES-128 이상을 선택합니다.

SNMP는 CLI(Command Line Interface)를 통해서도 구성할 수 있습니다. CLI는 v2 커뮤니티 또는 v3 사용자에게 액세스 목록을 할당하는 기능과 같은 추가 컨피그레이션 매개변수를 제공합니다. v2 읽기 + 쓰기 커뮤니티, v3 읽기 + 쓰기 그룹, 이 그룹에 속한 v3 사용자의 컨피그레이션 예:
snmp-server manager
snmp-server community RW
snmp-server community RO
snmp-server group v3 auth write v1default
snmp-server user v3 auth sha priv aes 128 access
다음은 IP 주소의 디바이스만 허용하는 액세스 목록의 예입니다. 192.168.10.10. "ReadWriteCommunity"라는 WLC v2 커뮤니티를 쿼리하려면 다음을 수행합니다.
ip access-list standard 50
10 permit 192.168.10.10
20 deny any
snmp-server manager
snmp-server community ReadWriteCommunity RW 50
객체 ID, 즉 약어의 OID는 특정 변수 또는 객체를 나타내는 고유한 식별자입니다. 예를 들어, 현재 프로세서 사용량은 가변적인 것으로 간주되며, 이 값은 객체 ID의 호출로 검색할 수 있습니다. 각 OID는 고유하며 두 OID가 같을 수 없습니다. 이는 MAC 주소와 유사합니다.
이러한 식별자는 트리 계층 구조와 정렬되며, 각 OID를 다시 루트로 추적할 수 있습니다. 각 벤더는 공통 루트를 가진 자체 브랜치를 가지고 있습니다. 비유는 집 주소일 수 있으며, 여기서 루트는 국가 또는 주이며, 도시, 우편번호, 거리 및 마지막으로 집 번호가 포함됩니다.
점으로 추적되는 숫자는 해당 트리나 가지 내의 특정 지점으로 가는 데 걸리는 각 단계를 나타냅니다.

이러한 모든 값은 각 네트워크 디바이스의 약어를 위해 관리 정보 베이스 또는 MIB에 저장됩니다. 각 식별자에는 이름과 정의(가능한 값의 범위, 유형 등)가 있습니다.
SNMP를 사용하여 디바이스를 쿼리하려면 SNMP 모니터링 툴에서 MIB를 로드할 필요가 없습니다. 유효한 OID를 알고 있는 한, 디바이스는 OID가 나타내는 변수에 저장된 값에 응답한다. 그러나 쿼리 툴에서 MIB를 로드하는 경우 개체 이름을 ID로 변환하고 설명을 설명하는 이점이 있습니다.
이 예에서 SNMP 도구는 OID 1.3.6.1.2.1.1.1.0을 사용하여 시스템 설명을 위해 디바이스의 SNMP 에이전트를 쿼리합니다.

Cisco는 9800 WLC에 대한 MIB를 제공합니다. 그러나 MIB에는 사용 가능한 모든 개체 이름 및 설명이 포함되어 있으므로 쉽게 읽을 수 없습니다.
모든 9800 모델(9800-80, 9800-40, 9800-L, 9800-CL, EWC)은 Cisco Feature Navigator에서 다운로드할 수 있는 동일한 MIB를 사용합니다. 최신 날짜는 코드 버전 이름이 높은 날짜가 아니라 최신 날짜입니다.
다운로드한 아카이브 파일에는 .my 텍스트 파일이 여러 개 포함되어 있습니다. 이 파일은 타사 SNMP 서버로 가져오거나 텍스트 편집기로 열 수 있습니다. 특정 개체 이름의 OID를 찾으려면 먼저 이 이름이 포함된 정확한 파일을 찾아야 합니다.
예를 들어, 디바이스 물리적 상태(예: CPU 및 메모리) 모니터링과 관련된 모든 객체는 CISCO-PROCESS-MIB.my라는 MIB 내부에 있습니다.
"cpmCPUMemoryUsed"는 WLC에서 사용되는 메모리의 양을 바이트 단위로 제공하는 데 사용되는 개체 이름입니다. MIB 파일은 모두 유사한 구문에 따라 정렬됩니다. 사용된 메모리 개체에 대한 정보는 다음과 같습니다.
cpmCPUMemoryUsed OBJECT-TYPE
SYNTAX Gauge32
UNITS "kilo-bytes"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The overall CPU wide system memory which is currently
under use."
::= { cpmCPUTotalEntry 12 }
모니터링할 대부분의 타사 소프트웨어는 객체 이름이 아니라 OID에 의존합니다. Cisco SNMP Object Navigator Tool을 사용하여 개체 이름과 개체 ID 간의 변환을 수행할 수 있습니다.
이 툴을 사용하려면 검색 표시줄에 객체 이름을 입력하고 출력에 OID와 간단한 설명이 제공됩니다. 또한 동일한 툴을 사용하여 제공된 OID의 객체 이름을 찾을 수 있습니다.

획득 후 모니터링해야 하는 객체의 OID인 첫 번째 SNMP 쿼리를 실행할 수 있습니다. 이 장의 예에서는 SHA 인증 비밀번호로 SNMPv2 커뮤니티 전용 및 SNMPv3 사용자 snmpadmin에 대한 WLC 사용 가능 메모리(OID = 1.3.6.1.4.1.9.48.1.1.5)를 획득하는 방법(Cisco123# 및 AES 프라이버시 비밀번호: Cisco123#)을 보여 줍니다. 컨트롤러 관리 인터페이스는 다음 위치에 있습니다. 10.48.39.133 .
Snmpwalk는 SNMP GETNEXT 요청을 사용하여 네트워크 엔터티에 정보 트리를 쿼리하는 SNMP 애플리케이션입니다. MacOS 및 대부분의 Linux 배포판에는 기본적으로 표시됩니다. SNMPv2c의 경우 명령은 다음 구문을 준수합니다.
snmpwalk -v2c -c
다음은 또 다른 예입니다.
VAPEROVI:~ vaperovi$ snmpwalk -v2c -c private 10.48.39.133 1.3.6.1.4.1.9.9.109.1.1.1.1.12
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.12.2 = 3783236 <-------- Free Memory in Bytes
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:~ vaperovi$ snmpwalk -v3 -l authPriv -u snmpadmin -a SHA -A Cisco123# -x AES -X Cisco123# 10.48.39.133 1.3.6.1.4.1.9.9.109.1.1.1.1.12
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.12.2 = 3783236 <-------- Free Memory in Bytes
#snmpwalk output still shows v2 even though v3 is used
코드 조각은 Python 3.9용으로 작성되었으며 pysmmp 모듈(pip install pysmmp)을 활용하여 Catalyst 9800-CL WLC의 메모리 활용을 위한 SNMP 쿼리를 실행합니다. 이 예에서는 이전 장에서 생성한 것과 동일한 SNMPv2 커뮤니티 및 SNMPv3 사용자를 사용합니다. 변수 값을 바꾸고 사용자 지정 스크립트 내에 코드를 통합하기만 하면 됩니다.
SNMPv2 예:
from pysnmp.hlapi import *
communityName = 'private'
ipAddress = '10.48.39.133'
OID = '1.3.6.1.4.1.9.9.109.1.1.1.1.12'
for (errorIndication,
errorStatus,
errorIndex,
varBinds) in nextCmd(SnmpEngine(),
CommunityData(communityName),
UdpTransportTarget((ipAddress, 161)),
ContextData(),
ObjectType(ObjectIdentity(OID)),
lexicographicMode=False):
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.9.9.109.1.1.1.1.12.2 = 3783236
SNMPv3 예:
from pysnmp.hlapi import *
username = 'snmpadmin'
ipAddress = '10.48.39.133'
OID = '1.3.6.1.4.1.9.9.109.1.1.1.1.12'
authKey = 'Cisco123#'
privKey = 'Cisco123#'
for (errorIndication,
errorStatus,
errorIndex,
varBinds) in nextCmd(SnmpEngine(),
UsmUserData(username, authKey, privKey,
authProtocol=usmHMACSHAAuthProtocol,
privProtocol=usmAesCfb128Protocol),
UdpTransportTarget((ipAddress, 161)),
ContextData(),
ObjectType(ObjectIdentity(OID)),
lexicographicMode=False):
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]))
Cisco Prime Infrastructure는 무선 컨트롤러가 포함된 여러 네트워크 디바이스를 쉽게 모니터링하고 구성할 수 있는 기능을 제공합니다. Prime Infrastructure에는 모든 OID와 WLC와의 통합이 사전 로드되어 제공되며 Prime에 WLC 자격 증명을 추가하는 내용으로 구성됩니다. 9800 WLC의 경우 Prime은 텔레메트리를 사용하여 WLC에서 대부분의 세부 정보를 수집하는 반면, SNMP를 통해 정보의 작은 부분을 얻습니다.
한편, OID를 알고 있는 한 Cisco WLC는 모니터링을 위해 여러 서드파티 솔루션과 통합될 수 있습니다. Grafana+Prometheus, PRTG Network Monitor 및 SolarWinds 서버와 같은 프로그램을 통해 MIB 또는 OID를 가져오고 값을 사용자 친화적인 그래프로 표시할 수 있습니다.
이러한 통합에는 SNMP 서버 측의 몇 가지 변경이 필요할 수 있습니다. 이 예에서 PRTG 모니터 서버에는 "0%/1%, 1%/1%, 0%/1%, 0%/1%" 문자열을 반환하는 코어당 CPU 사용률 OID가 제공됩니다. PRTG에는 정수 값이 필요한데 오류가 발생합니다.

Cisco Unified Communications Manager(CUCM)에는 클라이언트가 연결된 AP를 기준으로 클라이언트 위치를 대략적으로 추적할 수 있는 무선 엔드포인트 추적 기능이 있습니다. 이 기능이 작동하려면 CUCM이 SNMP 쿼리를 통해 WLC에서 정보를 가져와야 합니다.
이 표에는 MIB가 데이터를 사용자에게 친숙한 구문으로 표시한다는 점을 고려하여 가장 일반적인 객체 이름 및 해당 OID 중 일부가 포함되어 있습니다.
| 설명 |
개체 이름 |
OID |
예상 응답 |
| 지난 5초 동안의 전체 CPU 사용량(%)("show process cpu platform"과 동일) |
cpmCPUTotal5sec |
1.3.6.1.4.1.9.9.109.1.1.1.1.3 |
정수: 5 |
| 최근 1분 동안의 전체 CPU 사용량(%) |
cpmCPUTotal1min |
1.3.6.1.4.1.9.9.109.1.1.1.1.4 |
정수: 5 |
| 최근 5분 동안의 전체 CPU 사용량(%) |
cpmCPUTotal5min |
1.3.6.1.4.1.9.9.109.1.1.1.1.5 |
정수: 5 |
| 코어당 CPU 사용량(%) 최근 5분 |
cpmCore5min |
.1.3.6.1.4.1.9.9.109.1.1.2.1.5.5(코어 수에 따라 .0 - .X) |
정수: 5 |
| 현재 사용된 메모리(바이트) |
cpmCPU메모리Used |
1.3.6.1.4.1.9.9.109.1.1.1.1.12 |
정수: 3783236 |
| 현재 사용 가능한 메모리(바이트) |
cpmCPUMemoryFree |
1.3.6.1.4.1.9.9.109.1.1.1.1.13 |
정수: 4263578 |
| 마지막 부팅 이후 사용 가능한 최소 메모리 양(바이트) |
cpmCPUMemoryLowest |
1.3.6.1.4.1.9.9.109.1.1.1.1.15 |
정수: 4251212 |
| 마지막 다시 로드 이유 |
다시 로드해야 하는 이유 |
1.3.6.1.4.1.9.2.1.2 |
문자열: "reload" |
| 연결된 모든 AP의 소프트웨어 이미지 |
bsnAPS소프트웨어버전 |
1.3.6.1.4.1.14179.2.2.1.1.8 |
문자열: "17.5.1.12 " |
| 연결된 모든 AP의 모델 번호 |
bsnAPM모델 |
1.3.6.1.4.1.14179.2.2.1.1.16 |
문자열: "AIR-AP1840I-E-K9" |
| 클라이언트 수 |
CApActiveClientCount |
.1.3.6.1.4.1.9.9.513.1.1.1.1:72 |
정수 |
| 조인된 AP 수 |
cLApGlobalAPConnectCount |
1.3.6.1.4.1.9.9.513.1.3.35 |
게이지32: 1 |
| 전원 공급 장치 상태 |
ciscoEnvMonSupplyStatusTable |
.1.3.6.1.4.1.9.9.13.1.5(CSCwb를 통해 추가73163 |
테이블 |
| 팬 상태 |
ciscoEnvMonFanStatusTable |
.1.3.6.1.4.1.9.9.13.1.4 (CSCwb를 통해 추가73163 |
테이블 |
현재 Cisco 버그 ID: CSCvu26309 - 9800에 없는 클라이언트 수에 대한 SNMP OID를 사용하여 OID를 지원하기 위해 열려 있는 개선 요청이 있습니다.
이 문서의 시점에서는 PSU(전원 공급 장치) 및 팬 상태가 지원되지 않습니다. 아래에 개선 요청이 열렸습니다.
Cisco 버그 ID: CSCwa23598 - 9800 WLC 개선 / PSU 및 팬 상태 SNMP OID 지원(1.3.6.1.4.1.9.9.13).
17.5.1 릴리스의 고가용성 클러스터에서 대기 WLC를 모니터링할 수 있습니다. 대기 WLC는 RMI를 통해 직접 모니터링하거나 활성 WLC를 쿼리하여 모니터링할 수 있습니다.
대기 WLC는 RMI + RP HA 유형으로 실행되는 WLC에 대해서만 직접 모니터링할 수 있습니다. 이는 스탠바이 WLC의 RMI(Standby Redundancy Management Interface) IP 주소를 통해 수행됩니다.
이 시나리오에서는 IF-MIB의 OID만 지원되므로 대기 WLC의 모든 인터페이스 상태를 모니터링할 수 있습니다. 9800-CL WLC 출력 예:
| 설명 |
개체 이름 |
OID |
예상 응답 |
| 인터페이스 이름 |
ifDescr |
1.3.6.1.2.1.2.2.1.2 |
SNMPv2-SMI::mib-2.2.2.1.2.1 = GigabitEthernet1 |
| 인터페이스 작동 상태(1=up, 2=down) |
ifOperStatus |
1.3.6.1.2.1.2.2.1.8 |
SNMPv2-SMI::mib-2.2.2.1.8.1 = 2 |
활성 WLC에 대한 쿼리로 대기 WLC 상태를 모니터링할 수도 있습니다. CISCO-LWAPP-HA-MIB 및 CISCO-PROCESS-MIB만 공식적으로 지원됩니다. HA의 활성 WLC를 쿼리하면 첫 번째 응답은 활성 WLC의 값을 나타내고 두 번째 응답은 대기 WLC의 값을 나타냅니다.
| 설명 |
개체 이름 |
OID |
예상 응답 |
| 지난 5초 동안의 전체 CPU 사용량(%) |
cpmCPUTotal5sec |
1.3.6.1.4.1.9.9.109.1.1.1.1.3 |
SNMPv2-SMI::enterprises.9.9.109.1.1.1.3.5 = 3 |
| 최근 1분 동안의 전체 CPU 사용량(%) |
cpmCPUTotal1min |
1.3.6.1.4.1.9.9.109.1.1.1.1.4 |
SNMPv2-SMI::enterprises.9.9.109.1.1.1.4.5 = 8 |
| 최근 5분 동안의 전체 CPU 사용량(%) |
cpmCPUTotal5min |
1.3.6.1.4.1.9.9.109.1.1.1.1.5 |
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.5.5 = 10 |
| 현재 사용된 메모리(바이트) |
cpmCPU메모리Used |
1.3.6.1.4.1.9.9.109.1.1.1.1.12 |
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.12.5 = 4318980 |
| 현재 사용 가능한 메모리(바이트) |
cpmCPUMemoryFree |
1.3.6.1.4.1.9.9.109.1.1.1.1.13 |
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.12.5 = 4318739 |
| 마지막 부팅 이후 사용 가능한 최소 메모리 양(바이트) |
cpmCPUMemoryLowest |
1.3.6.1.4.1.9.9.109.1.1.1.1.15 |
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.15.5 = 3763868 |
| 대기 WLC의 상태(1=up, 0=down) |
cLHaPeerHotStandbyEvent |
1.3.6.1.4.1.9.9.843.1.3.4 |
SNMPv2-SMI::enterprises.9.9.843.1.3.4.0 = 1 |
| 개정 | 게시 날짜 | 의견 |
|---|---|---|
8.0 |
27-Oct-2026
|
맞춤법, 문법, 공백, 삽입된 가로줄을 가독성을 위해 별도의 섹션으로 삽입, 고정 CCW 알림, 대체 텍스트 |
7.0 |
01-Jul-2025
|
추가된 팬, 전원 공급 장치 및 클라이언트 수 OID |
6.0 |
31-Mar-2025
|
고정 MIB URL |
5.0 |
15-Nov-2023
|
CPU 코어 OID당 추가됨 |
4.0 |
01-Apr-2022
|
추가 OID가 언급됨 |
2.0 |
01-Oct-2021
|
최초 릴리스 |
1.0 |
12-Oct-2021
|
최초 릴리스 |