목차

소개

사전 요구 사항

요구 사항

사용되는 구성 요소

높은 CPU 사용률의 증상

높은 CPU 사용률 문제 해결

원인 파악 및 문제 해결

인터럽트로 인한 높은 CPU 사용률

Cisco 7600 Series 라우터에서 NetFlow NDE를 활성화할 때 높은 CPU

프로세스로 인한 높은 CPU 사용률

PCI 및 FAST 메모리 풀은 매우 높은 사용률을 보입니다.

%SNMP-4-HIGHCPU: [chars]의 [chars]에 대한 프로세스가 [dec]ms 임계값([dec]ms IOS quantum)을 초과합니다. 결과 [chars]

소프트웨어 암호화로 인한 높은 CPU

단편화로 인한 높은 CPU 사용률

추가 정보를 얻을 수 있는 명령

show processes cpu 명령

show interfaces 명령

show interfaces switching 명령

show interfaces stat 명령

show ip nat translations 명령

show align 명령

show version 명령

show log 명령

높은 CPU 조건의 자동 데이터 수집을 위한 EEM 스크립트

SNMP OID를 사용하는 EEM 스크립트 예

CPU Threshold Notifications(CPU 임계값 알림) 메시지가 있는 EEM 스크립트 예

CPU 프로필 시작/중지를 위한 EEM 스크립트 예

정기적인 데이터 수집을 위한 UNIX 셸 스크립트

관련 정보

소개

이 문서에서는 Cisco 라우터의 CPU 사용률이 높은 일반적인 증상과 원인을 설명하고 일반적인 문제에 대한 지침과 솔루션을 제공합니다.

사전 요구 사항

요구 사항

다음 주제에 대한 지식을 보유하고 있으면 유용합니다.

- Cisco 라우터

- Cisco IOS® 소프트웨어 스위칭 경로

Cisco IOS 소프트웨어 스위칭 경로에 대한 자세한 내용은 Performance Tuning Basics를 참조하십시오.

사용되는 구성 요소

이 문서는 특정 소프트웨어 및 하드웨어 버전으로 한정되지 않습니다.

이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.

높은 CPU 사용률의 증상

이 목록에서는 CPU 사용률이 높은 일반적인 증상을 설명합니다. 이러한 증상이 발견되면 이 문서에 설명된 단계를 수행하여 문제를 해결하십시오.

- 의 높은 비율  show processes cpu  명령 출력입니다.

Cisco 디바이스에서 show processes cpu 명령의 출력이 있는 경우 Cisco CLI Analyzer를 사용하여 잠재적인 문제 및 수정 사항을 표시할 수 있습니다.

참고: Cisco CLI Analyzer를 사용하려면 등록된 Cisco 사용자이고 로그인되어 있어야 하며 JavaScript가 활성화되어 있어야 합니다.

- 느린 성능

- 라우터의 서비스가 응답하지 않습니다. 예를 들면 다음과 같습니다.

- 텔넷에서 응답이 느리거나 라우터에 대한 텔넷 연결이 불가능합니다.

- 콘솔에서 응답 속도 저하

- Ping에 대한 응답 느림 또는 없음

- 라우터가 다른 라우터로 라우팅 업데이트를 전송하지 않음

- 높은 버퍼 오류

높은 CPU 사용률 문제 해결

CPU 사용률이 높은 증상에서 어떤 증상도 발견되면:

- 가능한 보안 문제를 확인합니다. 일반적으로 높은 CPU 사용률은 네트워크에서 작동하는 웜 또는 바이러스와 같은 보안 문제로 인해 발생합니다. 이는 특히 최근 네트워크 변경이 없었다면 더욱 그러할 가능성이 높습니다. 일반적으로 액세스 목록에 행을 추가할 때 컨피그레이션을 변경하면 이 문제의 영향을 완화할 수 있습니다. Cisco Product Security Advisories and Notices에는 가장 가능성 있는 원인 탐지 및 구체적인 해결 방법에 대한 정보가 포함되어 있습니다.

자세한 내용은 다음을 참조하십시오.

- 인터넷 위협에 대한 100가지 질문과 대답

- Cisco 제품 보안 자문 및 공지

- Cisco 위협 제어

- 모두 확인  debug  라우터의 명령은 undebug all 또는 no debug all  명령을 사용합니다.

- Cisco의 ISE 및  show 라우터의 명령 대답이 "예"인 경우, 다음과 같이 추가 정보를 즉시 수집하기 시작합니다.  show 명령을 사용합니다.

- 라우터에 액세스할 수 없습니까? 이 문제를 재현할 수 있나요? 대답이 "예"인 경우 라우터의 전원을 껐다가 다시 켜기 전에  scheduler interval 500  명령을 실행합니다. 이렇게 하면 우선 순위가 낮은 프로세스가 500밀리초마다 실행되도록 예약되므로 CPU 사용량이 100%인 경우에도 일부 명령을 실행할 수 있는 시간이 제공됩니다. Cisco 7200 및 Cisco 7500 Series 라우터에서는  scheduler allocate 3000 1000  명령을 실행합니다.

- 라우터에 CPU 사용률이 높은 증상이 짧고 예측할 수 없는 간격으로 나타납니까? 대답이 "예"인 경우 주기적으로  show processes cpu  명령 - 높은 CPU 사용률이 인터럽트에 의해 발생하는지 또는 특정 프로세스에 의해 발생하는지 여부를 표시합니다. 이 UNIX 스크립트를 사용하고, 처음 발견한 내용을 기준으로 스크립트를 수정하여 문제를 더 자세히 조사하는 데 필요한 데이터를 수집합니다.

원인 파악 및 문제 해결

show processes cpu 명령을 사용하여 인터럽트 또는 프로세스로 인해 CPU 사용률이 높은지 확인합니다.

인터럽트로 인한 높은 CPU 사용률

자세한 내용은 인터럽트로 인한 높은 CPU 사용률 문제 해결을 참조하십시오. CEF 스위칭 패킷으로 인해 발생할 수 있는 인터럽트로 인해 CPU 레벨이 상승하면 CPU 레벨은 라우터 성능에 영향을 주지 않습니다.

Cisco 7600 Series 라우터에서 NetFlow NDE를 활성화할 때 높은 CPU

NetFlow가 버전 7에 대해 구성된 경우 라우팅 프로세서에서 흐름이 수행되므로 CPU 사용률이 높아질 수 있습니다.

NetFlow 버전 7로 인한 높은 CPU 사용률 문제를 해결하려면 mls nde sender 버전 5를 구성하십시오. SP에서 NetFlow 내보내기가 수행되기 때문입니다(버전 5 또는 버전 9의 기본값).

프로세스로 인한 높은 CPU 사용률

어떤 프로세스가 CPU를 로드하는지 확인합니다. 프로세스와 관련된 비정상적인 활동으로 인해 로그에 오류 메시지가 표시됩니다. 따라서 show logging exec  먼저 CPU 사이클을 많이 사용하는 프로세스와 관련된 오류를 확인해야 합니다.

이러한 프로세스에서 높은 CPU 사용률을 트러블슈팅하려면 debug 명령을 사용할 수 있습니다. Debug 명령은 CPU 사용률을 더 높일 수 있으므로 각별히 주의해서 수행해야 합니다. debug 명령을 안전하게 사용하려면 다음 전제 조건을 충족해야 합니다.

- 버퍼 로깅을 제외한 모든 로깅 대상은 비활성화되거나 해당 로깅 심각도 수준을 7(디버깅)에서 6(정보) 이하로 낮추어야 합니다.  logging destination [ severity-level ]  configuration  명령을 실행합니다. 어떤 로깅 대상과 해당 레벨이 활성화되었는지 확인하려면 의 헤더 행을 읽으십시오. show logging exec 명령을 실행합니다.

- 충분한 정보를 캡처하려면 로깅 버퍼 크기를 늘려야 합니다. 자세한 내용은 의 설명을 참조하십시오  logging buffer global configuration  명령을 실행합니다.

