fg-tracker-sdk 0.16.0 → 0.16.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/README.md +2 -0
- package/dist/node-http.d.ts.map +1 -1
- package/dist/node-http.js +158 -6
- package/dist/node-http.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# Changelog — fg-tracker-sdk
|
|
2
2
|
|
|
3
|
+
## 0.16.1
|
|
4
|
+
|
|
5
|
+
Correção de compatibilidade do `node:http` (CONTRATO.md §16, T119). Nada removido, nenhuma opção nova.
|
|
6
|
+
|
|
7
|
+
- **Node 20.x e 22.0–22.11: chamadas por `node:http`/`node:https` voltam a gerar span `http.client` e a levar `traceparent`.** O SDK abria o span no canal `http.client.request.created`, que o Node só publica a partir do 22.12 (e 23.2). Nesses runtimes, nenhuma chamada do AWS SDK, axios, got, node-fetch 2, gaxios ou web-push aparecia no trace, e o serviço chamado abria outro trace. O `fetch` instrumentado não era afetado.
|
|
8
|
+
- Sem o canal, o mesmo aviso sai de `http.Agent.prototype.addRequest` (dentro do construtor do pedido, no contexto de quem chamou) e de `ClientRequest.prototype._implicitHeader` (pedido sem agente, como o do `ws`, ou agente que reimplementa `addRequest`), ambos antes dos headers. Um span por pedido e o `traceparent` apontando para ele, com as regras de sempre: só dentro de um trace, `propagateTraceTo`/`propagateBaggageTo`, header da aplicação preservado, coletor ignorado e uma chamada AWS = um span (S08).
|
|
9
|
+
- **Decidido uma vez por processo, pelo que o runtime publica**, não pela versão: uma sondagem constrói um `ClientRequest` com um agente que não conecta (sem socket, DNS ou span); se outra biblioteca já assina o canal, o SDK lê o construtor em vez de sondar, para ela não ver o pedido de teste. No Node 22.12+ nada muda: o canal nativo continua sendo o caminho, sem trocar método nenhum.
|
|
10
|
+
- Os dois métodos só são trocados enquanto houver um tracker ativo e voltam aos originais no último `tracker.shutdown()`. Se outra instrumentação embrulhar um deles por cima, o embrulho do SDK fica na cadeia, inerte, para não apagar o dela, e é reaproveitado por um tracker novo.
|
|
11
|
+
- Erro de pedido também no Node sem `http.client.request.error` (antes do 20.17 e do 22.6): o span recebe o erro por `events.errorMonitor`, que só observa (um pedido sem listener de `error` continua lançando). Antes, o span fechava só como `aborted`.
|
|
12
|
+
|
|
3
13
|
## 0.16.0
|
|
4
14
|
|
|
5
15
|
Taxa de amostragem no span raiz (CONTRATO.md §4.6, §22). Nada removido e nenhuma opção nova. Retoma o #45 (que propunha a 0.12.0, nunca publicada) e vem depois da 0.15.0 (#58).
|
package/README.md
CHANGED
|
@@ -253,6 +253,8 @@ O `fetch` cobre quem chama `fetch`. Todo o resto do ecossistema Node continua fa
|
|
|
253
253
|
|
|
254
254
|
Vale para qualquer cliente, inclusive um que você nem sabe que existe dentro de uma dependência — e não depende de lembrar de envolver cada cliente. A implementação usa [`diagnostics_channel`](https://nodejs.org/api/diagnostics_channel.html), o ponto de observação que o próprio Node publica: nada é substituído por monkeypatch, nada quebra se outra biblioteca instrumentar o mesmo módulo, e a ordem de import não importa.
|
|
255
255
|
|
|
256
|
+
O canal que permite pôr o `traceparent` antes do envio (`http.client.request.created`) só existe a partir do Node 22.12 (e 23.2). No Node 20.x e no 22.0–22.11, o SDK (desde a 0.16.1) avisa o mesmo pedido por dois pontos do próprio `node:http` que rodam antes dos headers: `http.Agent.prototype.addRequest` e `ClientRequest.prototype._implicitHeader`. O resultado é o mesmo: um span por chamada, com o `traceparent` apontando para ele, para `http`/`https`, qualquer forma de chamada e `import`/`require`. O SDK decide uma vez por processo, pelo que o runtime realmente publica (uma sondagem que não abre socket nem consulta DNS), e não pela versão. Esses dois métodos só são trocados nesses runtimes, só enquanto houver um tracker ativo, e voltam aos originais no `tracker.shutdown()`. Se outra instrumentação embrulhar `addRequest` por cima, o embrulho do SDK fica na cadeia, inerte, para não apagar o dela.
|
|
257
|
+
|
|
256
258
|
As regras são as mesmas do `fetch`: span `http.client` com o mesmo nome e `attributes.host`, só dentro de um trace em andamento (um poller de background não vira trace órfão), `traceparent` propagado conforme `propagateTraceTo` e sem tocar num header que o chamador já definiu, 5xx marcando erro no span, e chamadas ao próprio endpoint do FG Tracker ignoradas.
|
|
257
259
|
|
|
258
260
|
Para desligar:
|
package/dist/node-http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-http.d.ts","sourceRoot":"","sources":["../src/node-http.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"node-http.d.ts","sourceRoot":"","sources":["../src/node-http.ts"],"names":[],"mappings":"AAMA,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAoNjE;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,IAAI,CAmGhE"}
|
package/dist/node-http.js
CHANGED
|
@@ -1,10 +1,152 @@
|
|
|
1
|
-
import { subscribe, unsubscribe } from 'node:diagnostics_channel';
|
|
2
|
-
import {
|
|
1
|
+
import { channel, subscribe, unsubscribe } from 'node:diagnostics_channel';
|
|
2
|
+
import { errorMonitor } from 'node:events';
|
|
3
|
+
import http from 'node:http';
|
|
4
|
+
import { als, BAGGAGE_HEADER, TRACEPARENT_HEADER, TRACESTATE_HEADER, traceContextHeaders } from './context.js';
|
|
3
5
|
import { httpClientSemconv, normalizePath } from './normalize.js';
|
|
4
6
|
import { shouldPropagate } from './tracker.js';
|
|
5
7
|
const CREATED = 'http.client.request.created';
|
|
6
8
|
const RESPONSE = 'http.client.response.finish';
|
|
7
9
|
const ERROR = 'http.client.request.error';
|
|
10
|
+
let createdPublisher;
|
|
11
|
+
/**
|
|
12
|
+
* O runtime publica `created` no construtor do `ClientRequest`, antes dos headers?
|
|
13
|
+
*
|
|
14
|
+
* Decidido uma vez por processo, pelo que o runtime faz, não pela versão (o 22.11
|
|
15
|
+
* não publica, o 22.12 publica; um backport mudaria a conta) nem por
|
|
16
|
+
* `channel()`/`hasSubscribers`, que dizem se há inscritos, não se alguém publica.
|
|
17
|
+
*/
|
|
18
|
+
function publishesCreated() {
|
|
19
|
+
createdPublisher ??= channel(CREATED).hasSubscribers ? constructorPublishesCreated() : probeCreated();
|
|
20
|
+
return createdPublisher;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Sondagem: um `ClientRequest` com um agente que só guarda o pedido. Nenhum
|
|
24
|
+
* socket, DNS ou byte na rede, e o pedido nunca termina. Roda fora de qualquer
|
|
25
|
+
* trace e antes de qualquer tracker deste módulo se inscrever, então não gera
|
|
26
|
+
* span; e só roda sem outros inscritos em `created`, então ninguém mais a vê.
|
|
27
|
+
*/
|
|
28
|
+
function probeCreated() {
|
|
29
|
+
let probe;
|
|
30
|
+
let published = false;
|
|
31
|
+
const listener = (message) => {
|
|
32
|
+
if (probe && message.request === probe)
|
|
33
|
+
published = true;
|
|
34
|
+
};
|
|
35
|
+
const agent = { addRequest: (request) => { probe = request; } };
|
|
36
|
+
subscribe(CREATED, listener);
|
|
37
|
+
try {
|
|
38
|
+
als.exit(() => new http.ClientRequest({ agent: agent, host: 'fg-tracker-probe.invalid', path: '/' }));
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
// Construtor diferente do esperado: os ganchos funcionam em qualquer runtime.
|
|
42
|
+
}
|
|
43
|
+
finally {
|
|
44
|
+
unsubscribe(CREATED, listener);
|
|
45
|
+
}
|
|
46
|
+
return published;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Com outro inscrito em `created`, a sondagem chegaria a ele como um pedido de
|
|
50
|
+
* verdade. Então basta ler o construtor: nos runtimes com o canal, ele contém a
|
|
51
|
+
* publicação (`onClientRequestCreatedChannel.publish`). Se um Node futuro mudar
|
|
52
|
+
* esse nome, a resposta é "não" e os ganchos assumem, o que também funciona.
|
|
53
|
+
*/
|
|
54
|
+
function constructorPublishesCreated() {
|
|
55
|
+
try {
|
|
56
|
+
return /CreatedChannel\.publish\(/.test(Function.prototype.toString.call(http.ClientRequest));
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/* ----------------------------- runtimes sem `created`: aviso antes dos headers */
|
|
63
|
+
const createdListeners = new Set();
|
|
64
|
+
// Um pedido é avisado uma vez só, pelo primeiro dos dois pontos que alcançar.
|
|
65
|
+
const announced = new WeakSet();
|
|
66
|
+
function announceCreated(request) {
|
|
67
|
+
if (createdListeners.size === 0 || typeof request !== 'object' || request === null || announced.has(request))
|
|
68
|
+
return;
|
|
69
|
+
announced.add(request);
|
|
70
|
+
for (const listener of createdListeners) {
|
|
71
|
+
try {
|
|
72
|
+
listener({ request });
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
// A instrumentação nunca derruba a chamada da aplicação.
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Os dois pontos do `node:http` que todo pedido atravessa antes dos headers irem
|
|
81
|
+
* para a rede, nos runtimes sem `created` (código congelado: 20.x, 22.0–22.11):
|
|
82
|
+
*
|
|
83
|
+
* - `Agent.prototype.addRequest`: chamado de dentro do construtor do
|
|
84
|
+
* `ClientRequest`, no mesmo contexto assíncrono de quem chamou, como o
|
|
85
|
+
* `created`. Vale para o agente global, `agent: false`, `new http.Agent()` e o
|
|
86
|
+
* `https.Agent` (que herda o método), por qualquer forma de chamada:
|
|
87
|
+
* `http.request`/`get`, `https.request`/`get`, `new ClientRequest`, imports ESM
|
|
88
|
+
* nomeados ou um `require` desestruturado antes do tracker existir.
|
|
89
|
+
* - `ClientRequest.prototype._implicitHeader`: onde os headers adiados são
|
|
90
|
+
* montados (primeiro `write`, `end` ou `flushHeaders`). Cobre o pedido sem
|
|
91
|
+
* agente (`createConnection`, como o do `ws`) e o agente que reimplementa
|
|
92
|
+
* `addRequest`; nesse caso o contexto é o de quem escreveu no pedido.
|
|
93
|
+
*
|
|
94
|
+
* Header passado como array ou com `expect` é montado no próprio construtor, e
|
|
95
|
+
* então nem o `created` nativo consegue propagar: o span sai, sem `traceparent`.
|
|
96
|
+
*/
|
|
97
|
+
const preSendHooks = [
|
|
98
|
+
{
|
|
99
|
+
target: http.Agent.prototype,
|
|
100
|
+
key: 'addRequest',
|
|
101
|
+
wrap: (original) => function addRequest(...args) {
|
|
102
|
+
announceCreated(args[0]);
|
|
103
|
+
return Reflect.apply(original, this, args);
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
target: http.ClientRequest.prototype,
|
|
108
|
+
key: '_implicitHeader',
|
|
109
|
+
wrap: (original) => function _implicitHeader(...args) {
|
|
110
|
+
announceCreated(this);
|
|
111
|
+
return Reflect.apply(original, this, args);
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
];
|
|
115
|
+
function listenPreSend(listener) {
|
|
116
|
+
createdListeners.add(listener);
|
|
117
|
+
if (createdListeners.size !== 1)
|
|
118
|
+
return;
|
|
119
|
+
for (const hook of preSendHooks) {
|
|
120
|
+
// Ainda na cadeia de uma ativação anterior (outra instrumentação embrulhou por cima): reaproveita.
|
|
121
|
+
if (hook.wrapper)
|
|
122
|
+
continue;
|
|
123
|
+
const original = hook.target[hook.key];
|
|
124
|
+
if (typeof original !== 'function')
|
|
125
|
+
continue;
|
|
126
|
+
const wrapper = hook.wrap(original);
|
|
127
|
+
try {
|
|
128
|
+
hook.target[hook.key] = wrapper;
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
133
|
+
hook.original = original;
|
|
134
|
+
hook.wrapper = wrapper;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
function unlistenPreSend(listener) {
|
|
138
|
+
if (!createdListeners.delete(listener) || createdListeners.size > 0)
|
|
139
|
+
return;
|
|
140
|
+
for (const hook of preSendHooks) {
|
|
141
|
+
// Só desfaz o que ainda é o topo. Se outra instrumentação embrulhou por cima,
|
|
142
|
+
// tirar o nosso apagaria o dela: o nosso fica na cadeia, inerte sem ouvintes.
|
|
143
|
+
if (!hook.wrapper || hook.target[hook.key] !== hook.wrapper)
|
|
144
|
+
continue;
|
|
145
|
+
hook.target[hook.key] = hook.original;
|
|
146
|
+
hook.original = undefined;
|
|
147
|
+
hook.wrapper = undefined;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
8
150
|
/**
|
|
9
151
|
* URL absoluta da requisição. `request.path` traz caminho + query, e o header
|
|
10
152
|
* `host` traz host + porta — juntos reconstroem a origem sem depender de
|
|
@@ -91,12 +233,15 @@ export function instrumentNodeHttp(core) {
|
|
|
91
233
|
}
|
|
92
234
|
}
|
|
93
235
|
// Rede de segurança: requisição abortada ou destruída sem resposta nem erro
|
|
94
|
-
// não pode deixar o span aberto para sempre.
|
|
236
|
+
// não pode deixar o span aberto para sempre. O `errorMonitor` leva o erro ao
|
|
237
|
+
// span onde o Node não publica `http.client.request.error` (antes do 20.17 e
|
|
238
|
+
// do 22.6) e só observa: um pedido sem listener de `error` continua lançando.
|
|
95
239
|
try {
|
|
240
|
+
request.on(errorMonitor, (error) => finish(request, (open) => open.setError(error)));
|
|
96
241
|
request.once('close', () => finish(request, (open) => open.setAttribute('aborted', true)));
|
|
97
242
|
}
|
|
98
243
|
catch {
|
|
99
|
-
// `once`
|
|
244
|
+
// `on`/`once` indisponíveis: o span ainda fecha por `response.finish` ou `error`.
|
|
100
245
|
}
|
|
101
246
|
};
|
|
102
247
|
const onResponse = (message) => {
|
|
@@ -116,11 +261,18 @@ export function instrumentNodeHttp(core) {
|
|
|
116
261
|
return;
|
|
117
262
|
finish(request, (span) => span.setError(error));
|
|
118
263
|
};
|
|
119
|
-
|
|
264
|
+
const native = publishesCreated();
|
|
265
|
+
if (native)
|
|
266
|
+
subscribe(CREATED, onCreated);
|
|
267
|
+
else
|
|
268
|
+
listenPreSend(onCreated);
|
|
120
269
|
subscribe(RESPONSE, onResponse);
|
|
121
270
|
subscribe(ERROR, onError);
|
|
122
271
|
return () => {
|
|
123
|
-
|
|
272
|
+
if (native)
|
|
273
|
+
unsubscribe(CREATED, onCreated);
|
|
274
|
+
else
|
|
275
|
+
unlistenPreSend(onCreated);
|
|
124
276
|
unsubscribe(RESPONSE, onResponse);
|
|
125
277
|
unsubscribe(ERROR, onError);
|
|
126
278
|
};
|
package/dist/node-http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-http.js","sourceRoot":"","sources":["../src/node-http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"node-http.js","sourceRoot":"","sources":["../src/node-http.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fg-tracker-sdk",
|
|
3
|
-
"version": "0.16.
|
|
3
|
+
"version": "0.16.1",
|
|
4
4
|
"description": "SDK de instrumentação Node para o FG Tracker (Express, NestJS, Next.js, pg, fetch), tracing distribuído, releases, check-ins de jobs, envio de logs (pino, winston, NestJS Logger) e agregados de infraestrutura (AWS SDK v3, pool de conexões, ECS, Lambda)",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"homepage": "https://github.com/FORTGROUND/fg-tracker/tree/main/packages/sdk#readme",
|