2016-06-16 9 views
0

私は似たようなことをするプログラムはいくつか持っていますが、それらは異なる言語で書かれています。私は何らかの形で私が書いているプログラムの使用方法を監視したいのです - コードが何回実行されたのですか?特定のメソッド/関数は何回使用されますか?コンパイルにはどれくらいの時間がかかりましたか?このために、私は明らかに、言語に依存しないように私の解決策を必要とする - これでプログラムの使用方法に関する統計情報の収集

私の目標は、私は簡単にきれいなグラフにプログラムを比較することができるようにグラフィカルな表現を取得することです。

このタスクにアプローチするにはどうすればよいでしょうか?誰かが私をGangliaに向けて暗示していましたが、私が探しているのは確かではありません。クラスタを監視したくないので、コードの処理方法を監視したいと思います。

答えて

0

私はsentryを見てお勧めします。無料で、多くの言語のクライアントがあります。

基本的な使用法:

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

あなたがどんなにに言語を動作する一つのことを書きたい場合は、代わりに、各言語用のオプション1を、何かを追加することで、私にとっては、書くことだろうすべてのプログラムのラッパー、およびオリジナルを置き換えます。あなたは、オペレーティングシステムに言及していないが、Linux上で私は、次の操作を行います。

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

その後/path/to/real/scriptsにすべてのスクリプトを移動し、ラッパースクリプトへのシンボリックリンクで元の場所に置き換えます。

bar -> wrapper.sh 
foo -> wrapper.sh 
あなたは元の場所から fooを呼び出すとき

だから、それが名前fooと呼ばれていた知っていて、それは、そのログを行うの後に実行する実際のスクリプトを見つけることができラッパーを実行します。

データを収集するには、Graphite(http://graphite.readthedocs.io/en/latest/overview.html)、InfluxDB(https://influxdata.com/)などのようなものがおそらく設定が簡単です。

長期、「私たちは、事前にこの考え」オプションは、ラッパーを回避し、管理するために物事が容易になりますようコーディング標準は、「この場所にログプログラムの使用」を言うことです。

関連する問題