NestJS + Opentelemetry(Loki)

💡 原文韩文,约4200字,阅读约需10分钟。
📝

内容提要

本文介绍了在NestJS应用中使用Opentelemetry和Winston记录日志的方法,包括安装Opentelemetry Collector和Grafana,配置LoggerProvider和Winston Logger,以及将日志传输到Opentelemetry的OTLP exporter并存储到Loki。可以在Grafana中查看日志。

🎯

关键要点

  • 需要准备Opentelemetry Collector和Grafana。
  • 自动日志记录存在问题,需手动配置以确保日志正确发送到Loki。
  • 必须安装winston-transport,因为它不是instrumentation-winston的依赖项。
  • 选择Winston作为日志记录器,Pino也可以使用相同的方法。
  • 创建logger.ts文件以设置LoggerProvider和Exporter。
  • 在logger.ts中创建Winston Logger并注册OpenTelemetryTransportV3。
  • 在main.ts中导入logger并在创建NestApp时传递logger。
  • 在AppModule中提供Winston Logger作为Provider。
  • 最终,Winston日志将通过LoggerProvider的Exporter发送到OLTP端点,并由Collector收集到Loki中。
  • 可以通过Grafana查看日志,路径为Explore -> Data source: Loki -> Label browser -> Select Service -> Show logs。

延伸问答

如何在NestJS中使用Opentelemetry记录日志?

在NestJS中使用Opentelemetry记录日志需要安装Opentelemetry Collector和Grafana,配置LoggerProvider和Winston Logger,并将日志通过OTLP exporter发送到Loki。

为什么需要手动配置日志记录?

因为自动日志记录存在问题,若不手动配置,日志可能无法正确发送到Loki。

如何创建Winston Logger并在NestJS中使用?

在logger.ts文件中创建Winston Logger,并在main.ts中导入logger,在创建NestApp时传递logger。

需要安装哪些依赖才能使用Winston与Opentelemetry?

必须安装winston-transport,因为它不是instrumentation-winston的依赖项,此外还需安装@opentelemetry/winston-transport。

如何在Grafana中查看日志?

可以通过Grafana访问Explore -> Data source: Loki -> Label browser -> Select Service -> Show logs来查看日志。

如何配置LoggerProvider和Exporter?

在logger.ts中创建LoggerProvider,并将OTLPLogExporter与资源和处理器连接,然后设置为全局LoggerProvider。

➡️

继续阅读