4

Windows Azure で診断を構成するさまざまな方法を理解しようとしています。これまでのところ、wad-control-container の Diagnostics によって保存された xml BLOB のコンテンツを取得するときに、Azure によって適切に使用される diagnostics.wadcfg を設定しました (そして、テーブルは正しいリフレッシュ レートで更新されます)。

たとえば、すべてのインスタンスのログ転送期間を短縮するために、cscfg のいくつかのフィールドをオーバーライドしたいと思います (インスタンス リサイクルの場合に消去される各 wad-control-container ファイルを更新する必要はありません)。 . したがって、私の WebRole.Run() では、 RoleEnvironment.GetConfigurationSettingValue() からパラメーターを取得し、それを現在の config に適用しようとします。しかし、私の問題は、DiagnosticMonitor.GetDefaultInitialConfiguration() から読み取った値が diagnostics.wadcfg の内容に対応しておらず、そこに新しい値を設定しても効果がないように見えることです。

diagnostics.wadcfg から取得したものと、実行時に設定できる値との関係を説明できる人はいますか?

ありがとう

4

3 に答える 3

3

GetDefaultInitialConfiguration() は、その名前が示すようにデフォルト構成を取るため、現在の設定を返しません。適切な構成を取得する必要がある場合は、 GetCurrentConfigurationメソッドを使用する必要があります。

ただし、転送を後押しする必要がある場合は、たとえばCerebrata の Azure Diagnostics Managerを使用して、ロールのオンデマンド転送をすばやく開始できます。

PowerShell 用の Windows Azure Diagnostics Management コマンドレットを使用することもできます。この記事をチェックしてください。

お役に立てれば!

于 2012-03-20T09:59:11.953 に答える
2

wadcfg ファイルの値を利用するには、次のコード コードを使用して現在の DiagnosticsMonitorConfiguration にアクセスできます。

var cloudStorageAccount = CloudStorageAccount.Parse(
            RoleEnvironment.GetConfigurationSettingValue(WADStorageConnectionString));
var roleInstanceDiagnosticManager = cloudStorageAccount.CreateRoleInstanceDiagnosticManager(
            RoleEnvironment.DeploymentId,
            RoleEnvironment.CurrentRoleInstance.Role.Name,
            RoleEnvironment.CurrentRoleInstance.Id);
var dmc = roleInstanceDiagnosticManager.GetCurrentConfiguration();
// Set different logging settings
dmc.Logs....
dmc.PerformanceCounters....
// don't forget to update
roleInstanceDiagnosticManager.SetCurrentConfiguration(dmc);
于 2012-11-10T04:18:16.083 に答える
0

Boris Lipshitz によるコードは現在動作しません ( Windows Azure Diagnostics (SDK 2.0)の重大な変更点): 「DeploymentDiagnosticManager コンストラクターは、CloudStorageAccount オブジェクトではなく、ストレージ アカウントへの接続文字列を受け入れるようになりました」。

SDK 2.0+ の更新されたコード:

    var roleInstanceDiagnosticManager = new RoleInstanceDiagnosticManager(
// Add StorageConnectionString to your role settings for this to work
                CloudConfigurationManager.GetSetting("StorageConnectionString"), 
                RoleEnvironment.DeploymentId,
                RoleEnvironment.CurrentRoleInstance.Role.Name,
                RoleEnvironment.CurrentRoleInstance.Id);
    var dmc = roleInstanceDiagnosticManager.GetCurrentConfiguration();
    // Set different logging settings
    dmc.Logs....
    dmc.PerformanceCounters....
    // don't forget to update
    roleInstanceDiagnosticManager.SetCurrentConfiguration(dmc)
于 2014-01-29T11:45:41.850 に答える