In dem Dokumentationssatz für dieses Produkt wird die Verwendung inklusiver Sprache angestrebt. Für die Zwecke dieses Dokumentationssatzes wird Sprache als „inklusiv“ verstanden, wenn sie keine Diskriminierung aufgrund von Alter, körperlicher und/oder geistiger Behinderung, Geschlechtszugehörigkeit und -identität, ethnischer Identität, sexueller Orientierung, sozioökonomischem Status und Intersektionalität impliziert. Dennoch können in der Dokumentation stilistische Abweichungen von diesem Bemühen auftreten, wenn Text verwendet wird, der in Benutzeroberflächen der Produktsoftware fest codiert ist, auf RFP-Dokumentation basiert oder von einem genannten Drittanbieterprodukt verwendet wird. Hier erfahren Sie mehr darüber, wie Cisco inklusive Sprache verwendet.
Cisco hat dieses Dokument maschinell übersetzen und von einem menschlichen Übersetzer editieren und korrigieren lassen, um unseren Benutzern auf der ganzen Welt Support-Inhalte in ihrer eigenen Sprache zu bieten. Bitte beachten Sie, dass selbst die beste maschinelle Übersetzung nicht so genau ist wie eine von einem professionellen Übersetzer angefertigte. Cisco Systems, Inc. übernimmt keine Haftung für die Richtigkeit dieser Übersetzungen und empfiehlt, immer das englische Originaldokument (siehe bereitgestellter Link) heranzuziehen.
Dieses Dokument beschreibt häufige Symptome und Ursachen einer hohen CPU-Auslastung auf Cisco Routern und bietet Richtlinien und Lösungen für häufige Probleme.
Cisco empfiehlt, dass Sie über Kenntnisse in folgenden Bereichen verfügen:
Informationen zu den Pfaden für das Switching der Cisco IOS Software finden Sie unter Grundlagen der Leistungsoptimierung.
Dieses Dokument ist nicht auf bestimmte Software- und Hardware-Versionen beschränkt.
Die Informationen in diesem Dokument beziehen sich auf Geräte in einer speziell eingerichteten Testumgebung. Alle Geräte, die in diesem Dokument benutzt wurden, begannen mit einer gelöschten (Nichterfüllungs) Konfiguration. Wenn Ihr Netzwerk in Betrieb ist, stellen Sie sicher, dass Sie die möglichen Auswirkungen aller Befehle kennen.
Diese Liste beschreibt häufige Symptome einer hohen CPU-Auslastung. Wenn Sie eines dieser Symptome bemerken, beheben Sie das Problem mit den in diesem Dokument angegebenen Schritten.
Hohe Prozentsätze im show processes cpu
Befehlsausgabe.
Wenn Sie die Ausgabe eines Befehls show processes cpu von Ihrem Cisco Gerät erhalten haben, können Sie mit Cisco CLI Analyzer potenzielle Probleme und Korrekturen anzeigen.
Hinweis: Um Cisco CLI Analyzer verwenden zu können, müssen Sie als Cisco Benutzer registriert, angemeldet und JavaScript aktiviert sein.
Langsame Leistung
Dienste auf dem Router reagieren nicht, z. B.:
Langsame Reaktion in Telnet oder Telnet kann nicht zum Router übertragen werden
Langsame Reaktion auf der Konsole
Langsame oder keine Antwort auf Ping
Router sendet keine Routing-Updates an andere Router
Hohe Pufferausfälle
Sobald Sie eines der Symptome von den Symptomen der hohen CPU-Auslastung bemerken:
Überprüfen Sie auf ein mögliches Sicherheitsproblem. Eine hohe CPU-Auslastung wird häufig durch ein Sicherheitsproblem verursacht, z. B. durch einen Wurm oder einen Virus, der in Ihrem Netzwerk ausgeführt wird. Dies ist insbesondere dann der Fall, wenn in letzter Zeit keine Änderungen am Netzwerk vorgenommen wurden. In der Regel kann eine Konfigurationsänderung die Auswirkungen dieses Problems mindern, wenn Sie Ihren Zugriffslisten zusätzliche Leitungen hinzufügen. Cisco Product Security Advisories and Notices enthalten Informationen zur Erkennung der wahrscheinlichsten Ursachen und der häufigsten Problemumgehung.
Weitere Informationen finden Sie unter:
Stellen Sie sicher, dass alle debug
Befehle im Router mithilfe der undebug all
theoretischen no debug all
Befehle deaktiviert werden.
Können Sie show
Befehle auf dem Router ausgeben? Falls ja, fangen Sie sofort mit dem Sammeln weiterer Informationen an, und verwenden Sie diese show
Befehle.
Ist der Router unzugänglich? Können Sie dieses Problem reproduzieren? Falls ja, fahren Sie den Router aus und konfigurieren Sie den Befehl, bevor Sie das Problem reproduzieren scheduler interval 500
. Auf diese Weise wird die Ausführung von Prozessen mit niedriger Priorität alle 500 Millisekunden geplant. So haben Sie Zeit, einige Befehle auszuführen, selbst wenn die CPU-Auslastung bei 100 Prozent liegt. Verwenden Sie auf Cisco Routern der Serien 7200 und 7500 den scheduler allocate 3000 1000
Befehl
Zeigt der Router Symptome einer hohen CPU-Auslastung in kurzen und unvorhersehbaren Intervallen? Wenn ja, sammle regelmäßig die Ausgabe des show processes cpu
Befehls, der anzeigt, ob die hohe CPU-Auslastung durch Interrupts oder einen bestimmten Prozess verursacht wird. Verwenden Sie dieses UNIX-Skript, und ändern Sie das Skript entsprechend der ersten Ergebnisse, um die für die weitere Untersuchung des Problems erforderlichen Daten zu erfassen.
Verwenden Sie den Befehl show processes cpu, um zu überprüfen, ob die CPU-Auslastung aufgrund von Unterbrechungen oder Prozessen hoch ist.
Weitere Informationen finden Sie unter Troubleshooting High CPU Utilization Caused by Interrupts (Fehlerbehebung bei hoher CPU-Auslastung durch Interrupts). Wenn der CPU-Pegel aufgrund von Unterbrechungen steigt, die wahrscheinlich auf CEF-Switching-Pakete zurückzuführen sind, hat der CPU-Pegel keinen Einfluss auf die Router-Leistung.
Wenn NetFlow für Version 7 konfiguriert ist, wird der Datenfluss vom Routing-Prozessor durchgeführt, was zu einer hohen CPU-Auslastung führen kann.
Um die hohe CPU-Auslastung aufgrund von NetFlow Version 7 zu beheben, konfigurieren Sie MLS-Sender Version 5, da der NetFlow-Export vom SP durchgeführt wird. Dies ist der Standard für Version 5 oder Version 9.
Überprüfen Sie, welcher Prozess die CPU belastet. Ungewöhnliche Aktivitäten im Zusammenhang mit einem Prozess führen zu einer Fehlermeldung im Protokoll. Daher muss die show logging exec
Ausgabe des Befehls zuerst auf Fehler überprüft werden, die mit dem Prozess zusammenhängen, der viele CPU-Zyklen beansprucht.
Sie können Debugbefehle verwenden, um eine hohe CPU-Auslastung in diesen Prozessen zu beheben. Debug-Befehle müssen mit äußerster Vorsicht ausgeführt werden, da sie die CPU-Auslastung noch weiter erhöhen können. Diese Voraussetzungen müssen erfüllt sein, damit Debugbefehle sicher verwendet werden können:
Alle Protokollierungsziele mit Ausnahme der Pufferprotokollierung müssen entweder deaktiviert oder ihr Schweregrad für die Protokollierung muss unter Verwendung des entsprechenden logging destination [ severity-level ] configuration
Befehls von 7 (Debugging) auf 6 (informativ) oder weniger gesenkt werden. Um zu sehen, welche Protokollierungsziele und die entsprechenden Ebenen aktiviert sind, lesen Sie die Kopfzeilen des show logging exec
Befehls.
Die Größe des Protokollierungspuffers muss erhöht werden, um ausreichende Informationen zu erfassen. Weitere Informationen finden Sie in der Beschreibung des logging buffer global configuration
Befehls.
Um Debugs besser lesen und verstehen zu können, müssen die Datums- und Millisekundenzeitstempel aktiviert sein. Weitere Informationen finden Sie in der Beschreibung des service timestamps global configuration
Befehls.
Eine Beispiel-Debugsitzung für IP-Pakete finden Sie unter Fehlerbehebung bei hoher CPU-Auslastung aufgrund des Eingabeprozesses.
Informationen zur Fehlerbehebung bei hoher CPU-Auslastung in bestimmten Prozessen finden Sie unter:
ARP Input (ARP-Eingang): ARP Input (ARP-Eingang) im Dokument Troubleshooting High CPU Utilization due to Processes (Fehlerbehebung bei hoher CPU-Auslastung aufgrund von Prozessen).
BGP Router - Hohe CPU aufgrund des BGP Router Process-Abschnitts des Dokuments Troubleshooting High CPU due by the BGP Scanner or BGP Router Process.
BGP Scanner: Hohe CPU aufgrund des BGP Scanner-Abschnitts des Dokuments Troubleshooting High CPU (Fehlerbehebung bei hoher CPU), verursacht durch den BGP Scanner- oder BGP Router-Prozess.
EXEC: Hohe CPU-Auslastung im EXEC- und virtuellen EXEC-Prozess.
HyBridge Input (HyBridge-Eingang): Fehlerbehebung bei hoher CPU-Auslastung durch den HyBridge-Eingabeprozess bei Routern mit ATM-Schnittstellen
IP Input (IP-Eingabe): Fehlerbehebung bei hoher CPU-Auslastung aufgrund des IP-Eingabeprozesses.
IP Simple Network Management Protocol (SNMP) - IP Simple Network Management Protocol (SNMP) verursacht eine hohe CPU-Auslastung.
LC ADJ Updater (LC-ADJ-Updater): Was verursacht eine hohe CPU-Auslastung beim LC Adjacency Updater-Prozess auf einem Cisco Internet Router der Serie 12000?
TCP Timer - TCP Timer Abschnitt im Dokument Fehlerbehebung bei hoher CPU-Auslastung aufgrund von Prozessen.
TTY Background (TTY-Hintergrund): Abschnitt TTY Background (TTY-Hintergrund) des Dokuments Troubleshooting High CPU Utilization due to Processes (Fehlerbehebung bei hoher CPU-Auslastung durch Prozesse).
Virtual EXEC (Virtueller EXEC) - Siehe den Link für EXEC. Hohe CPU-Auslastung bei Prozessen von Führungskräften und virtuellen Führungskräften
Vtemplate Background: Virtual Template Background (Hintergrund virtueller Vorlagen) im Dokument Troubleshooting High CPU Utilization due to the Processes (Fehlerbehebung bei hoher CPU-Auslastung aufgrund von Prozessen).
SSH-Prozess - Kann hoch angesetzt werden, wenn eine Fehlersuche erfasstshow tech
oder ein Debugging aktiviert ist.
Andere Prozesse - Abschnitt "Andere Prozesse" des Dokuments "Fehlerbehebung bei hoher CPU-Auslastung aufgrund der Prozesse".
Bei PCI- und Fast-Memory-Pools ist ein niedriger freier Arbeitsspeicher normal. Der PCI-Speicher wird für den Speicherzugriff auf den GT64260-Controller auf dem PRP-Mainboard für die angeschlossenen PCI-Busse verwendet. Dieser Speicher wird für die interne Kommunikation zwischen dem Systemcontroller und anderen Teilen verwendet, sodass er ständig hoch zu sein scheint.
Wenn mehr Speicher benötigt wird, geht dieser auf den Prozessorpool zurück. Der schnelle Speicher ist eine kleine Speichermenge, die für die Verwendung durch die IDB-Datenstrukturen (Interface Descriptor Block) der Hardware reserviert wurde. Dieser Speicher ist auch während des gesamten Bootvorgangs vollständig reserviert, sodass er immer so hoch angezeigt wird, da der Speicher vollständig genutzt wird. Aus diesem Grund ist es normal, mit dem Fast-Memory-Pool einen geringen freien Speicher zu sehen.
Die CPU-Hog-Meldung sieht wie folgt aus:
SNMP-4-HIGHCPU: Process exceeds 200ms threshold (200ms Cisco IOS quantum) for GET of rmon.19.16.0--result rmon.19.16.0
In 12.4(13) wurde Cisco IOS eine neue Syslog-Meldung (HIGHCPU) hinzugefügt. Hält ein Prozess die CPU länger als 200 ms an, meldet er eine HIGHCPU-Meldung. Die HIGHCPU-Nachricht hat keine Auswirkung auf den Router. Sie erfahren nur, welcher Prozess die hohe CPU verursacht hat. Die HIGHCPU-Nachricht ähnelt der CPUHOG-Nachricht, aber die HIGHCPU-Nachricht hat einen viel niedrigeren Toleranzschwellenwert, bei 1/10 der Zeit im Vergleich zu einer CPUHOG-Nachricht (in Millisekunden). Bei Versionen vor 12.4(13) auf dem 2600 wurden die Prozesse über einen längeren Zeitraum ausgeführt, es wurden jedoch keine Meldungen generiert, da die Cisco IOS-Versionen diese Erweiterung nicht enthielten.
Die SNMP PDU-Verarbeitung (MIB-Objektabfragen) soll in einem einzigen CPU-Zeitquantum durchgeführt werden, um sicherzustellen, dass jedes Objekt in der PDU gleichzeitig abgerufen wird. Diese Anforderung wird durch den SNMP-Protokollstandard festgelegt. Manche Objekte sind Aggregate vieler Daten im System. Obwohl es sich also um einzelne Objekte handelt, ist aufgrund der Art und Weise, wie sie instrumentiert werden, eine Menge Verarbeitung erforderlich. Wenn der Kunde die CPU nicht gemäß den MIB-Instrumentierungsregeln zurückgibt, besteht die Möglichkeit, dass diese Fehlermeldung angezeigt wird. Außerdem, wenn Sie mehrere verschiedene Objekte in der gleichen Objektgruppe / Tabelle abfragen und die Fehlermeldung erhalten, ist nicht ungewöhnlich, weil aus diesem Grund.
Diese Nachricht wird verwendet, um Objekte zu identifizieren, die mehr CPU-Zeit als erwartet verbrauchen (aber immer noch nicht CPUHOG). Einige NMS-/Instrumentierungstools verhalten sich beim Polling nicht gut. Dieses Problem ist in Cisco Bug-ID CSCsl18139 dokumentiert.
Hinweis: Nur registrierte Cisco Benutzer haben Zugriff auf interne Tools und Fehlerinformationen.
Wenn auf dem Gerät kein Hardware-Verschlüsselungsmodul installiert ist, muss der gesamte verschlüsselte Datenverkehr über das Gerät von der Software verschlüsselt werden. Dies ist sehr CPU-intensiv. Es wird nicht empfohlen, die Softwareverschlüsselung für Verschlüsselungsbereitstellungen mit einer angemessenen Durchsatzanforderung zu verwenden. Eine Möglichkeit zur Behebung dieses Problems besteht darin, das Volumen des verschlüsselten Datenverkehrs zu reduzieren (Datenverkehr umzuleiten oder die verschlüsselten Datenflüsse zu begrenzen). Der beste Weg, dieses Problem zu beheben, besteht jedoch darin, ein Hardware-Verschlüsselungsmodul für dieses Gerät zu installieren, sodass die Verschlüsselung nicht über die Software erfolgen muss.
Hinweis: Wenn Sie Crypto Maps auf Tunnel-/physischen Schnittstellen aktivieren, verursacht dies den Speicherverbrauch und kann zu einer Erhöhung der CPU führen.
Reassemblierungen können die CPU sehr hoch treiben, wenn die CPU eine große Anzahl von Paketen reassemblieren muss.
Um die hohe CPU-Auslastung aufgrund der Fragmentierung zu beheben, geben Sie den Befehl tcp mss-adjust 1400 an der Schnittstelle ein, mit dem der maximale Segmentgrößenwert (MSS) von TCP-Synchronisierungs-/Start-Paketen (SYN) festgelegt wird, die über einen Router übertragen werden.
Diese Befehle liefern weitere Informationen über das Problem:
show processes cpu
show interfaces
show interfaces switching
show interfaces stat
show ip nat translations
show align
show version
show log
Weitere Informationen zu show-Befehlen finden Sie in der Befehlsreferenz zu den Cisco IOS-Konfigurationsgrundlagen.
Wenn auf den Router nicht zugegriffen werden kann, fahren Sie ihn zuerst aus und wieder ein. Sammeln Sie dann in regelmäßigen Abständen die Ausgabe der Befehle in diesem Abschnitt, mit Ausnahme des show log
Befehls, dessen Meldungen auf einem Syslog-Server protokolliert werden müssen. Das Intervall zum Sammeln der Ausgabe muss fünf Minuten betragen. Mit diesem UNIX-Shell-Skript können Sie die Daten manuell oder automatisch erfassen. Sie können Daten auch mit HTTP oder SNMP erfassen.
show processes cpu
BefehlDies ist ein Beispiel für den Header des show processes cpu
Befehls.
CPU utilization for five seconds: X%/Y%; one minute: Z%; five minutes: W% PID Runtime(ms) Invoked uSecs 5Sec 1Min 5Min TTY Process
Diese Tabelle beschreibt die Felder in der Überschrift:
Feld | Beschreibung |
---|---|
X |
Durchschnittliche Gesamtnutzung in den letzten fünf Sekunden (Interrupts + Prozesse) |
Y |
Durchschnittliche Auslastung aufgrund von Interrupts in den letzten fünf Sekunden1 |
Z |
Durchschnittliche Gesamtnutzung in letzter Minute2 |
W |
Durchschnittliche Gesamtnutzung in den letzten fünf Minuten2 |
PID |
Prozess-ID |
Laufzeit |
CPU-Zeit, die der Prozess verwendet hat (in Millisekunden) |
Aufgerufen |
Anzahl der Aufrufe eines Prozesses |
Sekunden |
CPU-Zeit in Mikrosekunden für jeden Aufruf |
5 s |
CPU-Auslastung nach Aufgabe in den letzten fünf Sekunden |
1 Minute |
CPU-Auslastung nach Aufgabe in letzter Minute2 |
5 Minuten |
CPU-Auslastung nach Aufgabe in den letzten fünf Minuten2 |
TTY |
Terminal, das den Prozess steuert |
Prozess |
Name des Prozesses |
1 CPU-Auslastung auf Prozessebene = X - Y
2Die Werte stellen kein arithmetisches Mittel dar, sondern einen exponentiell verfallenen Durchschnitt. Jüngere Werte haben somit einen größeren Einfluss auf den berechneten Mittelwert.
Weitere Informationen finden Sie im Referenzhandbuch zu show commands.
Hinweis: Die Gesamt-CPU-Auslastung darf nicht als Maß für die Fähigkeit des Routers verwendet werden, mehr Pakete zu übertragen. Auf Cisco 7500-Routern melden Versatile Interface Processors (VIPs) und Route/Switch Processors (RSPs) keine lineare CPU-Auslastung. Fast die Hälfte der Leistungsaufnahme der Switching-Pakete pro Sekunde fällt nach einer CPU-Auslastung von 90 bis 95 Prozent an.
show interfaces
BefehlDieser Befehl wird verwendet, um aktive Schnittstellen zu bestimmen.
show interfaces switching
BefehlDieser Befehl wird verwendet, um aktive Switching-Pfade auf Schnittstellen zu bestimmen.
Dies ist eine Beispielausgabe des show interfaces switching
Befehls für eine Schnittstelle:
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
Die Ausgabe listet die Switching-Pfade für alle auf der Schnittstelle konfigurierten Protokolle auf, sodass Sie leicht sehen können, welche Art und wie viel Datenverkehr durch den Router fließt. In dieser Tabelle werden die Ausgabefelder erläutert.
Feld | Definition |
---|---|
Prozess |
Verarbeitete Pakete. Dabei kann es sich um Pakete handeln, die für den Router bestimmt sind, oder um Pakete, für die kein Eintrag im Fast Switching-Cache vorhanden war. |
Cache-Fehler |
Pakete, für die kein Eintrag im Fast Switching Cache vorhanden war. Das erste Paket für dieses Ziel (oder Fluss - hängt vom konfigurierten Fast Switching-Typ ab) wird verarbeitet. Alle nachfolgenden Pakete werden mit Fast Switching verarbeitet, es sei denn, Fast Switching ist auf der Ausgangsschnittstelle explizit deaktiviert. |
Schnell |
Schnell geschaltete Pakete Fast Switching ist standardmäßig aktiviert. |
Auton/SSE |
Autonome Switched, Silicon Switched oder Distributed Switched Packets. Nur verfügbar auf Cisco Routern der Serie 7000 mit einem Switch Processor oder Silicon Switch Processor (für autonomes Switching bzw. Silizium-Switching) oder auf Cisco Routern der Serie 7500 mit einem VIP (für verteiltes Switching). |
show interfaces stat
BefehlDieser Befehl ist eine zusammengefasste Version des show interfaces switching
Befehls. Dies ist eine Beispielausgabe für eine Schnittstelle:
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
Die Ausgabe des show interfaces stat
ist für verschiedene Plattformen unterschiedlich und hängt von den verfügbaren und konfigurierten Switching-Pfaden ab.
show ip nat translations
BefehlDer show ip nat translations
Befehl zeigt die auf dem Router aktiven NAT-Übersetzungen (Network Address Translation) an. Jede aktive Übersetzung erzeugt CPU-Interrupts und wirkt sich auf die CPU-Auslastung des Routers aus. Eine sehr große Anzahl von Übersetzungen kann die Leistung des Routers beeinträchtigen.
Dies ist eine Beispielausgabe des show ip nat translations
Befehls:
router#show ip nat translations Pro Inside global Inside local Outside local Outside global --- 172.16.131.1 10.10.10.1 --- ---
show align
BefehlDieser Befehl steht nur auf RISC-Prozessorplattformen (Reduced Instruction Set Computing) zur Verfügung. Auf diesen Plattformen kann die CPU Lese- oder Schreibvorgänge korrigieren, die nicht ausgerichtet sind. Dies ist die Beispielausgabe:
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
BefehlUm Probleme bei der CPU-Auslastung zu verfolgen, müssen bei der Befehlsausgabe die Version, die Plattform, der CPU-Typ und die Betriebszeit des Routers der Cisco IOS Software berücksichtigt werden. Die Befehlsreferenz enthält eine detaillierte Erläuterung dieses Befehls.
show log
BefehlDieser Befehl zeigt den Inhalt gepufferter Protokollmeldungen an.
Der Embedded Event Manager kann verwendet werden, um Daten automatisch zu erfassen, wenn eine hohe CPU-Auslastung vorliegt. EEM wird ausgelöst, indem entweder die SNMP-OID für die Prozessnutzung überwacht wird oder indem die Syslog-Meldungen für die Ausgabe des CPU-Schwellwertbefehls überwacht werden. Mithilfe des EEM-Skripts können verschiedene show-Befehle ausgeführt und die Ausgabe im Dateisystem gespeichert werden.
Dieses Skript wird ausgeführt, wenn die Prozessauslastung um ca. 85 % steigt.
Weitere Informationen finden Sie unter Erfassen der CPU-Auslastung auf Cisco IOS-Geräten mit 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
Eine Kombination aus EEM und dem Befehl CPU-Grenzwertbenachrichtigungen kann das EEM-Skript auslösen. In diesem Beispiel wird eine CPURISHINGTHRESHOLD-Syslog-Meldung generiert, wenn die Auslastung für einen Zeitraum von 5 Sekunden um mehr als 85 % steigt. Das EEM-Skript kann die Syslog-Meldung auslösen und eine Liste der Befehle ausführen, die in einer Datei im Dateisystem gespeichert werden.
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 wird zum Starten/Stoppen der CPU-Profilerstellung sowie zum Protokollieren von Daten verschiedener Anzeigebefehle verwendet. Weitere Informationen finden Sie unter Troubleshooting High CPU Utilization Due to Interrupts (Fehlerbehebung bei hoher CPU-Auslastung aufgrund von Interrupts).
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"
In diesem Anhang wird ein einfaches Skript beschrieben, das in regelmäßigen Abständen Daten vom Router erfasst. Der Kern des Skripts ist diese Zeile:
(echo "show version") | telnet 192.168.1.1
Der Befehl in Klammern wird in der Sub-Shell ausgeführt, und die Ausgabe wird an eine Telnet-Sitzung gesendet. Dies ist ein Beispielskript zum Erfassen der Ausgabe der Befehle show version
und 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
Hinweis: In diesem Skript werden alle Daten, einschließlich des Kennworts, in einem unverschlüsselten Format gesendet.
Im ersten Abschnitt müssen Sie die IP-Adresse und das Zielverzeichnis für Protokolldateien angeben. Der zweite Abschnitt enthält die tatsächlichen Befehle, die an den Router gesendet werden. Die erste ist der Benutzername, dann das Passwort, und so weiter. nur die ersten Zeilen der Ausgabe bestimmter Befehle zu erfassen ist enthalten. Die Terminallänge wird auf eine kurze Länge gesetzt (in diesem Fall auf 15), und das "q"-Zeichen wird nur per Eingabeaufforderung gesendet.
Wenn Daten periodisch gesammelt werden, zeigt die Ausgabe von show version
an, ob das Problem periodisch auftritt, z.B. immer zu einer bestimmten Tageszeit oder an einem bestimmten Wochentag. Wenn Sie die Ausgabe weiterer Befehle erfassen müssen, können diese dem Skript auf die gleiche Weise hinzugefügt werden, wie im Beispiel gezeigt. Wenn Sie die an die Datei gesendete Ausgabe kürzen müssen, erhöhen Sie zuerst die Ruhezeit (der Befehl sleep in Klammern).
Führen Sie dieses Skript alle fünf Minuten aus, wenn das Problem der hohen CPU-Auslastung häufig auftritt und nicht lange andauert. Andernfalls kann es alle 15 bis 30 Minuten ausgeführt werden. Speichern Sie das Skript aus Gründen der Benutzerfreundlichkeit in einer Datei wie /usr/bin/router-script . Um es dann alle fünf Minuten auszuführen, fügen Sie die nächste Zeile zur Datei /etc/crontab hinzu:
*/5 * * * * /usr/bin/router-script
Starten Sie den Cron-Server neu. Wenn Sie nicht die Berechtigung haben, die Datei /etc/crontab zu ändern, führen Sie das Skript in einem separaten Prozess aus. Beispiel:
while [ 1 ]; do ./router-script ; sleep 300; done &
Überarbeitung | Veröffentlichungsdatum | Kommentare |
---|---|---|
2.0 |
30-Nov-2022 |
Formatierung aktualisiert. Neu zertifiziert. |
1.0 |
14-Dec-2001 |
Erstveröffentlichung |