Kibana 如何将console.log从Nodejs应用推送到Elasticsearch

zfycwa2u  于 2022-12-25  发布在  Kibana
关注(0)|答案(1)|浏览(208)

我正在使用包elastic-apm-node通过Nodejs应用程序将APM数据发送到Elastic。我需要执行类似apm.captureError(error)的操作将错误发送到Elastic。
是否有一些地方,其中我可以发送简单的console.log()到弹性?
我基本上需要的功能,其中我可以跟踪我的应用程序中调用的每一个函数。

Function A (){
  console.log("Function A called , send to Elastic");
  doSomething()
}

Function doSomething(){
  console.log("Function doSomething called, send to Elastic");
}

我得到了一些使用Elastic FileBeat的例子,但我认为这应该可以使用APM实现,因为应用程序和Elastic之间已经建立了连接。

sqyvllje

sqyvllje1#

像这样的APM库(来自任何提供者,NewRelic或Datadog等都是一样的)通过在像Express和Koa这样的公共库中插装(基本上是 Package )函数来工作,所以它们自动拾取像执行路由这样的函数调用,但不会拾取其他无关的东西。日志实际上是一个单独的问题,这就是为什么有一个单独的日志解决方案。
但是你可以使用custom spans,重写console.log或者写一个 Package 器来实现。

const elasticLog = (data) => {
  const span = apm.startSpan(data)
  span.end()
}

const logger = process.env.NODE_ENV === 'production' ? elasticLog : console.log

function foo () {
  logger('In foo')
  bar()
}

function bar () {
  logger('In bar')
}

至于自动检测被调用函数的名称that's tricky,在这种情况下,在每个被调用的函数上运行日志记录器而不必实际调用它是几乎不可能的。

相关问题