Azure

Azure Load Testingのテストでエラーが発生したのでログを確認する。

はじめに

テスト実行時に失敗が発生することがあると思います。Load Testingでは実行時のログを確認することで解決できる場合があります。

ログの取得

ログはテスト実行時に自動的に取得されダウンロードできるようになります。

 

下記ではエラーが100%になっていて失敗していることが確認できます。

ログは上記のDownloadから取得することができます。

ログはテストの規模などにもよりますが、ダウンロードが開始されるまでに時間がかかると思います。ドキュメントのサンプルを利用した場合、スレッド5でエラーですが5分以上かかっていました。

worker.logがダウンロードされます。

300万行を超えるためメモ帳はでなく、他のテキストエディターを利用することをお勧めします。

ログの確認

下記のログからはGetSecret(appToken)でエラーが発生していることが分かります。

ログはJavaのエラーメッセージです。

Undefined argument: appToken

ログからappTokenが未定義なことが分かります。

2022-03-11 09:46:40,752 ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: eval	Sourced file: inline evaluation of: `` GetSecret(appToken) ;'' : Undefined argument: appToken 
2022-03-11 09:46:40,754 WARN o.a.j.f.BeanShell: Error running BSH script
org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval	Sourced file: inline evaluation of: `` GetSecret(appToken) ;'' : Undefined argument: appToken 
	at org.apache.jmeter.util.BeanShellInterpreter.bshInvoke(BeanShellInterpreter.java:179) ~[ApacheJMeter_core.jar:5.4.3]
	at org.apache.jmeter.util.BeanShellInterpreter.eval(BeanShellInterpreter.java:185) ~[ApacheJMeter_core.jar:5.4.3]
	at org.apache.jmeter.functions.BeanShell.execute(BeanShell.java:99) [ApacheJMeter_functions.jar:5.4.3]
	at org.apache.jmeter.engine.util.CompoundVariable.execute(CompoundVariable.java:138) [ApacheJMeter_core.jar:5.4.3]
	at org.apache.jmeter.engine.util.CompoundVariable.execute(CompoundVariable.java:113) [ApacheJMeter_core.jar:5.4.3]
	at org.apache.jmeter.testelement.property.FunctionProperty.getStringValue(FunctionProperty.java:100) [ApacheJMeter_core.jar:5.4.3]
	at org.apache.jmeter.testelement.AbstractTestElement.getPropertyAsString(AbstractTestElement.java:280) [ApacheJMeter_core.jar:5.4.3]
	at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.getDomain(HTTPSamplerBase.java:830) [ApacheJMeter_http.jar:5.4.3]
	at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.getUrl(HTTPSamplerBase.java:1085) [ApacheJMeter_http.jar:5.4.3]
	at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1296) [ApacheJMeter_http.jar:5.4.3]
	at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1285) [ApacheJMeter_http.jar:5.4.3]
	at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:638) [ApacheJMeter_core.jar:5.4.3]
	at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:558) [ApacheJMeter_core.jar:5.4.3]
	at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:489) [ApacheJMeter_core.jar:5.4.3]
	at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:256) [ApacheJMeter_core.jar:5.4.3]
	at java.lang.Thread.run(Unknown Source) [?:?]
Caused by: java.lang.reflect.InvocationTargetException
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:?]
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:?]
	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:?]
	at org.apache.jmeter.util.BeanShellInterpreter.bshInvoke(BeanShellInterpreter.java:162) ~[ApacheJMeter_core.jar:5.4.3]
	... 15 more
Caused by: bsh.EvalError: Sourced file: inline evaluation of: `` GetSecret(appToken) ;'' : Undefined argument: appToken 
	at bsh.BSHArguments.getArguments(BSHArguments.java:62) ~[bsh-2.0b6.jar:2.0b6 2016-02-05 05:16:19]
	at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:63) ~[bsh-2.0b6.jar:2.0b6 2016-02-05 05:16:19]
	at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:96) ~[bsh-2.0b6.jar:2.0b6 2016-02-05 05:16:19]
	at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:41) ~[bsh-2.0b6.jar:2.0b6 2016-02-05 05:16:19]
	at bsh.Interpreter.eval(Interpreter.java:659) ~[bsh-2.0b6.jar:2.0b6 2016-02-05 05:16:19]
	at bsh.Interpreter.eval(Interpreter.java:750) ~[bsh-2.0b6.jar:2.0b6 2016-02-05 05:16:19]
	at bsh.Interpreter.eval(Interpreter.java:739) ~[bsh-2.0b6.jar:2.0b6 2016-02-05 05:16:19]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:?]
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:?]
	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:?]
	at org.apache.jmeter.util.BeanShellInterpreter.bshInvoke(BeanShellInterpreter.java:162) ~[ApacheJMeter_core.jar:5.4.3]
	... 15 more

以上のようにログからエラーの原因を確認することが出来ました。
実行したテストプランのファイルにはappTokenを停止していませんでした。

まとめ

エラー発生時のログの取得が行え、問題の確認を行えます。ただし、ダウンロードしてファイルを確認するためひと手間かかります。

Log Analyticsで確認できると楽だと思いましたが、300万行も吐き出されるため現実的に無理があるとも思います。

今後、ログの分析方法も拡張されていくのではないでしょうか。

 

-Azure
-,