- 디버그를 더 잘 읽고 이해하기 위해서는 날짜 및 밀리초 타임스탬프가 활성화되어야 합니다. 자세한 내용은 의 설명을 참조하십시오 service timestamps global configuration  명령을 실행합니다.

IP 패킷의 샘플 디버깅 세션은 IP 입력 프로세스의 높은 CPU 사용률 트러블슈팅에서 제공됩니다.

특정 프로세스에서 높은 CPU 사용률의 문제를 해결하려면 다음을 참조하십시오.

- ARP Input(ARP 입력) - Troubleshooting High CPU Utilization due due to Processes(프로세스에 따른 높은 CPU 사용률 문제 해결)의 ARP Input(ARP 입력) 섹션입니다.

- BGP 라우터 - BGP 스캐너 또는 BGP 라우터 프로세스로 인한 높은 CPU 문제 해결 문서의 BGP 라우터 프로세스로 인한 높은 CPU 섹션입니다.

- BGP Scanner(BGP 스캐너) - BGP 스캐너 또는 BGP 라우터 프로세스로 인한 높은 CPU 문제 해결 문서의 BGP 스캐너 섹션으로 인한 높은 CPU

- EXEC—EXEC 및 가상 EXEC 프로세스에서 높은 CPU 사용률.

- HyBridge Input(HyBridge 입력) - ATM 인터페이스를 사용하는 라우터에서 HyBridge 입력 프로세스로 인해 발생하는 높은 CPU 사용률 문제를 해결합니다.

- IP Input(IP 입력) - IP 입력 프로세스로 인한 높은 CPU 사용률 문제 해결

- IP SNMP(Simple Network Management Protocol) - IP SNMP(Simple Network Management Protocol)는 높은 CPU 사용률을 유발합니다.

- LC ADJ Updater—Cisco 12000 Series Internet Router의 LC 인접 업데이터 프로세스에서 CPU 사용률이 높은 이유는 무엇입니까?

- TCP Timer(TCP 타이머) - Troubleshooting High CPU Utilization due to Processes(프로세스로 인한 높은 CPU 사용률 문제 해결) 문서의 TCP Timer(TCP 타이머) 섹션입니다.

- TTY Background(TTY 백그라운드) - 프로세스에 따른 CPU 사용률 높음 문제 해결 문서의 TTY 백그라운드 섹션입니다.

- 가상 EXEC — EXEC 링크를 참조하십시오. Exec 및 가상 Exec 프로세스에서 높은 CPU 사용률.

- Vtemplate Backgr(Vtemplate 배경) - 프로세스에 따른 CPU 사용률 높음 문제 해결 문서의 가상 템플릿 배경 섹션입니다.

- SSH Process(SSH 프로세스) - SSH가 show tech 또는 디버그가 활성화되어 있습니다.

- Other processes(기타 프로세스) - 이 문서의 Other Processes(기타 프로세스) 섹션, 프로세스로 인한 높은 CPU 사용률 문제 해결.

PCI 및 FAST 메모리 풀은 매우 높은 사용률을 보입니다.

PCI 및 Fast 메모리 풀을 통해 여유 메모리가 부족한 것이 일반적인 현상입니다. PCI 메모리는 연결된 PCI 버스를 위해 PRP 메인보드의 GT64260 컨트롤러에 대한 메모리 액세스에 사용됩니다. 이 메모리는 시스템 컨트롤러와 다른 부품 간의 내부 통신에 사용되므로 항상 높은 것으로 보입니다.

더 많은 메모리가 필요한 경우 프로세서 풀 메모리로 돌아갑니다. 고속 메모리는 하드웨어 IDB(Interface Descriptor Block) 데이터 구조에서 사용하도록 설정된 적은 양의 메모리입니다. 이 메모리 또한 부팅 내내 완전히 예약되어 있으므로 메모리가 완전히 사용되므로 항상 높은 수준으로 표시됩니다. 따라서 빠른 메모리 풀에서는 여유 메모리가 부족한 것이 정상입니다.

%SNMP-4-HIGHCPU: [chars]의 [chars]에 대한 프로세스가 [dec]ms 임계값([dec]ms IOS quantum)을 초과합니다. 결과 [chars]

