7

時系列データをログに記録するための rrdtool に代わるものがあるかどうか知りたいです。多数のデバイスを監視するために拡張できるものを探しています。

この件について私が読んだことによると、rrdtool は、大量のデータでヒットすると I/O バウンドになります。私はこれを非常に多くのデバイスを監視するように拡張することを想定しているので、I/O を詰まらせない代替手段があるかどうか知りたいです。SQL ベースが望ましいですが、必ずしもそうとは限りません。

ありがとう

4

4 に答える 4

5

高可用性やスケーラビリティを目標とする時系列データベースがいくつかあります。

多分見てください

  • rrdcached、 rrd 上のキャッシング レイヤー
  • whisper 、グラファイトの背後にあるデータベース エンジン
  • opentsdbは、HBase の上に書かれた分散型のスケーラブルな時系列データベース (TSDB) です。
  • その焦点は監視に重点を置いていますが、偵察します
于 2011-08-25T13:39:50.890 に答える
4

I/O パフォーマンスが主な懸念事項である場合は、RRDToolsの現在のバージョン (1.4) で利用可能なrrdcachedなどを調べる必要があります。

I/O オーバーヘッドは、書き込まれるデータの関数ではありません。データ ソースごとにそれぞれの値が 8 バイトであるためです。I/O 帯域幅は、書き出す前にセクター全体 (通常は 4k) を読み込む必要があるという事実に由来します。突然 8 バイトを書き込むために、8k バイトを読み書きしました。

rrdcached はこれらすべての書き込みを結合するため、RRD が更新されると、無駄なデータ (セクター内のスペア バイト) に対する有用なデータ (実際の DS 値) の比率が減少します。

すべての RRDTools は、(環境変数を介して) 実行中を検出すると、rrdcached で自動的に動作します。これにより、データからグラフを生成する場合など、必要に応じてフラッシュをトリガーできます。

SQL ベースのソリューションに切り替えると、SQL をサポートするために必要な余分な I/O を考慮するのに役立つ場合があります。そのようなランダムアクセスパターンでRRDデータを使用する傾向がないことを考えると、データベースは問題の大きなハンマーです。RRDTool を使い続けることで、ファイルを理解して操作できるツールのすべてのエコシステムに引き続きアクセスできます。これは、特に既に使い慣れている場合に役立ちます。

于 2010-02-04T11:34:12.137 に答える
2

私の友人は、ラウンド ロビン データを格納するために SQL バックエンドで少し前に作業を行いました: http://rrs.decibel.org

ただし、「監視するデバイス」について尋ねているので、より完全なソリューションを探しているのではないかと思います。

于 2009-03-03T06:02:39.767 に答える
1

1 秒あたりの I/O 操作が主なボトルネックであり、Linux を使用している場合、メモリを消費するだけの簡単なハックがあります。tmpfs マウントを使用して、RRD 書き込みをステージングします。

すべての i/o 操作はメモリ内で実行されるため、ディスク i/o を実行する際に見られるボトルネックは発生しません (これは、ソリッド ステート ディスクを使用するよりも高速です)。その後、cron ジョブと rsync を使用して、変更された RRD のみを数分ごとにディスクにコピーできます。


ディレクトリを作成する

bash-4.2# mkdir /mnt/rrd-reads
bash-4.2# mkdir /mnt/rrd-writes

適切なオプションを使用して、最大 500MB の RAM ファイルシステムを作成します

bash-4.2# mount -t tmpfs -o size=500m,mode=0750,uid=collectd,gid=collectd none /mnt/rrd-writes
bash-4.2# echo "none /mnt/rrd-writes tmpfs size=500m,mode=0750,uid=collectd,gid=collectd 1 2" >> /etc/fstab

古い RRD ファイルを新しいマウント ポイントにコピーします。

bash-4.2# cp -a /var/lib/collectd/rrd/* /mnt/rrd-writes

新しいマウント ポイントに書き込むように、rrd 書き込みアプリケーションを構成します。

bash-4.2# sed -i -e 's/DataDir "\/var\/lib\/collectd\/rrd"/DataDir "\/mnt\/rrd-writes"/' /etc/collectd/collectd.conf

変更された RRD のみを 2 分ごとにディスクに同期するように cron ジョブを設定します。

bash-4.2# echo "*/2 * * * * collectd rsync -a /mnt/rrd-writes/* /mnt/rrd-reads/ ; sync" > /etc/cron.d/rrd-sync

RRD書き込みアプリケーションを開始するに、保存した RRD ファイルをマウント ポイントにコピーすることを忘れないでください。そのサービスの init スクリプトを編集して、開始前にファイルが存在することを確認する必要がある場合があります。ファイルが配置されていない状態で開始すると、新しい裸のファイルが作成され、読み取りディレクトリが空の RRD で上書きされると、非常に混乱します。

ある時点で tmpfs マウントのサイズを変更する必要がある場合は、その場で行うことができます:

bash-4.2# mount -t tmpfs -o remount,size=850m /mnt/rrd-writes
于 2013-07-12T18:36:18.417 に答える