@mwcp/otel v26.5.2
@mwcp/otel
Open Telemetry Component for Midway.js
Note
ESM build only, requires @midwayjs >= 3.12
and set "type": "module"
in packages.json
安装依赖
npm i @mwcp/otel
更新配置
Update project src/configuration.ts
import { Configuration } from '@midwayjs/decorator'
import * as koa from '@midwayjs/koa'
import * as otel from '@mwcp/otel'
@Configuration({
imports: [
koa,
otel,
],
importConfigs: [join(__dirname, 'config')],
})
export class ContainerConfiguration implements ILifeCycle {
}
使用
使用 Jaeger 容器快速启动一个 OTLPTraceExporter 服务:
docker run -d --name jaeger \
-e COLLECTOR_OTLP_ENABLED=true \
-p 4317:4317 \
-p 4318:4318 \
-p 5778:5778 \
-p 6831:6831/udp \
-p 6832:6832/udp \
-p 16686:16686 \
jaegertracing/all-in-one:latest
启动项目:
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
npm start
Jaeger Web UI address:
Trace
装饰器
import { Trace } from '@mwcp/otel'
@Controller('/')
export class FooController {
@Inject() readonly svc: FooService
/* span name will be `{class name}/{method name}` => "FooController/hello" */
@Trace()
async hello(): Promise<string> {
return 'hello'
}
/* span name will be "hello" */
@Trace('hello')
async world(): Promise<string> {
return 'world'
}
@Trace({
spanName: 'hello'
})
async world2(): Promise<string> {
return 'world'
}
}
TraceInit
装饰器
// src/configuration.ts
import { TraceInit } from '@mwcp/otel'
export class AutoConfiguration implements ILifeCycle {
@TraceInit({ namespace: 'Foo' })
async onReady(container: IMidwayContainer): Promise<void> {
// some code
}
}
装饰器泛型参数
从泛型参数自动获取方法调用参数类型
@Controller('/')
export class FooController {
@Inject() readonly svc: FooService
hello(): string {
// spanName should be 'foo-124-abc'
const msg = this.svc.concat(123, 'abc')
return msg
}
}
@Provide()
export class FooService {
@Trace<FooService['concat']>({
spanName: ([v1, v2]) => `foo-${v1 + 1}-${v2}`,
})
concat(v1: number, v2: string): string {
return `${v1.toString()}-${v2}`
}
@Trace<FooService['concat2']>({
spanName: (args) => `foo-${args[0] + 1}-${args[1]}`,
})
concat2(v1: number, v2: string): string {
return `${v1.toString()}-${v2}`
}
}
License
Languages
4 days ago
18 days ago
19 days ago
19 days ago
19 days ago
20 days ago
20 days ago
21 days ago
21 days ago
21 days ago
22 days ago
29 days ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
2 months ago
2 months ago
2 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
8 months ago
8 months ago
10 months ago
8 months ago
10 months ago
8 months ago
8 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
8 months ago
8 months ago
8 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
12 months ago
12 months ago
11 months ago
12 months ago
12 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago