소개
이 문서에서는 Cisco Catalyst 시리즈 스위치에서 높은 CPU 사용률을 모니터링하기 위해 Cisco IOS® Embedded Event Manager(EEM) 하위 시스템을 사용하는 방법에 대해 설명합니다.
사전 요구 사항
요구 사항
이 문서에서는 사용자가 Cisco IOS EEM(Embedded Event Manager)에 대해 알고 있다고 가정합니다.
사용되는 구성 요소
이 문서의 정보는 Cisco Catalyst 시리즈 스위치를 기반으로 합니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다.이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다.현재 네트워크가 작동 중인 경우, 모든 명령어의 잠재적인 영향을 미리 숙지하시기 바랍니다.
표기 규칙
문서 규칙에 대한 자세한 내용은 Cisco 기술 팁 규칙을 참조하십시오.
배경 정보
EEM은 CLI를 사용하여 수작업으로 문제를 해결하기가 어렵고 수명이 짧은 CPU 급증을 자주 해결하는 데 매우 유용한 툴입니다.다음은 CPU 급증의 예입니다.
Switch#show process cpu history
<snip>
11111822511 11 111277711111 124111 11 1211111112161116
143342171209994090111878458239607111981270283361362429475
100
90
80 * ***
70 * *** *
60 * *** * *
50 * * *** * * *
40 * * *** * * *
30 * ** *** * * *
20 **** **** ** *** ** * ** ** **
10 *********************************************************
0....5....1....1....2....2....3....3....4....4....5....5....6....6....7.
0 5 0 5 0 5 0 5 0 5 0 5 0
CPU% per hour (last 72 hours)
* = maximum CPU% # = average CPU%
문제 해결
이 섹션에는 CPU 사용률을 모니터링하기 위해 EEM 스크립트를 사용하는 몇 가지 예가 포함되어 있습니다.Catalyst 2960 및 3750 스위치를 통해 EEM은 비휘발성 RAM(NVRAM)을 사용할 수 있습니다.Catalyst 4500 스위치는 EEM이 부트플래시에 쓸 수 있도록 합니다.EEM은 Catalyst 6500 스위치를 사용하여 disk0 및 sup-bootdisk를 사용할 수 있습니다.
참고:이 섹션에 사용된 명령에 대한 자세한 내용을 보려면 Command Lookup Tool(등록된 고객만 해당)을 사용합니다.
2960X에서 CPU 급증 시 데이터를 캡처하는 EEM
Catalyst 2960X는 플래시에 추가하는 것을 지원하지 않습니다.아래 EEM은 플래시에 있는 각 파일의 캡처된 데이터를 리디렉션합니다./TAC는 EEM의 마지막 실행에서 가져온 것입니다.
logging buffered 8192 informational
process cpu threshold type total rising 80 interval 5
!
event manager applet High_CPU authorization bypass
event syslog pattern "CPURISINGTHRESHOLD"
action 001 syslog msg "EEM: HIGH CPU detected. Writing info to flash:"
action 002 cli command "enable"
action 003 cli command "term exec prompt timestamp"
action 004 cli command "term len 0"
action 005 cli command "mkdir TAC" pattern "Create.*"
action 006 cli command "TAC" pattern "Create.*"
action 007 cli command " "
action 008 cli command "show process cpu sorted | redirect flash:TAC/TAC_CPU.txt"
action 009 cli command "show buffers | redirect flash:TAC/TAC_Buffers.txt"
action 010 cli command "show interfaces summary | redirect flash:TAC/TAC_IntSumm.txt"
action 011 cli command "show interfaces stats | redirect flash:TAC/TAC_IntStat.txt"
action 012 cli command "show ip traffic | redirect flash:TAC/TAC_IPTraffic.txt"
action 013 cli command "show ip cef switching statistics | redirect flash:TAC/TAC_IPCef.txt"
action 014 cli command "show controllers cpu-interface | redirect flash:TAC/TAC_Controllers.txt"
action 015 cli command "show platform port-asic stats drop | redirect flash:TAC/TAC_Port-Asic.txt"
action 016 cli command "show platform ip unicast statistics | redirect flash:TAC/TAC_UnicastStats.txt"
action 017 cli command "show platform ip unicast counts | redirect flash:TAC/TAC_UnicastCounts.txt"
action 018 cli command "show platform tcam utilization | redirect flash:TAC/TAC_TCAM.txt"
action 019 syslog msg "EEM: Self-removing applet from configuration..."
action 020 cli command "configure terminal"
action 021 cli command "no event manager applet High_CPU"
action 022 syslog msg "EEM: Finished removing from configuration!"
action 023 cli command "end"
이메일 알림
이 스크립트는 CPU 사용률이 50%를 초과할 때 알림을 이메일로 보냅니다.이메일의 본문은 show process cpu sorted 명령의 출력입니다.
event manager applet highcpu
event snmp oid 1.3.6.1.4.1.9.9.109.1.1.1.1.3.1 get-type exact entry-op ge entry-val 50 poll-interval 0.5
action 1.0 cli command "enable"
action 2.0 cli command "show proc cpu sorted"
action 3.0 mail server "192.168.1.1" to "user-to@domain.com" from "user-from@domain.com" subject "High CPU Alert" body "$_cli_result"
기울임꼴로 지정된 변수의 정의는 다음과 같습니다.
- highcpu - 이벤트 관리자 앱의 이름
- 허용/스크립트
- 1.3.6.1.4.1.9.9.109.1.1.1.1.3.1 - RP(Route Processor)의 총 CPU 사용률을 폴링하는 OID(Object Identifier)
- 50 - 스크립트를 트리거하는 CPU 사용률
- poll-interval 0.5 - 스크립트가 CPU를 모니터링하는 빈도(0.5초마다)
- 192.169.1.1 - 메일 서버의 IP
로컬 파일에 출력 추가
이 스크립트는 필요한 출력을 로컬 파일 시스템의 파일에 추가합니다.파일 시스템을 스위치의 적절한 파일 시스템으로 교체합니다.
event manager scheduler script thread class default number 1
event manager applet High_CPU
event snmp oid 1.3.6.1.4.1.9.9.109.1.1.1.1.3.1 get-type exact entry-op ge entry-val 50 poll-interval 0.5
action 0.0 syslog msg "High CPU DETECTED. Please wait - logging Information to file system:high_cpu.txt"
action 0.1 cli command "enable"
action 0.2 cli command "show clock | append file system:high_cpu.txt"
action 1.2 cli command "term length 0"
action 1.3 cli command "show process cpu sorted | append file system:high_cpu.txt"
action 1.4 cli command "show log | append file system:high_cpu.txt"
action 1.5 cli command "show interfaces | append file system:high_cpu.txt"
action 1.6 cli command "term length 24"
로컬 파일에 출력 추가 및 스크립트 제거
이 스크립트는 show process cpu sorted 명령의 출력을 로컬 파일 시스템의 파일에 추가한 다음 완료되면 자동으로 제거됩니다.파일 시스템을 스위치의 적절한 파일 시스템으로 교체합니다.
event manager scheduler script thread class default number 1
event manager applet High_CPU
event snmp oid 1.3.6.1.4.1.9.9.109.1.1.1.1.3.1 get-type exact entry-op gt entry-val 50 poll-interval 0.5
action 0.0 syslog msg "High CPU DETECTED. Please wait - logging Information to flash:high_cpu.txt"
action 0.1 cli command "enable"
action 0.2 cli command "term exec prompt timestamp"
action 1.3 cli command "show process cpu sorted | append file system:high_cpu.txt"
action 1.4 cli command "show process cpu sorted | append file system:high_cpu.txt"
action 1.4 cli command "show process cpu sorted | append file system:high_cpu.txt"
action 5.1 syslog msg "Finished logging information to file system:high_cpu.txt..."
action 5.1 syslog msg "Self-removing applet from configuration..."
action 5.2 cli command "term no exec prompt timestamp"
action 9.1 cli command "configure terminal"
action 9.2 cli command "no event manager applet High_CPU"
action 9.3 cli command "end"
출력 수집 및 로컬 파일에 쓰기
이 스크립트는 필요한 출력을 실행 및 수집하고 해당 출력을 로컬 파일 시스템에 쓰기 위해 syslog 기반 트리거를 사용합니다.파일 시스템을 스위치의 적절한 파일 시스템으로 교체합니다.
process cpu threshold type total rising 70 interval 15
event manager applet DETECT_CPU
event syslog pattern ".*SYS-1-CPURISINGTHRESHOLD.*"
action 1 cli command "en"
action 2 cli command "show clock | append file system:cpuinfo"
action 3 cli command "show proc cpu sort | append file system:cpuinfo"
action 4 cli command "show line | append file system:cpuinfo"
모듈형 IOS에서 CPU 사용률 모니터링
Cisco EEM을 사용하여 모듈형 IOS의 CPU 사용률을 모니터링할 수도 있습니다.모듈형 IOS에서 CPU를 모니터링하는 방법의 차이 때문에 IOS 기본 프로세스에서 CPU 사용률을 확인하기 위해 SNMP(Simple Network Management Protocol) OID(1.3.6.1.4.1.9.9.109.1.1.1.1.3.1)을 사용할 수 있습니다.
이 스크립트는 OID를 트리거로 사용하며 필요한 출력을 로컬 파일 시스템에 씁니다.파일 시스템을 스위치의 적절한 파일 시스템으로 교체합니다.
event manager scheduler script thread class default number 1
event manager applet High_CPU
event snmp oid 1.3.6.1.4.1.9.9.109.1.1.1.1.10.1 get-type exact entry-op ge entry-val 50 poll-interval 0.5
action 0.0 syslog msg "High CPU DETECTED. Please wait - logging Information to file system:high_cpu.txt"
action 0.1 cli command "enable"
action 0.2 cli command "show clock | append file system:high_cpu.txt"
action 1.2 cli command "term length 0"
action 1.3 cli command "show process cpu sorted | append file system:high_cpu.txt"
action 1.4 cli command "show log | append file system:high_cpu.txt"
action 1.5 cli command "show interfaces | append file system:high_cpu.txt"
action 1.6 cli command "term length 24"
스크립트 제거
EEM 스크립트를 제거하려면 다음 명령을 입력합니다.
Switch(config)#no event manager applet applet name
관련 정보