1

私は Python を使用して、多くのメトリックを収集するシミュレーション エンジンに取り組んでいます。シミュレーションは高速で実行され、1 秒あたり約 100K イベントが生成されます (これらのイベントを 1 秒ごとに統合することで、いくつかの処理を行うことができます)。これらのメトリックを時系列として記録するメカニズムを探しています。

私の要件は次のとおりです。

  1. Graphite などの外部プロセスではなく、シミュレーションと同じプロセスでこのロギング メカニズムを使用したいと考えています。

  2. このメカニズムは、シミュレーションの速度を低下させることなく、1 秒あたり 100K のイベントを処理できる必要があります。

  3. 次のようにデータを保存したいと思います: すべてのメトリック関連データは、60 分間は 1 秒の粒度、1 日は 1 分の粒度、2 日間は 5 分の粒度、6 か月は 1 時間の粒度、3 か月は 1 日の粒度で保存する必要があります。期間の年。このメカニズムで、指定された範囲に従ってデータの統合を処理したいと考えています。

  4. 理想的には、1 回のシミュレーション実行のメトリック情報を保持する 1 つのファイルを維持したいと考えています。シミュレーションをもう一度実行するには、別のファイルを作成する必要があります。

  5. すぐに利用できる、十分にテストされたライブラリ/モジュールがあると便利です:)

ところで、私は RRDTool をざっと見てみましたが、私が理解していることから、Python ライブラリは RRDTool バイナリの薄いラッパーのようです。可能であれば、より緊密な統合を探しています。

ティア

4

1 に答える 1

3

RRDTool が提供する機能は、私の要件に適合しています。最初に、Python ライブラリhttps://pypi.python.org/pypi/python-rrdtool/を見つけ、統合の性質を誤解しました。RRDTool のバイナリを別のプロセスとして実行していると思いましたが、ドキュメントによると、これは同じプロセス空間で機能を呼び出す適切な Python アクセス可能なラッパーです。

Later on I found this (https://pypi.python.org/pypi/PyRRD) Python library that wraps RRDTool functionality in a more pythonic OOPS kind of fashion that I found comfortable working with. The documentation available on the link page was good so I faced no roadblocks in using it.

This link (http://www.vandenbogaerdt.nl/rrdtool/tutorial/rrdcreate.php) was helpful in figuring out how to configure the RRD database during creation.

于 2013-05-08T22:36:45.697 に答える