CPU 호그 메시지는 다음과 같습니다.

SNMP-4-HIGHCPU: Process exceeds 200ms threshold (200ms Cisco IOS quantum)

for GET of rmon.19.16.0--result rmon.19.16.0

새로운 syslog 메시지(HIGHCPU)가 12.4(13)에 Cisco IOS에 추가되었습니다. 프로세스가 CPU를 200ms 이상 유지할 경우 HIGHCPU 메시지를 보고합니다. HIGHCPU 메시지는 라우터에 영향을 미치지 않습니다. 어떤 프로세스로 인해 높은 CPU가 발생했는지 알 수 있습니다. HIGHCPU 메시지는 CPUHOG 메시지와 비슷하지만 HIGHCPU 메시지는 CPUHOG 메시지에 비해 허용 오차 임계값이 1/10로 훨씬 낮습니다(밀리초 단위). 2600의 12.4(13) 이전 버전에서는 프로세스가 더 오래 실행되었지만 Cisco IOS 버전에서는 이러한 개선 사항이 없으므로 메시지가 생성되지 않았습니다.

SNMP PDU 처리(MIB 개체 쿼리)는 PDU의 각 개체가 동시에 검색되도록 단일 CPU 시간 양자로 수행되어야 합니다. 이는 SNMP 프로토콜 표준에 의해 규정된 요구 사항입니다. 일부 객체는 시스템에 있는 많은 데이터의 집계이므로 단일 객체이지만 계측된 방식 때문에 많은 처리가 수반됩니다. MIB 계측 규칙에 필요한 대로 CPU를 포기하지 않으면 이 오류 메시지가 나타날 가능성이 있습니다. 또한 동일한 객체 그룹/테이블에 있는 여러 객체를 폴링하고 오류 메시지를 받으면 이 같은 이유로 인해 가 이상한 일이 아닙니다.

이 메시지는 예상보다 많은 CPU 시간을 사용하지만 CPUHOG는 사용하지 않는 객체를 식별하는 데 사용됩니다. 일부 NMS/계측 툴은 폴링할 때 제대로 작동하지 않습니다. 이 문제는 Cisco 버그 ID CSCsl18139에 설명되어 있습니다.

참고: 등록된 Cisco 사용자만 내부 툴 및 버그 정보에 액세스할 수 있습니다.

소프트웨어 암호화로 인한 높은 CPU

디바이스에 하드웨어 암호화 모듈이 설치되지 않은 경우, 디바이스를 통해 들어오는 모든 암호화된 트래픽은 소프트웨어에 의해 암호화되어야 합니다. CPU를 많이 사용합니다. 적절한 처리량 요구 사항이 있는 암호화 구축에는 소프트웨어 암호화를 사용하지 않는 것이 좋습니다. 이 문제를 해결하기 위한 한 가지 옵션은 암호화된 트래픽의 볼륨을 줄이는 것입니다(트래픽을 다시 라우팅하거나 암호화된 흐름을 제한). 그러나 이 문제를 해결하는 가장 좋은 방법은 이 디바이스에 하드웨어 암호화 모듈을 설치한 것이므로 소프트웨어를 통해 암호화를 수행할 필요가 없습니다.

참고: 터널/물리적 인터페이스에서 암호화 맵을 활성화할 경우 메모리 소비 프로세스가 발생하고 CPU가 증가할 수 있습니다.

단편화로 인한 높은 CPU 사용률

리어셈블리는 CPU가 많은 수의 패킷을 리어셈블해야 하는 경우 CPU를 매우 높게 구동할 수 있습니다.

단편화로 인한 높은 CPU 사용률 문제를 해결하려면 라우터를 통과하는 TCP 동기화/시작(SYN) 패킷의 최대 세그먼트 크기(MSS) 값을 설정하는 인터페이스에서 tcp mss-adjust 1400 명령을 실행합니다.

추가 정보를 얻을 수 있는 명령

다음 명령은 문제에 대한 자세한 정보를 제공합니다.

- show processes cpu

- show interfaces

- show interfaces switching

