打开遥测节点 SDK 扩展
缩略语 打开遥测节点 SDK。本套件在标准OpenTeleometry追踪设置之上添加了 Corlogix 特定行为——通过采样器和/或一个 SpanProcessor,包括处理器路径上独有的自持续时间.
npm install --save @coralogix/opentelemetry
所需资源
此软件包依赖于您应用程序现有的 OpenTelemeter 设置 。 以下是: peerDependencies 并且必须同时安装:
| 软件包 | 版本 |
|---|---|
@opentelemetry/api | ^1.7.0 |
@opentelemetry/sdk-trace-base | ^2.8.0 |
以下例子也使用了 @opentelemetry/resources 财务报告和审定财务报表 @opentelemetry/semantic-conventions,它们属于典型的OpenTelemory节点设置的一部分.
说明: 此套件针对 OpenTeleometry JS SDK 2.x 数据。如下所示的资源/提供者 API(
resourceFromAttributes, (中文(简体) ),ATTR_SERVICE_NAME)是 2.x API;如果您仍在 SDK 1.x 上,则相应调整设置(new Resource(...), (中文(简体) ),SemanticResourceAttributes) (中文(简体) ).
Corlogix 变速器
CoralogixTransactionSampler 将现有的 OpenTeleometry 采样器包成定义、 报告并监视 Corlogix 交易。它将 Corlogix 交易属性设定在被采样的跨度上,并传播交易身份.
import { CoralogixTransactionSampler } from "@coralogix/opentelemetry";
import { AlwaysOnSampler } from "@opentelemetry/sdk-trace-base";
// Wrap your existing sampler...
const sampler = new CoralogixTransactionSampler(new AlwaysOnSampler());
// ...or omit the argument to default to a ParentBased(AlwaysOn) sampler.
const defaultSampler = new CoralogixTransactionSampler();
将采样器像其它 OpenTelemetry 采样器一样传递给您的追踪器提供者 :
import { BasicTracerProvider } from "@opentelemetry/sdk-trace-base";
import { resourceFromAttributes } from "@opentelemetry/resources";
import { ATTR_SERVICE_NAME } from "@opentelemetry/semantic-conventions";
const tracerProvider = new BasicTracerProvider({
resource: resourceFromAttributes({
[ATTR_SERVICE_NAME]: "<your-service-name>",
}),
sampler: new CoralogixTransactionSampler(),
});
辅助仪器
和我们一起工作 个人自动仪器 财务报告和审定财务报表 手动仪器。捆绑的自动仪器方法是 没有 已支持.
发送属性
当一个跨度开始交易时,采样器会添加以下属性:
| 属性 | 说明 |
|---|---|
cgx.transaction | 交易名称( 如 . GET /users/:id) (中文(简体) ). |
cgx.transaction.distributed | 分布式交易名称在各种服务中传播. |
cgx.transaction.root | 此跨度是否是交易的根 . |
交易处理器
TransactionSpanProcessor 包裹一个 SpanExporter 标记 Corlogix 交易, 专用邮票自用时间(cgx.transaction.self_duration记录匹配的直方图(单位) s) (中文(简体) ). 它与任何样本.
命名如何运作
交易 成员 (新继承,和 cgx.transaction.root)在起始时决定。 显示名称 cgx.transaction 只有在完成的本地追踪完成后,才使用 overrideName ?? rootSpan.name。这对快递很重要:HTTP跨度通常从 GET 后来改名为 GET /myroute 由中间软件来表示 —— 输出的交易名称是最后一个根跨度名称 .
每一个完成的本地跟踪立即被输出. 处理器缓冲
改为 CORALOGIX_MAX_SPANS_PER_TRACE 交易增益完成周期
(默认:256),最多 CORALOGIX_MAX_TRANSACTION_TRACES 一次保留在内存中的交易(默认:无限).
当正跨度被突破时,它立即导出追踪缓冲
和后来流的长度不变. CORALOGIX_MAX_SPANS_PER_TRACE=0 是无限的.
当微量极限达到时,以后的微量
流线不变。 微量限额只适用于保留内存的交易; 0 是无限的,一旦一个缓冲交易完成,能力就会再次得到。 这些痕迹没有处理器交易标记,
自我延长,或称度量.
import { BasicTracerProvider, ConsoleSpanExporter } from "@opentelemetry/sdk-trace-base";
import { TransactionSpanProcessor } from "@coralogix/opentelemetry";
const tracerProvider = new BasicTracerProvider({
spanProcessors: [
new TransactionSpanProcessor(new ConsoleSpanExporter(), {
// Optional MeterProvider for the self-duration histogram; defaults to the global one.
}),
],
});
选项
构造选项胜过环境变量 。 无效的内存值返回到默认值 .
| 选项 | 类型 | 默认 | 新闻 var | 含义 |
|---|---|---|---|---|
completionHoldbackMillis | number | 100 | OTEL_CX_TRANSACTION_COMPLETION_HOLDBACK_MILLIS | 在最后的寿命结束之后, 等待这么长的时间 才能最终确定 迟到的兄弟姐妹可以加入. 0 = 立即敲定. |
shutdownIdleWaitMillis | number | 30000 | —— 说 | 多久的停机等待飞行时间. |
meterProvider | MeterProvider | 全球 | —— 说 | 测量自长直方图. |
与快递的交易
解决快递线路的稳定,低心率交易名称(如. GET /users/:id 而不是每个请求路径),呼叫 setExpressApp 这样取样员就可以学习你的应用的路线和终点.
重要内容: 打电话
setExpressApp在所有路线和路由器注册后。采样器在您调用时读取了Express路由器堆栈,所以之后添加的任何路线都不会解决.
import { BasicTracerProvider } from "@opentelemetry/sdk-trace-base";
import { resourceFromAttributes } from "@opentelemetry/resources";
import { ATTR_SERVICE_NAME } from "@opentelemetry/semantic-conventions";
import { CoralogixTransactionSampler } from "@coralogix/opentelemetry";
import express from "express";
import router from "./router";
const sampler = new CoralogixTransactionSampler();
const tracerProvider = new BasicTracerProvider({
resource: resourceFromAttributes({
[ATTR_SERVICE_NAME]: "<your-service-name>",
}),
sampler,
});
const app = express();
app.use("/", router);
// Register routes first, then hand the app to the sampler.
sampler.setExpressApp(app);
app.listen(3000, () => {
console.log("Server is running");
});
前缀和嵌入路由器
setExpressApp 决定 满 路由模板,包括挂载前缀和任意嵌入路由器. 例如:
const orders = express.Router();
orders.get("/orders/:oid", handler);
const api = express.Router();
api.use("/deep", orders);
app.use("/api", api);
请求 /api/deep/orders/9 决定交易 GET /api/deep/orders/:oid。 。 。 .
表达式版本支持
两者 捷运 4 财务报告和审定财务报表 运通5 被支持.
参数在两个版本上均正确诱导,包括a 挂载前缀 (单位:千美元)app.use("/v/:ver", router): 请求 /v/2/things/abc 决定: GET /v/:ver/things/:t。 。 。 .
更改日志
见 变动情况 用于发行笔记. 注意前缀和嵌入式路由器的路由调解是 断开输出变化: 受影响应用程序的交易名称更改, 因此更新前名上键入的任何仪表板, 提醒, 或保存视图 .
许可证
凭 Apache 许可证 2.0。 。 。 .