본 제품에 대한 문서 세트는 편견 없는 언어를 사용하기 위해 노력합니다. 본 설명서 세트의 목적상, 편견 없는 언어는 나이, 장애, 성별, 인종 정체성, 민족 정체성, 성적 지향성, 사회 경제적 지위 및 교차성에 기초한 차별을 의미하지 않는 언어로 정의됩니다. 제품 소프트웨어의 사용자 인터페이스에서 하드코딩된 언어, RFP 설명서에 기초한 언어 또는 참조된 서드파티 제품에서 사용하는 언어로 인해 설명서에 예외가 있을 수 있습니다. 시스코에서 어떤 방식으로 포용적인 언어를 사용하고 있는지 자세히 알아보세요.
Cisco는 전 세계 사용자에게 다양한 언어로 지원 콘텐츠를 제공하기 위해 기계 번역 기술과 수작업 번역을 병행하여 이 문서를 번역했습니다. 아무리 품질이 높은 기계 번역이라도 전문 번역가의 번역 결과물만큼 정확하지는 않습니다. Cisco Systems, Inc.는 이 같은 번역에 대해 어떠한 책임도 지지 않으며 항상 원본 영문 문서(링크 제공됨)를 참조할 것을 권장합니다.
이 문서에서는 Cisco 라우터의 CPU 사용률이 높은 일반적인 증상과 원인을 설명하고 일반적인 문제에 대한 지침과 솔루션을 제공합니다.
다음 주제에 대한 지식을 보유하고 있으면 유용합니다.
Cisco IOS 소프트웨어 스위칭 경로에 대한 자세한 내용은 Performance Tuning Basics를 참조하십시오.
이 문서는 특정 소프트웨어 및 하드웨어 버전으로 한정되지 않습니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
이 목록에서는 CPU 사용률이 높은 일반적인 증상을 설명합니다. 이러한 증상이 발견되면 이 문서에 설명된 단계를 수행하여 문제를 해결하십시오.
의 높은 비율 show processes cpu
명령 출력입니다.
Cisco 디바이스에서 show processes cpu 명령의 출력이 있는 경우 Cisco CLI Analyzer를 사용하여 잠재적인 문제 및 수정 사항을 표시할 수 있습니다.
참고: Cisco CLI Analyzer를 사용하려면 등록된 Cisco 사용자이고 로그인되어 있어야 하며 JavaScript가 활성화되어 있어야 합니다.
느린 성능
라우터의 서비스가 응답하지 않습니다. 예를 들면 다음과 같습니다.
텔넷에서 응답이 느리거나 라우터에 대한 텔넷 연결이 불가능합니다.
콘솔에서 응답 속도 저하
Ping에 대한 응답 느림 또는 없음
라우터가 다른 라우터로 라우팅 업데이트를 전송하지 않음
높은 버퍼 오류
가능한 보안 문제를 확인합니다. 일반적으로 높은 CPU 사용률은 네트워크에서 작동하는 웜 또는 바이러스와 같은 보안 문제로 인해 발생합니다. 이는 특히 최근 네트워크 변경이 없었다면 더욱 그러할 가능성이 높습니다. 일반적으로 액세스 목록에 행을 추가할 때 컨피그레이션을 변경하면 이 문제의 영향을 완화할 수 있습니다. Cisco Product Security Advisories and Notices에는 가장 가능성 있는 원인 탐지 및 구체적인 해결 방법에 대한 정보가 포함되어 있습니다.
자세한 내용은 다음을 참조하십시오.
라우터의 모든 debug
명령이 theor 명령과 함께 undebug all
꺼져 no debug all
있는지 확인합니다.
라우터에서 명령을 show
실행할 수 있습니까? 대답이 "예"인 경우 이 명령을 사용하여 즉시 추가 정보 수집을 show
시작합니다.
라우터에 액세스할 수 없습니까? 이 문제를 재현할 수 있나요? 대답이 "예"인 경우 라우터의 전원을 껐다가 다시 켜기 전에 명령을 scheduler interval 500
구성합니다. 이렇게 하면 우선 순위가 낮은 프로세스가 500밀리초마다 실행되도록 예약되므로 CPU 사용량이 100%인 경우에도 일부 명령을 실행할 수 있는 시간이 제공됩니다. Cisco 7200 및 Cisco 7500 Series 라우터에서 이 명령을 scheduler allocate 3000 1000
사용합니다.
라우터에 CPU 사용률이 높은 증상이 짧고 예측할 수 없는 간격으로 나타납니까? yes인 경우, CPU 사용률이 show processes cpu
높은 원인이 인터럽트로 인한 것인지 특정 프로세스로 인한 것인지를 보여 주는 명령의 출력을 정기적으로 수집합니다. 이 UNIX 스크립트를 사용하고, 처음 발견한 내용을 기준으로 스크립트를 수정하여 문제를 더 자세히 조사하는 데 필요한 데이터를 수집합니다.
show processes cpu 명령을 사용하여 인터럽트 또는 프로세스로 인해 CPU 사용률이 높은지 확인합니다.
자세한 내용은 인터럽트로 인한 높은 CPU 사용률 문제 해결을 참조하십시오. CEF 스위칭 패킷으로 인해 발생할 수 있는 인터럽트로 인해 CPU 레벨이 상승하면 CPU 레벨은 라우터 성능에 영향을 주지 않습니다.
NetFlow가 버전 7에 대해 구성된 경우 라우팅 프로세서에서 흐름이 수행되므로 CPU 사용률이 높아질 수 있습니다.
NetFlow 버전 7로 인한 높은 CPU 사용률 문제를 해결하려면 다음을 구성합니다 mls nde 발신자 버전 5, 즉 NetFlow 내보내기가 SP에 의해 수행되므로 버전 5 또는 버전 9의 기본값이 됩니다.
어떤 프로세스가 CPU를 로드하는지 확인합니다. 프로세스와 관련된 비정상적인 활동으로 인해 로그에 오류 메시지가 표시됩니다. 따라서 CPU 사이클을 show logging exec
많이 소비하는 프로세스와 관련된 오류가 있는지 먼저 명령의 출력을 확인해야 합니다.
이러한 프로세스에서 높은 CPU 사용률을 트러블슈팅하려면 debug 명령을 사용할 수 있습니다. Debug 명령은 CPU 사용률을 더 높일 수 있으므로 각별히 주의해서 수행해야 합니다. debug 명령을 안전하게 사용하려면 다음 전제 조건을 충족해야 합니다.
버퍼 로깅을 제외한 모든 로깅 대상은 비활성화되거나 해당 로깅 심각도 수준을 7(디버깅)에서 6(정보) 이하로 낮추어야 합니다(해당 logging destination [ severity-level ] configuration
명령 사용). 활성화된 로깅 대상과 해당 레벨을 보려면 명령의 헤더 행을 show logging exec
읽습니다.
충분한 정보를 캡처하려면 로깅 버퍼 크기를 늘려야 합니다. 자세한 내용은 명령에 대한 설명을 logging buffer global configuration
참조하십시오.
디버그를 더 잘 읽고 이해하기 위해서는 날짜 및 밀리초 타임스탬프가 활성화되어야 합니다. 자세한 내용은 명령에 대한 설명을 service timestamps global configuration
참조하십시오.
Troubleshoot High CPU Utilization due to Input Process(입력 프로세스로 인한 CPU 사용률 높음 문제 해결)에서 IP 패킷의 샘플 디버깅 세션이 제공됩니다.
특정 프로세스에서 높은 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 프로세스) - 를 캡처하거나 디버그show tech
가 활성화된 경우 high로 이동할 수 있습니다.
Other processes(기타 프로세스) - 이 문서의 Other Processes(기타 프로세스) 섹션, 프로세스로 인한 높은 CPU 사용률 문제 해결.
PCI 및 Fast 메모리 풀을 통해 여유 메모리가 부족한 것이 일반적인 현상입니다. PCI 메모리는 연결된 PCI 버스를 위해 PRP 메인보드의 GT64260 컨트롤러에 대한 메모리 액세스에 사용됩니다. 이 메모리는 시스템 컨트롤러와 다른 부품 간의 내부 통신에 사용되므로 항상 높은 것으로 보입니다.
더 많은 메모리가 필요한 경우 프로세서 풀 메모리로 돌아갑니다. Fast 메모리는 하드웨어 IDB(Interface Descriptor Block) 데이터 구조에서 사용할 수 있도록 설정된 적은 양의 메모리입니다. 이 메모리 또한 부팅 내내 완전히 예약되어 있으므로 메모리가 완전히 사용되므로 항상 높은 수준으로 표시됩니다. 따라서 빠른 메모리 풀에서는 여유 메모리가 부족한 것이 정상입니다.
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 사용률 문제를 해결하려면 라우터를 통과하는 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를 참조하십시오.
라우터에 액세스할 수 없는 경우 먼저 전원을 껐다가 켭니다. 그런 다음 syslog 서버에 메시지를 로깅해야 하는 명령을 제외하고 이 섹션의 show log
명령 출력을 주기적으로 수집합니다. 출력을 수집하는 간격은 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 시간(밀리초) |
호출됨 |
프로세스가 호출된 횟수 |
uSecs |
각 호출의 CPU 시간(마이크로초) |
5초 |
지난 5초 동안의 작업별 CPU 사용률 |
1분 |
지난 1분 동안의 작업별 CPU 사용률2 |
5분 |
최근 5분 동안의 작업별 CPU 사용률2 |
TTY |
프로세스를 제어하는 터미널 |
Process |
프로세스의 이름 |
프로세스 레벨의 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
:이 명령은 인터페이스에서 액티브 스위칭 경로를 결정하는 데 사용됩니다.
이는 하나의 인터페이스에 대한 명령의 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
출력에 인터페이스에 구성된 모든 프로토콜의 스위칭 경로가 나열되므로 라우터를 통과하는 트래픽의 종류와 양을 쉽게 확인할 수 있습니다. 이 표에서는 출력 필드에 대해 설명합니다.
필드 | 정의 |
---|---|
Process |
처리된 패킷. 이러한 패킷은 라우터로 향하는 패킷이거나 고속 스위칭 캐시에 항목이 없는 패킷일 수 있습니다. |
누락 캐시 수 |
고속 스위칭 캐시에 항목이 없는 패킷입니다. 이 대상에 대한 첫 번째 패킷(또는 흐름 - 구성된 고속 스위칭 유형에 따라 다름)이 처리됩니다. 모든 후속 패킷은 발신 인터페이스에서 고속 스위칭이 명시적으로 비활성화되지 않는 한 고속 스위칭됩니다. |
빠름 |
고속 스위치드 패킷. 고속 스위칭은 기본적으로 활성화되어 있습니다. |
오톤/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 사용률에 영향을 줍니다. 매우 많은 수의 변환이 라우터에 성능에 영향을 미칠 수 있습니다.
다음은 명령의 샘플 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
:이 명령은 버퍼된 로그 메시지의 내용을 표시합니다.
Embedded Event Manager를 사용하여 높은 CPU 조건이 발생할 때 데이터를 자동으로 수집할 수 있습니다. EEM은 프로세스 사용률에 대해 SNMP OID를 모니터링하거나 CPU threshold 명령의 출력에 대해 syslog 메시지를 모니터링하여 트리거됩니다. 다양한 show 명령을 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
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
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"
이 부록에서는 라우터에서 주기적으로 데이터를 캡처하는 간단한 스크립트에 대해 설명합니다. 스크립트의 핵심은 다음 줄입니다.
(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 &
개정 | 게시 날짜 | 의견 |
---|---|---|
2.0 |
30-Nov-2022 |
서식이 업데이트되었습니다. 다시 인증되었습니다. |
1.0 |
14-Dec-2001 |
최초 릴리스 |