So benutze ich diese Worte. Andere können zusätzliche oder andere Verwendungen haben. Je nach Aufgabe werde ich die Begriffe unterschiedlich verwenden. Entwicklungsteams und Betriebsteams haben unterschiedliche Anforderungen und Verwendungszwecke.
Überwachung ist Überwachung. Normalerweise läuft es und ist vorzugsweise automatisiert. Open-Source-Tools wie Munin
, Nagios
und MRTG
fallen in diese Kategorie. Es gibt auch viele kommerzielle Tools. Ich würde auch sar
kontinuierlich in diese Kategorie aufnehmen, aber die Ergebnisse werden normalerweise nicht überwacht. Überwachungswerkzeuge können verwendet werden, um Warnungen auszulösen, wenn eine überwachte Ressource einen Auslösungspegel überschreitet oder unterschreitet. Viele Überwachungstools funktionieren in heterogenen Umgebungen gut.
Die Profilerstellung wird normalerweise in einem bestimmten Programm durchgeführt, um festzustellen, welcher Code die meisten Ressourcen verwendet. Dies ist häufig die CPU-Zeit, kann jedoch auch Speicher-, E / A- und Ausführungszeit (Wall-Zeit) umfassen. Es wird normalerweise verwendet, um Kandidatencode für die Optimierung zu identifizieren. Profiling-Tools sind in der Regel sprach- und / oder plattformabhängig.
Eine andere Art der Profilerstellung erfolgt mithilfe von Protokollen und / oder Überwachungsdaten. Dies ist eine Nutzungsprofilerstellung, die aus verschiedenen Gründen durchgeführt werden kann. Ich habe nicht viele Werkzeuge dafür gefunden.
Ich benutze die Verfolgung auf verschiedene Arten. Am häufigsten verfolge ich Netzwerkrouten. Abhängig von den Netzwerk- und Firewall-Einstellungen können verschiedene Tools mehr oder weniger erfolgreich eingesetzt werden. Die meisten davon haben Traceroute im Namen oder in der Beschreibung.
Die Programmverfolgung verfolgt die Ausführung eines Programms. Dies erfolgt in der Regel in einer Testsituation. Dies kann auf verschiedene Arten geschehen (in meiner Reihenfolge der Verwendung und Erfahrung):
- Rufen Sie die Ablaufverfolgung mit Tools
strace
auf, um zu sehen, welcher Code aufgerufen wird. Dies kann hilfreich sein, wenn Sie feststellen möchten, warum ein Programm ausfällt oder nicht wie erwartet reagiert.
- Trace-Level-Protokollierung, abhängig von den entsprechenden Protokollierungsanweisungen, die im Code enthalten sind. Die meisten Protokollierungssuiten unterstützen diesen Detaillierungsgrad. Die Protokollierung auf Ablaufverfolgungsebene weist in der Regel eine schlechte Codeabdeckung auf. Ich füge es im Allgemeinen nach Bedarf hinzu und lasse es für die zukünftige Verwendung im Code.
- Die Ablaufverfolgung der Codeabdeckung zeichnet auf, welche Teile des Codes in einer Testsuite ausgeführt wurden. Dies kann hilfreich sein, um fehlende Testfälle zu ermitteln. Eine 100% ige Abdeckung des Codes ist schwierig zu erreichen. Eine 100% ige Abdeckung der normalen Ströme sollte erreichbar sein.
- Schreibtischprüfung: Durchsuchen des Codes durch Lesen. Nicht sehr nützlich bei größeren Programmen, aber eine gute Möglichkeit, Randfälle für Komponententests zu identifizieren und / oder mögliche Probleme zu identifizieren, wenn die wahrscheinliche Quelle eingegrenzt wurde. Mit Som = e IDEs und Editoren ist es relativ einfach, einem Aufruf des Implementierungscodes zu folgen.
- Live-Debugging; Verfolgung der Codeausführung während der Ausführung mit einem Debugger. Es ist möglich, Ausführungsbefehle nach Befehlen zu verfolgen, aber wenn das Problem ein Zeitproblem ist, kann es unklar sein. Debugger, die Code mit der aktuellen Anweisung verknüpfen können, helfen viel, erfordern jedoch möglicherweise die Erstellung einer Debug-Version des Programms.