3

私は3つの大陸をカバーするWAN全体に500台以上のマシンを分散させています。定期的に、各ブレードのローカルハードディスクにあるテキストファイルを収集する必要があります。各サーバーはWindowsServer2003を実行しており、ファイルは\ server\Logsとしてリモートアクセスできる共有にマウントされます。各マシンには、それぞれ数Mbのファイルが多数保持されており、圧縮することでサイズを縮小できます。

これまで、Powershellスクリプトと単純なJavaアプリケーションを使用してコピーを実行してみました。どちらのアプローチでも、500Gb程度のファイルを収集するには数日かかります。より速く、より効率的なより良い解決策はありますか?

4

7 に答える 7

3

メトリックデータをデータベースに解析する場合は、それらの各マシンに解析ユーティリティをインストールして、解析して中央データベースにロードする方が高速です。同時に。

圧縮して中央の場所にコピーするだけの場合でも、これらのコマンドを.cmdファイルに設定し、各サーバーで自動的に実行されるようにスケジュールします。そうすれば、1つのローカルシステムにすべての作業を強制するのではなく、これらすべてのサーバーに作業を分散させることができます。:-)

于 2009-01-26T22:40:45.693 に答える
2

頭に浮かぶ最初の改善点は、ログファイル全体を出荷するのではなく、最後の出荷後のレコードのみを出荷することです。もちろん、これはファイルが時間の経過とともに蓄積され、毎回完全に新しいわけではないことを前提としています。

これはさまざまな方法で実装できます。信頼できる日付/タイムスタンプがファイルにある場合は、古いレコードを検討対象から除外し、残りをダンプするフィルターを介してファイルを実行するだけで十分です。そのような識別器が利用できない場合、私は最後に送信されたバイト/行を追跡し、出荷前にその場所に進みます。

いずれにせよ、目標は新しいコンテンツのみを出荷することです。私たち自身のシステムでは、ログは書き込まれるときにログを複製するサービスを介して出荷されます。そのためには、ログファイルを処理する小さなサービスを書き込む必要がありましたが、ログのキャプチャの待ち時間が短縮され、帯域幅の使用量が大幅に削減されました。

于 2009-01-26T22:40:15.977 に答える
1

各サーバーはおそらく次のようにする必要があります。

  • 独自のログ ファイルを管理する (アップロード前に新しいログを開始し、アップロード後に送信済みログを削除する)
  • ファイルに名前を付ける (またはメタデータを追加する) ことで、サーバーはどのクライアントがそれらを送信したか、およびそれらがカバーする期間を認識できます
  • 出荷前にログ ファイルを圧縮します (圧縮 + FTP + 解凍は、多くの場合、FTP のみよりも高速です)。
  • ログ ファイルを中央の場所にプッシュします (FTP は SMB より高速です。Windows の FTP コマンドは「-s:scriptfile」で自動化できます)。
  • 何らかの理由でログをプッシュできない場合に通知する
  • 上記のすべてを時差のあるスケジュールで実行します(中央サーバーの過負荷を避けるため)
    • おそらく、サーバーの最後の IP オクテットに定数を掛けて、午前 0 時から分単位でオフセットするのではないでしょうか?

中央サーバーはおそらく次のことを行う必要があります。

  • 送信されたログ ファイルを受け入れ、処理のためにキューに入れる
  • 同じログ ファイルを 2 回受信しても適切に処理します (無視するか、再処理する必要がありますか?)
  • 必要に応じてログファイルを解凍して処理します
  • 保持ポリシーに従って、処理されたログ ファイルを削除/アーカイブする
  • サーバーが最近ログをプッシュしていない場合に通知する
于 2009-01-27T05:41:34.267 に答える
0

NetBIOS のコピーは、たとえば FTP ほど高速ではありません。問題は、各サーバーに FTP サーバーが必要ないことです。各サーバーでローカルにログ ファイルを処理できない場合、別の解決策として、すべてのサーバーがログ ファイルを FTP 経由で中央の場所にアップロードし、そこから処理できるようにすることもできます。例えば:

中央の収集ポイントとして FTP サーバーをセットアップします。各サーバーでタスクをスケジュールして、ログ ファイルを圧縮し、アーカイブを中央の FTP サーバーに FTP 送信します。schtasks.exe のようなツールを使用して、タスクのスケジューリングをリモートで自動化するプログラムを作成できます。

KB 814596: Windows Server 2003 で schtasks.exe を使用してタスクをスケジュールする方法

FTP サーバーへのアップロードをずらしたい場合があります。

于 2009-01-27T04:38:57.110 に答える
0

ストレージ サーバーの帯域幅が飽和状態になるとは思えないため、異なる場所にある複数のクライアントから同時にプルすることができます。主な問題は、プロセス全体を遅らせるボトルネックは何か?

于 2009-01-26T22:54:42.357 に答える
0

ここには、小規模な同様の製品があります。私たちの解決策は、ログ ファイルを生成するマシンに、ログ ファイルをランダムにずらしたパターンで毎日 NAT にプッシュさせることです。これにより、サーバーを何日もビジー状態にしていた読み取り/書き込み時間の集中など、よりプルベースの方法の問題の多くが解決されました。

于 2009-01-26T22:41:34.867 に答える
0

次のことを行います。
各サーバーで実行するプログラムを作成します。このプログラムは次のことを行います。
サーバー上のログを監視
する 特定の定義されたスケジュールでログを圧縮する
分析サーバーに情報を渡す。

次のことを行うコア サーバー上にある別のプログラムを作成し
ます。
(これはマルチスレッド化できます。)
これは、エンド コンピューターから渡された情報を使用して、次に取得するログを決定します。
圧縮を解除して、データベースに継続的にアップロードします。

これにより、ダウンタイムを最小限に抑えて最新の情報を提供するソリューションが得られます。
欠点は、ネットワーク/コンピューターの使用が比較的安定していることですが、多くの場合、それは良いことです.

また、システムの管理が容易になり、問題や解決が必要な問題を検出できます。

于 2009-01-26T23:07:42.923 に答える