2016-06-16 9 views
0

Ich habe ein paar Programme, die ähnliche Dinge tun, aber sie sind in verschiedenen Sprachen geschrieben. Ich möchte irgendwie überwachen, wie die Programme, die ich schreibe, benutzt werden - wie oft läuft der Code? Wie oft wird eine bestimmte Methode/Funktion verwendet? Wie lange hat es gedauert, um zu kompilieren?Sammeln von Statistiken, wie ein Programm verwendet wird

Mein Ziel ist es, eine grafische Darstellung zu bekommen, so dass ich die Programme einfach in hübschen Graphen vergleichen kann - aus diesem Grund muss meine Lösung natürlich sprachunabhängig sein.

Was wäre der beste Weg, um diese Aufgabe anzugehen? Jemand hat mich auf Ganglia aufmerksam gemacht, aber ich bin mir nicht sicher, ob ich genau danach suche - ich möchte keine Cluster überwachen, sondern die Art und Weise, wie verschiedene Code-Codes behandelt werden, überwachen.

Antwort

0

Ich empfehle, Blick auf sentry. Es ist kostenlos und hat Kunden für viele Sprachen.

Grund Nutzung:

import time 
from raven import Client 

client = Client('https://<key>:<secret>@app.getsentry.com/<project>') 


start_time = time.time() 
some_func() 
client.captureMessage("Execution time of some_func %s seconds" % (time.time() - start_time)) 
0

Wenn Sie möchten, dass eine Sache schreiben, dass egal, die Sprache arbeiten, anstatt etwas hinzuzufügen für jede Sprache dann Option 1, für mich wäre ein schreiben Wrapper für alle Programme, und ersetzen Sie die Originale. Sie erwähnen nicht das Betriebssystem, sondern auf Linux würde ich Folgendes tun:

$ cat wrapper.sh 
#!/bin/bash 
echo "This is my logging statement" 
exec /path/to/real/scripts/$(basename $0) $* 

Dann werden alle Ihre Skripte zu /path/to/real/scripts bewegen und den ursprünglichen Positionen mit einem symbolischen Link auf den Wrapper-Skript ersetzen:

bar -> wrapper.sh 
foo -> wrapper.sh 

Wenn Sie foo vom ursprünglichen Speicherort aufrufen, wird der Wrapper ausgeführt, der weiß, dass er mit dem Namen foo aufgerufen wurde. Er kann also das richtige Skript finden, das nach der Protokollierung ausgeführt wird.

Zum Sammeln der Daten ist wahrscheinlich so etwas wie Graphit (http://graphite.readthedocs.io/en/latest/overview.html), InfluxDB (https://influxdata.com/) oder ähnliches am einfachsten einzurichten.

Längerfristig ‚Wir von diesem Gedanken im Voraus‘ Option ist die Codierungsstandards sagen ‚Log-Programm verwenden zu diesem Ort‘ zu haben, wie es die Verpackung vermeidet und macht die Dinge einfacher zu verwalten.

Verwandte Themen