Java8ランタイムを使用してAWS Lambdaからsplunkにログする必要があります。それは春のフレームワークを使用して、私はプロジェクトにlogback splunkアペンダーを追加しました。エラーはなく、ログはsplunkに表示されないようです。 splunk adminは、splunk serverで受信した要求がないことを示しました。 REST APIを手動で呼び出そうとすると、ログはsplunkに表示されます。したがって、AWS LambdaからSplunkサーバーへの接続性は良好です。スプランクアペンダーはAPIを非同期で呼び出すようですが、AWSラムダコードの最後に50秒のスリープを追加して、非同期ステップが完了する前にVMが終了する問題であるかどうかを確認しました。まだ運はありません。さらにデバッグする方法は?splunk logback/log4j appenderがスプラックをログに記録しないようです
コードスニペット: -
public class LambdaApp implements RequestHandler<String, Object>
{
private static final Logger LOGGER = LoggerFactory.getLogger(LambdaApp.class);
private static final Logger SPLUNK_LOGGER = LoggerFactory.getLogger("splunk.logger");
@Override
public Object handleRequest(String event, Context context)
{
SPLUNK_LOGGER.info("AWS Lambda start");
try {
Thread.sleep(50000);
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
return "handled";
}
Mavenの依存関係: -
<dependency>
<groupId>com.splunk.logging</groupId>
<artifactId>splunk-library-javalogging</artifactId>
<version>1.5.2</version>
</dependency>
Logbackの設定: -
<appender name="http" class="com.splunk.logging.HttpEventCollectorLogbackAppender">
<url>https://a.b.c.d:8088</url>
<token>valid-token</token>
<disableCertificateValidation>true</disableCertificateValidation>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>{%msg}</pattern>
</layout>
</appender>
<logger name ="splunk.logger" level="DEBUG">
<appender-ref ref="http" />
</logger>
の最小値を必要とするので、また、あなたが受信側でのSplunk 6.3+を使用していることを確認する必要があります私はのThread.sleepがlogbackをフラッシュするのに十分であるとは思いません非同期アペンダー。また、ラムダが終了すると、割り込みはJVMに送られないので、シャットダウンフックは機能しません。おそらく同期アペンダーにスワップします。 –