splunk logback/log4j appender似乎没有记录splunk
问题描述:
我需要使用Java8运行时登录到AWS Lambda的splunk。它使用spring框架,并将logback splunk appender添加到项目中。没有错误,日志似乎没有显示在splunk中。 splunk管理员提到在splunk服务器上没有收到任何请求。当我尝试手动调用REST API时,日志显示为splunk。所以从AWS Lambda到分组服务器的连接性是好的。 splunk appender似乎以异步方式调用API,并且在AWS Lambda代码的末尾添加了50秒的休眠时间,以查看在异步步骤完成之前VM是否退出问题。没有运气。我如何进一步调试?splunk logback/log4j appender似乎没有记录splunk
代码段: -
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>
答
第一步是添加batch_size_count
以排除HttpEventCollectorLogbackAppender
不会刷新到Splunk的任何问题。
<appender name="http" class="com.splunk.logging.HttpEventCollectorLogbackAppender">
<url>https://a.b.c.d:8088</url>
<token>valid-token</token>
<batch_size_count>1</batch_size_count>
<disableCertificateValidation>true</disableCertificateValidation>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>{%msg}</pattern>
</layout>
</appender>
你也应该确认你是在自HTTP事件收集器接收端采用Splunk 6.3+至少需要V6.3的
我不认为的Thread.Sleep足以刷新一个的logback异步appender。另外,当lambda结束时,不会向JVM发送中断,因此关闭挂接不起作用。也许交换到同步appender。 –