0

Azure で実行されている 5 つのデプロイに約 10 個のインスタンスがあり、Azure Diagnostics (WADLogsTable) にログが記録されています。これらのログを数分に 1 回取得して、サードパーティ ツールでローカルに分析する必要があります。テーブルからログを読み取り、最後のパーティションと行キーを保存し、次回クエリ PartitionKey >= SavedPartitionKey を実行する単純なバージョンが既にあります。問題は、すべてのログが取得されないことです。WAD はログ バッファリングを使用し、5 分に 1 回 (各インスタンスごとに) ログをまとめてテーブルに保存します。ログに記録されたイベントの RowKey は、デプロイ ID (guid) で始まります。

  1. 00:05:30 の時点で、DeploymentId=999 の InstanceA は、過去 5 分間のログを出力します。 00 999 msg4 00:05:00 999 msg5
  2. 時刻 00:06:00 転送スクリプトが開始され、すべてのログが取得され、LastPK=00:05:00 が保存されます
  3. 時間 00:06:30 で、DeploymentId=111 の InstanceB は、過去 5 分間のログを出力します。
  4. 時刻 00:07:00 に転送スクリプトが開始され、PK>=LastPK=00:05:00 でログを取得し、実際には msg8 と msg9 のみを取得します (msg6 と msg7 は失われます)。

私が考える解決策は、TransferScript が過去 6 分間 (wad 同期に 5 分 + バッファーに 1 分) のすべてのログを取得するたびにですが、これにより、転送されるデータの量が大幅に増加する可能性があります (5 回など) + 何らかの方法でフィルタリングする必要があります既に取得されたログから除外されるため、問題が発生する可能性があります。さらに、Timestamp>LastSeenTimestamp を追加することも考えましたが、データ量と重複の問題が解決するかどうか、およびメッセージが失われないかどうかはわかりません。何か案は?ありがとう

4

2 に答える 2

1

もう1つの可能性は、クエリに「DeploymentId」と「PartitionKey」を含めて、この情報が利用可能な場合に最後の「n」分間の診断データをフェッチすることです。

于 2012-08-03T04:42:14.220 に答える
1

サードパーティ ツールへの転送は、リアルタイムまたは「できるだけ早く」する必要がありますか? 5 分以上経過したデータのみを転送し、5 分未満のデータは転送できませんか? これにより、次のことが保証されます。完了したパーティションのみを転送します。

于 2012-08-02T18:25:06.927 に答える