- show interfaces stat

- show ip nat translations

- show align

- show version

- show log

show 명령에 대한 자세한 내용은 Cisco IOS Configuration Fundamentals Command Reference를 참조하십시오.

라우터에 액세스할 수 없는 경우 먼저 전원을 껐다가 켭니다. 그런 다음 이 섹션의 명령 출력을 정기적으로 수집합니다.  show log  syslog 서버에 로그온해야 하는 명령입니다. 출력을 수집하는 간격은 5분이어야 합니다. 이 UNIX 셸 스크립트를 사용하여 데이터를 수동으로 또는 자동으로 수집할 수 있습니다. HTTP 또는 SNMP를 사용하여 데이터를 수집할 수도 있습니다.

이 show processes cpu  명령을 사용합니다

다음은 의 헤더 예입니다. show processes cpu  명령을 실행합니다.

CPU utilization for five seconds: X%/Y%; one minute: Z%; five minutes: W%

PID  Runtime(ms)  Invoked  uSecs    5Sec   1Min   5Min TTY Process

이 표에서는 헤더의 필드에 대해 설명합니다.

필드

설명

X

최근 5초 동안의 평균 총 사용률(중단 + 프로세스)

Y

최근 5초 동안 인터럽트로 인한 평균 사용률^1

Z

지난 1분 동안의 평균 총 사용률^2

W

최근 5분 동안의 평균 총 사용률^2

PID

프로세스 ID

런타임

프로세스가 사용한 CPU 시간(밀리초)

호출됨

프로세스가 호출된 횟수

초

각 호출의 CPU 시간(마이크로초)

5초

최근 5초 동안의 작업별 CPU 사용률

1분

지난 1분 동안의 작업별 CPU 사용률^2

5분

최근 5분 동안의 작업별 CPU 사용률^2

TTY

프로세스를 제어하는 터미널

프로세스

프로세스 이름

프로세스 레벨의 1 CPU 사용률 = X - Y

2 값은 산술적 평균이 아니라 지수적으로 하락한 평균을 나타낸다. 따라서, 더 최근의 값들이 계산된 평균에 더 많은 영향을 미친다.

자세한 내용은 show commands reference guide를 참조하십시오.

참고: 라우터가 더 많은 패킷을 스위칭하는 능력을 측정하는 수단으로 총 CPU 사용률을 사용해서는 안 됩니다. Cisco 7500 라우터에서 VIP(Versatile Interface Processor) 및 RSP(Route/Switch Processor)는 선형 CPU 사용률을 보고하지 않습니다. 90~95%의 CPU 사용률이 지나면 초당 스위칭 패킷의 절반에 가까운 전력이 공급됩니다.

이 show interfaces 명령을 사용합니다

이 명령은 활성 인터페이스를 확인하는 데 사용됩니다.

이 show interfaces switching  명령을 사용합니다

이 명령은 인터페이스에서 액티브 스위칭 경로를 결정하는 데 사용됩니다.

다음은 Firepower Threat Defense  show interfaces switching  한 인터페이스에 대한 명령:

RouterA#show interfaces switching

Ethernet0

Throttle count          0

Drops         RP          0         SP          0

SPD Flushes       Fast          0        SSE          0

SPD Aggress       Fast          0

SPD Priority     Inputs          0      Drops          0

Protocol       Path    Pkts In   Chars In   Pkts Out  Chars Out

Other    Process          0          0        595      35700

Cache misses          0

Fast          0          0          0          0

Auton/SSE          0          0          0          0

IP    Process          4        456          4        456

Cache misses          0

Fast          0          0          0          0

Auton/SSE          0          0          0          0

IPX    Process          0          0          2        120

Cache misses          0

Fast          0          0          0          0

Auton/SSE          0          0          0          0

Trans. Bridge    Process          0          0          0          0

Cache misses          0

Fast         11        660          0          0

Auton/SSE          0          0          0          0

DEC MOP    Process          0          0         10        770

Cache misses          0

Fast          0          0          0          0

Auton/SSE          0          0          0          0

ARP    Process          1         60          2        120

Cache misses          0

