Apache JMeter™のSummary ReportをAzure Application Insights / Log Analyticsで表示する
Azure Application Insights / Log AnalyticsでJMeterのSummary Reportを見る方法を紹介します。
jmeter-backend-azureプラグインを利用してMeterでのテスト結果をAzure Application Insightsに送ることで、Application InsightsやLog AnalyticsでJMeterのテスト結果を参照することができるようになります。
今回はApplication InsightでJMeterのSummary Reportを表示してみましょう。
jmeter-backend-azureプラグインの導入と設定
こちらの記事を参照してください。
Application Insights / Log AnalyticsでのSummary Reportの表示
今回はApplication InsightsのログでSummary Reportを表示します。 Log Analyticsのブックでする場合はテーブル名や列名が異なるので、以下の対応表に従って置き換えてください。
- | Application Insights | Log Analytics |
---|---|---|
テーブル | requests | AppRequests |
列 | name | Name |
success | Success | |
duration | DurationMs | |
customDimensions | Properties |
-
表示/分析対象の絞り込み
requests (Application Insights) / AppRequests (Log Analytics)テーブルにはApplication Insightsに送った全てのテスト結果や、JMeterではない他のログも含まれている可能性があります。
1つのテストのみを対象とした結果を表示/分析したい場合は、nameとcustomDimensions.TestStartTimeで、絞り込むことができます。(テストの度にBackend ListenerのtestNameを変更すればnameのみで絞り込むこともできます。)以下のKustoでは、nameとTestStartTimeの一覧を取得します。
requests | extend TestStartTime = tostring(customDimensions.TestStartTime) | distinct TestStartTime, name | extend formattedTestStartTime = format_datetime( unixtime_milliseconds_todatetime(tolong(TestStartTime)), 'yyyy/MM/dd HH:mm:ss' ) | sort by TestStartTime desc
-
Summary Report
先ほど取得したnameとTestStartTimeを指定して、対象となるテストのSummary Reportを表示します。let testName = "<先ほど取得したnameの値>"; let TestStartTime = "<先ほど取得したTestStartTimeの値>"; requests | where name == testName and customDimensions.TestStartTime == TestStartTime | summarize Samples = count(), Average = tolong(avg(duration)), Min = min(duration), Max = max(duration), StdDev = stdevp(duration), ErrorCount = countif(success == false), ReceivedKB = sum(tolong(customDimensions.Bytes)), SentKB = sum(tolong(customDimensions.SentBytes)), StartTime = min(tolong(customDimensions.SampleStartTime)), EndTime = max(tolong(customDimensions.SampleEndTime)) by Label = tostring(customDimensions.SampleLabel) | extend s = 0 | union ( requests | where name == testName and customDimensions.TestStartTime == TestStartTime | summarize Samples = count(), Average = tolong(avg(duration)), Min = min(duration), Max = max(duration), StdDev = stdevp(tolong(duration)), ErrorCount = countif(success == false), ReceivedKB = sum(tolong(customDimensions.Bytes)), SentKB = sum(tolong(customDimensions.SentBytes)), StartTime = min(tolong(customDimensions.SampleStartTime)), EndTime = max(tolong(customDimensions.SampleEndTime)) | extend Label = 'TOTAL', s = 9 ) | extend tp = Samples / ((EndTime - StartTime) / 1000.0), KBPeriod = (EndTime - StartTime) * 1024 / 1000.0 | sort by s asc | project Label, Samples, Average, Min, Max, ['Std. Dev.'] = round(StdDev, 2), ['Error %'] = strcat(round(ErrorCount * 100.0 / Samples, 2), '%'), ['Throughput'] = iif(tp < 1.0, strcat(round(tp * 60, 1), '/min'), strcat(round(tp, 1), '/sec') ), ['Received KB/sec'] = round(ReceivedKB / KBPeriod, 2), ['Sent KB/sec'] = round(SentKB / KBPeriod, 2), ['Avg. Bytes'] = round(ReceivedKB / toreal(Samples), 1) | project-reorder Label, Samples, Average, Min, Max, ['Std. Dev.'], ['Error %'], ['Throughput'], ['Received KB/sec'], ['Sent KB/sec'], ['Avg. Bytes']
以上、JMeterのSummary ReportをAzure Application Insights / Log AnalyticsでKusto queryを利用して表示する方法を紹介しました。
【宣伝】
AzureにJMeterの分散テスト環境を簡単構築
『Load Tester Powered by Apache JMeter™』