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”等。