Fast          0          0          0          0

Auton/SSE          0          0          0          0

CDP    Process        200      63700        100      31183

Cache misses          0

Fast          0          0          0         0

Auton/SSE          0          0          0          0

출력에 인터페이스에 구성된 모든 프로토콜의 스위칭 경로가 나열되므로 라우터를 통과하는 트래픽의 종류와 양을 쉽게 확인할 수 있습니다. 이 표에서는 출력 필드에 대해 설명합니다.

필드

정의

프로세스

처리된 패킷. 이러한 패킷은 라우터로 향하는 패킷이거나 고속 스위칭 캐시에 항목이 없는 패킷일 수 있습니다.

누락 캐시 수

고속 스위칭 캐시에 항목이 없는 패킷입니다. 이 대상에 대한 첫 번째 패킷(또는 흐름 - 구성된 고속 스위칭 유형에 따라 다름)이 처리됩니다. 모든 후속 패킷은 발신 인터페이스에서 고속 스위칭이 명시적으로 비활성화되지 않는 한 고속 스위칭됩니다.

빠름

고속 스위치드 패킷. 고속 스위칭은 기본적으로 활성화되어 있습니다.

오톤/SSE

자동 스위칭, 실리콘 스위칭 또는 분산 스위칭 패킷. 스위치 프로세서 또는 실리콘 스위치 프로세서가 있는 Cisco 7000 Series 라우터(각각 자동 스위칭 또는 실리콘 스위칭용) 또는 VIP가 있는 Cisco 7500 Series 라우터(분산 스위칭용)에서만 사용할 수 있습니다.

이  show interfaces stat  명령을 사용합니다

이 명령은 의 요약 버전입니다. show interfaces switching  명령을 실행합니다. 한 인터페이스에 대한 샘플 출력입니다.

RouterA#show interfaces stat

Ethernet0

Switching path    Pkts In   Chars In   Pkts Out  Chars Out

Processor      52077   12245489      24646    3170041

Route cache          0          0          0          0

Distributed cache          0          0          0          0

Total      52077   12245489      24646    3170041

의 출력  show interfaces stat  명령은 플랫폼마다 다르며 사용 가능하고 구성된 스위칭 경로에 따라 달라집니다.

이  show ip nat translations  명령을 사용합니다

이 show ip nat translations  이 명령은 라우터에서 활성화된 NAT(Network Address Translation) 변환을 표시합니다. 각 활성 변환은 CPU 인터럽트를 생성하며 라우터의 총 CPU 사용률에 영향을 줍니다. 매우 많은 수의 변환이 라우터에 성능에 영향을 미칠 수 있습니다.

다음은 Firepower Threat Defense  show ip nat translations  명령을 사용합니다:

router#show ip nat translations

Pro Inside global    Inside local    Outside local    Outside global

--- 172.16.131.1     10.10.10.1      ---              ---

이  show align  명령을 사용합니다

이 명령은 RISC(reduced instruction set computing) 프로세서 기반 플랫폼에서만 사용할 수 있습니다. 이러한 플랫폼에서는 CPU가 메모리 읽기 또는 쓰기가 정렬되지 않도록 수정할 수 있습니다. 다음은 샘플 출력입니다.

Alignment data for:

4500 Software (C4500-DS40-M), Version mis-aligned RELEASE SOFTWARE (fc1)

Compiled Tue 31-Mar-98 15:05 by jdoe

Total Corrections 33911, Recorded 2, Reads 33911, Writes 0

Initial Initial

Address Count Access Type Traceback

40025F4D 15561 16bit read 0x606F4A7C 0x601C78F8 0x6012FE94 0x600102C0

40025F72 18350 32bit read 0x606FB260 0x6013113C 0x600102C0 0x60010988

이  show version  명령을 사용합니다

높은 CPU 사용률 문제를 추적하려면 명령 출력에서 Cisco IOS Software 버전, 플랫폼, CPU 유형 및 라우터의 가동 시간이 중요한 정보입니다. 명령 참조는 이 명령에 대한 자세한 설명을 제공합니다.

