AWS Lambdafunction(节点) – 自定义超时logging

我想知道是否有任何方法劫持标准的“任务1.00秒后超时”日志。

上下文的位置:我将lambda函数日志stream入AWS Elasticsearch / Kibana,我logging的事情之一是函数是否成功执行(很好知道)。 我已经build立了一个testingstream到ES,我已经能够定义一个模式来映射我logging到ES中的字段。

从function,我控制台日志如下:

“\”FAIL \“\”东西搞砸\“\”0.100秒\“”

并与映射,我得到一个日志结构,如:

状态消息 ——————– 执行时间

失败—-搞砸了— 0.100秒

…这是可爱的。 但是,如果日志进来像:

“1.00秒后超时”

那么映射显然不适用。 如果ES被拾取,它可能会把整个string转储到“状态”,这是不理想的。

我想也许我可以查询context.getRemainingMillis(),如果它可能在最大执行时间(你不能从上下文对象?)的10毫秒内,然后触发自定义日志,并忽略默认输出。 然而,这感觉像一个黑客。

有没有人有从AWS Lambdalogin到ES的经验? 使用状态等创build这些自定义日志的关键是,我们可以监视lambda函数(很多)的活动,而默认的日志格式不允许我们分类函数的结果。

**** 编辑 ****

我使用的解决scheme是修改AWS生成的用于将日志行发送到Elasticsearch的lambda函数。 如果我可以与AWS的lambdalogging器进行交互来设置日志格式,那将是非常好的,但是现在这样做了!

我将分享一些关于这方面的关键点:

  • parsing行和设置自定义字段所做的工作是在调​​用buildSource() 之前在transform()中完成的。
  • 消息本身(完整的日志行)可以在logEvent.message中find。
  • 您不只是以所需的格式重新分配消息(事实上,将原始行发送到ES可能是最好的)。 这里的关键是在logEvent.extractedFields中设置自定义字段。 所以一旦我撕开了日志行,我设置了logEvent.extractedFields.status =“FAIL”,logEvent.extractedFields.message =“Whoops”等。