数据犬 APM 助手
一个轻量级的包装器在Datadog的上面 dd-trace 库中,添加工具功能,以方便追踪、标记和搜索您的功能.
动机
dd-trace 提供了权力和灵活性,但随之而来的是复杂性。 此包装会添加帮助器以简化 :
- 追查职能(包括搜索)
- 追踪类方法
- 将标记添加到活动间距
- 添加标签到 根号 间距(需要在跟踪搜索和分析中进行过滤和搜索)
- 在不丢弃的情况下将一个跨度标为错误
安装
npm install --save @gamechanger/datadog-apm
或者说
yarn add @gamechanger/datadog-apm
装饰者
您的可观察性代码应该远离您的商业逻辑, 应该容易添加和去除。 装饰者是实现这一目标的好方法.
// Trace a function
@APM.trace()
async function foo() {}
// Trace *all* methods of a class
@APM.trace()
class GameChanger {
public foo() {}
private bar() {}
}
// Trace *individual* methods of a class
class GameChanger {
@APM.trace()
public foo() {}
private bar() {}
}
// The decorator can be configured to override the defaults
class EmailQueue {
@APM.trace({ serviceName: 'queue', spanName: 'queue.message' })
public async pop() {}
}
标记
在整个代码中都会出现添加标记,因此理想的做法是增加尽可能多的行.
与香草 dd-trace,您必须始终检查活动跨度是否存在:
const span = tracer.scope().active();
if (span !== null) {
span.addTags({
'http.method': req.method
});
}
这个包裹可以帮你清理干净
APM.addTags({ 'http.method': req.method })
根宽访问
如果你在用的话 koa 或者说 express,您可以使用 APM.getRootSpanFromContext 以获得根跨.
这可以用来在根间间添加标记,然后可以在 Trace Search & Analytics 数据道中的屏幕.
APM.addTags({ teamId: context.params.teamId }, APM.getRootSpanFromContext(context));
注: 这使用无证财产,不能保证工作. 然而,如果基础 dd-trace 代码会改变,它会安全地倒回到将标记添加到当前跨度上而不是根跨上.
将 Spans 标记为错误
APM.markAsError(new Error('I am not thrown'))
部署
所有出版都通过CI管道完成.
要启动新的部署,只需使用 npm version <version> 然后推着 package.json 更改和与 repo 相关的标签 git push --follow-tags。 。 。 .