はじめに
テスト実行時に失敗が発生することがあると思います。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万行も吐き出されるため現実的に無理があるとも思います。
今後、ログの分析方法も拡張されていくのではないでしょうか。