이  show log  명령을 사용합니다

이 명령은 버퍼된 로그 메시지의 내용을 표시합니다.

높은 CPU 조건의 자동 데이터 수집을 위한 EEM 스크립트

Embedded Event Manager를 사용하여 높은 CPU 조건이 발생할 때 데이터를 자동으로 수집할 수 있습니다.  EEM은 프로세스 사용률에 대해 SNMP OID를 모니터링하거나 CPU threshold 명령의 출력에 대해 syslog 메시지를 모니터링하여 트리거됩니다. 다양한 show 명령을 EEM 스크립트를 통해 실행할 수 있으며, 출력을 파일 시스템에 저장할 수 있다.

SNMP OID를 사용하는 EEM 스크립트 예

이 스크립트는 프로세스 사용률이 약 85% 증가할 때 실행됩니다.

자세한 내용은 How to Collect CPU Utilization on Cisco IOS Devices Using SNMP를 참조하십시오.

event manager applet high-cpu

!

event snmp oid 1.3.6.1.4.1.9.9.109.1.1.1.1.3 get-type next entry-op gt entry-val 85 poll-interval 5 exit-time 500 maxrun 600

!

action 0.1 cli command "enable"

action 0.2 syslog msg "TAC - Capturing high cpu information to flash:"

action 0.3 cli command "term length 0"

action 1.1 cli command "show process cpu sorted | redirect flash:eem-cpu1.txt"

action 1.2 cli command "show interface | redirect flash:eem-interface1.txt"

action 1.3 cli command "show interface stats | redirect flash:eem-stat1.txt"

action 1.4 cli command "show ip traffic | redirect flash:eem-traffic1.txt"

action 4.1 syslog msg "TAC - Finished logging information to separate eem files in flash"

action 9.4 cli command "end"

action 9.5 cli command "term default length"

!

!

end

CPU Threshold Notifications(CPU 임계값 알림) 메시지가 있는 EEM 스크립트 예

EEM과 CPU threshold notifications 명령의 조합은 EEM 스크립트를 트리거할 수 있습니다. 이 예에서는 5초 간격 동안 사용률이 85% 이상 증가할 때 CPURISHINGTHRESHOLD syslog 메시지가 생성됩니다.  EEM 스크립트는 syslog 메시지를 트리거하고 파일 시스템의 파일에 저장된 명령 목록을 실행할 수 있습니다.

process cpu threshold type total rising 85 interval 5

!

event manager applet high-cpu

event syslog pattern "CPURISINGTHRESHOLD"

action 0.1 syslog msg "EEM: HIGH CPU detected. Writing info to flash:eem-log.txt"

action 0.2 cli command "enable"

action 0.3 cli command "term exec prompt timestamp"

action 0.4 cli command "term len 0"

action 1.1 cli command "show process cpu sorted | append flash:eem-log.txt"

action 1.2 cli command "show proc mem sorted | append flash:eem-log.txt"

action 1.3 cli command "show mem alloc total | append flash:eem-log.txt"

action 2.2 syslog msg "EEM: Self-removing applet from configuration..."

action 2.5 cli command "end"

!

end

CPU 프로필 시작/중지를 위한 EEM 스크립트 예

EEM은 CPU 프로파일링을 시작/중지하는 데 사용되며 다양한 show 명령의 데이터를 로깅합니다. 자세한 내용은 인터럽트로 인한 높은 CPU 사용률 문제 해결을 참조하십시오.

event manager applet High_CPU

event snmp oid 1.3.6.1.4.1.9.9.109.1.1.1.1.4.1 get-type exact entry-op ge entry-val "75" exit-time 10 poll-interval 5

action 0.1 syslog msg "CPU Utilization is high"

action 0.2 cli command "enable"

action 0.4 cli command "show version | append flash:CPU_Profile.txt"

action 0.4 cli command "show log | append flash:CPU_Profile.txt"

action 0.5 cli command "show process cpu sorted | append flash:CPU_Profile.txt"

action 0.6 cli command "show interfaces | append flash:CPU_Profile.txt"

action 0.7 cli command "show region | append flash:CPU_Profile.txt"

