パフォーマンスカウンターは機能していますが、それらのデータはWADPerformanceCountersTable内に記録されていません。
webrole.csで私は持っています
public override bool OnStart()
{
var config = DiagnosticMonitor.GetDefaultInitialConfiguration();
config.PerformanceCounters.DataSources.Add(
new PerformanceCounterConfiguration
{
CounterSpecifier = @"\Processor(_Total)\% Processor Time",
SampleRate = TimeSpan.FromSeconds(5)
});
if (!PerformanceCounterCategory.Exists("MyCustomCounterCategory"))
{
CounterCreationDataCollection counterCollection = new CounterCreationDataCollection();
// add a counter tracking user button1 clicks
CounterCreationData operationTotal1 = new CounterCreationData();
operationTotal1.CounterName = "MyButton1Counter";
operationTotal1.CounterHelp = "My Custom Counter for Button1";
operationTotal1.CounterType = PerformanceCounterType.NumberOfItems32;
counterCollection.Add(operationTotal1);
// add a counter tracking user button2 clicks
CounterCreationData operationTotal2 = new CounterCreationData();
operationTotal2.CounterName = "MyButton2Counter";
operationTotal2.CounterHelp = "My Custom Counter for Button2";
operationTotal2.CounterType = PerformanceCounterType.NumberOfItems32;
counterCollection.Add(operationTotal2);
PerformanceCounterCategory.Create(
"MyCustomCounterCategory",
"My Custom Counter Category",
PerformanceCounterCategoryType.SingleInstance, counterCollection);
Trace.WriteLine("Custom counter category created.");
}
else
{
Trace.WriteLine("Custom counter category already exists.");
}
config.PerformanceCounters.ScheduledTransferPeriod =
TimeSpan.FromMinutes(2D);
config.PerformanceCounters.BufferQuotaInMB = 512;
TimeSpan perfSampleRate = TimeSpan.FromSeconds(30D);
// Add configuration settings for custom performance counters.
config.PerformanceCounters.DataSources.Add(
new PerformanceCounterConfiguration()
{
CounterSpecifier = @"\MyCustomCounterCategory\MyButton1Counter",
SampleRate = perfSampleRate
});
config.PerformanceCounters.DataSources.Add(
new PerformanceCounterConfiguration()
{
CounterSpecifier = @"\MyCustomCounterCategory\MyButton2Counter",
SampleRate = perfSampleRate
});
// Apply the updated configuration to the diagnostic monitor.
DiagnosticMonitor.Start("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString", config);
return base.OnStart();
}
私のページの読み込み方法の1つに追加しました
var button1Counter = new PerformanceCounter(
"MyCustomCounterCategory",
"MyButton1Counter",
string.Empty,
false);
System.Diagnostics.Trace.WriteLine("Users accessed");
button1Counter.Increment();
WebLogsTableに「アクセスされたユーザー」ログが表示されます。button1Counter.Incrementも機能します(ログを使用してカウントアップされた生の値を確認できます)。
問題は、PerformanceCountersテーブルに表示される唯一のパフォーマンスカウンターが\ Processor(_Total)\%ProcessorTimeであるということです。Azure管理パネルで詳細監視モードをオンにすると、さらにいくつかのパフォーマンスカウンターがログに記録されます(ただし、5分ごとに1回だけですが、カスタムパフォーマンスカウンターは表示されません)
作成したカスタムパフォーマンスカウンターがログに記録されないのはなぜですか?
WADPerformancカウンターテーブルは次のとおりです。
ログは次のとおりです。
これがWindowsログです(各ログは10回繰り返されますが、「ポータブルデバイス列挙サービスサービスが停止状態になりました」と「アプリケーションエクスペリエンスサービスが停止状態になりました」と時間変更に関するものの重複を削除しました。だからあなたはそれらを見ることができます。なぜ10個の同一のログを作成するのですか?)
では、AZUREでカスタムパフォーマンスルーターをWADPerformanceCoutersTableに配置するにはどうすればよいですか?
私はこれに2日間苦労しています。助けてください!シミュレーターではなく、Azureを使用しています
ありがとうございました