NestJS OpenTelemetry 项目教程
1. 项目的目录结构及介绍
nestjs-otel/
├── src/
│ ├── app.module.ts
│ ├── main.ts
│ ├── otel/
│ │ ├── otel.module.ts
│ │ ├── otel.service.ts
│ ├── ...
├── test/
├── .env
├── .gitignore
├── package.json
├── tsconfig.json
├── README.md
src/
: 包含项目的源代码。app.module.ts
: 应用程序的根模块。main.ts
: 应用程序的入口文件。otel/
: OpenTelemetry 相关模块。otel.module.ts
: OpenTelemetry 模块定义。otel.service.ts
: OpenTelemetry 服务实现。
test/
: 包含项目的测试代码。.env
: 环境变量配置文件。.gitignore
: Git 忽略文件配置。package.json
: 项目依赖和脚本配置。tsconfig.json
: TypeScript 编译配置。README.md
: 项目说明文档。
2. 项目的启动文件介绍
main.ts
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { Logger } from '@nestjs/common';
import { OtelService } from './otel/otel.service';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
const otelService = app.get(OtelService);
otelService.start();
await app.listen(3000);
Logger.log(`Application is running on: ${await app.getUrl()}`);
}
bootstrap();
NestFactory.create(AppModule)
: 创建 NestJS 应用实例。app.get(OtelService)
: 获取 OpenTelemetry 服务实例。otelService.start()
: 启动 OpenTelemetry 服务。app.listen(3000)
: 监听端口 3000。
3. 项目的配置文件介绍
.env
OTEL_SERVICE_NAME=nestjs-otel
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
OTEL_SERVICE_NAME
: OpenTelemetry 服务名称。OTEL_EXPORTER_OTLP_ENDPOINT
: OpenTelemetry 导出端点。
package.json
{
"name": "nestjs-otel",
"version": "1.0.0",
"scripts": {
"start": "nest start",
"build": "nest build",
"test": "jest"
},
"dependencies": {
"@nestjs/common": "^8.0.0",
"@nestjs/core": "^8.0.0",
"@nestjs/platform-express": "^8.0.0",
"opentelemetry-api": "^1.0.0",
"opentelemetry-sdk": "^1.0.0",
"reflect-metadata": "^0.1.13"
},
"devDependencies": {
"@nestjs/testing": "^8.0.0",
"jest": "^27.0.0",
"ts-jest": "^27.0.0",
"typescript": "^4.0.0"
}
}
scripts
: 包含项目的启动、构建和测试脚本。dependencies
: 项目的运行时依赖。devDependencies
: 项目的开发依赖。
以上是 NestJS OpenTelemetry 项目的目录结构、启动文件和配置文件的详细介绍。希望对你有所帮助!