action 1.2 cli command "profile 4000F000 42C9FFFF 4"

action 1.3 cli command "profile start"

action 2.3 syslog msg "Entering TCLSH"

action 2.4 cli command "tclsh"

action 2.5 cli command "after 240000"

action 2.6 cli command "exit"

action 2.9 syslog msg "Exiting TCLSH"

action 3.0 cli command "profile stop"

action 3.1 cli command "show profile terse | append flash:CPU_Profile.txt"

action 3.2 cli command "clear profile"

action 3.3 cli command "unprofile all"

action 4.1 syslog msg "Finished logging information to flash:CPU_Profile.txt..."

action 4.2 cli command "end"

정기적인 데이터 수집을 위한 UNIX 셸 스크립트

이 부록에서는 라우터에서 주기적으로 데이터를 캡처하는 간단한 스크립트에 대해 설명합니다. 스크립트의 핵심은 다음 줄입니다.

(echo "show version") | telnet 192.168.1.1

괄호 안의 명령은 하위 셸에서 실행되며 출력은 텔넷 세션으로 전송됩니다. 다음은 의 출력을 캡처하기 위한 샘플 스크립트입니다  show version  및  show processes cpu  명령:

#!/opt/local/bin/bash

###########################################

# Router's IP address

#

IP_ADDRESS='10.200.40.53'

# Directory where the log files can be stored

#

DIR=/var/log/router

########################################

if [ ! -e $DIR ]

then

mkdir $DIR

fi

# Tag specification: mmddhhmm

DATE=`date +'%m%d'`

TIME=`date +'%H%M'`

TAG=$DATE$TIME

# Collect data from the router

(echo "foo";\

echo "bar";\

echo "term len 0";\

echo "show version";\

echo "show processes cpu";\

echo "term len 15";\

echo "show memory summary";\

echo "q";\

sleep 30)|telnet $IP_ADDRESS > $DIR/info.$TAG 2>$DIR/info.$TAG.msg

참고: 이 스크립트에서는 비밀번호가 포함된 모든 데이터가 일반 텍스트 형식으로 전송됩니다.

첫 번째 섹션에서는 로그 파일의 IP 주소와 대상 디렉토리를 지정해야 합니다. 두 번째 섹션에는 라우터로 전송되는 실제 명령이 포함되어 있습니다. 첫 번째는 사용자 이름, 비밀번호 등입니다. 특정 명령의 첫 번째 출력 라인만 캡처하는 것이 포함됩니다. 터미널 길이는 짧은 것(이 경우 15)으로 설정되고 "q" 문자는 프롬프트에 의해서만 전송됩니다.

데이터가 정기적으로 수집되면  show version  문제에 정기적인 특성이 있는지 여부를 표시합니다. 예를 들어, 문제가 항상 특정 시간에 나타나는지 특정 요일에 나타나는지 여부를 표시합니다. 추가 명령의 출력을 수집해야 하는 경우 예제와 같은 방식으로 스크립트에 추가할 수 있습니다. 파일로 전송된 출력을 잘라내야 하는 경우 먼저 절전 기간을 늘립니다(괄호 안의 sleep 명령).

높은 CPU 사용률 문제가 자주 나타나며 오래 가지 않을 경우 5분마다 이 스크립트를 실행합니다. 그렇지 않으면 15분에서 30분마다 실행할 수 있습니다. 사용하기 쉽도록 스크립트를 /usr/bin/router-script와 같은 파일에 저장합니다. 그런 다음 5분마다 실행하려면 다음 줄을 /etc/crontab 파일에 추가합니다.

*/5       *       *       *       *       /usr/bin/router-script

cron 서버를 다시 시작합니다. /etc/crontab 파일을 변경할 권한이 없는 경우 다음과 같이 스크립트를 별도의 프로세스로 실행합니다.

while [ 1 ]; do ./router-script ; sleep 300; done &

관련 정보

- Catalyst 2900XL/3500XL 스위치의 높은 CPU 사용률

- 성능 튜닝 기본 사항

- Cisco 기술 지원 및 다운로드