@effect/opentelemetry 0.56.1 → 0.56.3
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/dist/cjs/OtlpResource.js +7 -6
- package/dist/cjs/OtlpResource.js.map +1 -1
- package/dist/cjs/internal/otlpExporter.js +17 -16
- package/dist/cjs/internal/otlpExporter.js.map +1 -1
- package/dist/dts/OtlpResource.d.ts.map +1 -1
- package/dist/esm/OtlpResource.js +7 -6
- package/dist/esm/OtlpResource.js.map +1 -1
- package/dist/esm/internal/otlpExporter.js +17 -16
- package/dist/esm/internal/otlpExporter.js.map +1 -1
- package/package.json +3 -3
- package/src/OtlpResource.ts +8 -6
- package/src/internal/otlpExporter.ts +16 -17
package/dist/cjs/OtlpResource.js
CHANGED
|
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.unsafeServiceName = exports.unknownToAttributeValue = exports.make = exports.fromConfig = exports.entriesToAttributes = void 0;
|
|
7
|
-
var OtelSemConv = _interopRequireWildcard(require("@opentelemetry/semantic-conventions"));
|
|
8
7
|
var Arr = _interopRequireWildcard(require("effect/Array"));
|
|
9
8
|
var Config = _interopRequireWildcard(require("effect/Config"));
|
|
10
9
|
var Effect = _interopRequireWildcard(require("effect/Effect"));
|
|
@@ -14,6 +13,8 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
|
|
|
14
13
|
* @since 1.0.0
|
|
15
14
|
*/
|
|
16
15
|
|
|
16
|
+
const ATTR_SERVICE_NAME = "service.name";
|
|
17
|
+
const ATTR_SERVICE_VERSION = "service.version";
|
|
17
18
|
/**
|
|
18
19
|
* @since 1.0.0
|
|
19
20
|
* @category Constructors
|
|
@@ -21,14 +22,14 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
|
|
|
21
22
|
const make = options => {
|
|
22
23
|
const resourceAttributes = options.attributes ? entriesToAttributes(Object.entries(options.attributes)) : [];
|
|
23
24
|
resourceAttributes.push({
|
|
24
|
-
key:
|
|
25
|
+
key: ATTR_SERVICE_NAME,
|
|
25
26
|
value: {
|
|
26
27
|
stringValue: options.serviceName
|
|
27
28
|
}
|
|
28
29
|
});
|
|
29
30
|
if (options.serviceVersion) {
|
|
30
31
|
resourceAttributes.push({
|
|
31
|
-
key:
|
|
32
|
+
key: ATTR_SERVICE_VERSION,
|
|
32
33
|
value: {
|
|
33
34
|
stringValue: options.serviceVersion
|
|
34
35
|
}
|
|
@@ -59,8 +60,8 @@ const fromConfig = exports.fromConfig = /*#__PURE__*/Effect.fnUntraced(function*
|
|
|
59
60
|
...envAttrs,
|
|
60
61
|
...options?.attributes
|
|
61
62
|
})));
|
|
62
|
-
const serviceName = options?.serviceName ?? attributes[
|
|
63
|
-
const serviceVersion = options?.serviceVersion ?? attributes[
|
|
63
|
+
const serviceName = options?.serviceName ?? attributes[ATTR_SERVICE_NAME] ?? (yield* Config.string("OTEL_SERVICE_NAME"));
|
|
64
|
+
const serviceVersion = options?.serviceVersion ?? attributes[ATTR_SERVICE_VERSION] ?? (yield* Config.string("OTEL_SERVICE_VERSION").pipe(Config.withDefault(undefined)));
|
|
64
65
|
return make({
|
|
65
66
|
serviceName,
|
|
66
67
|
serviceVersion,
|
|
@@ -72,7 +73,7 @@ const fromConfig = exports.fromConfig = /*#__PURE__*/Effect.fnUntraced(function*
|
|
|
72
73
|
* @category Attributes
|
|
73
74
|
*/
|
|
74
75
|
const unsafeServiceName = resource => {
|
|
75
|
-
const serviceNameAttribute = resource.attributes.find(attr => attr.key ===
|
|
76
|
+
const serviceNameAttribute = resource.attributes.find(attr => attr.key === ATTR_SERVICE_NAME);
|
|
76
77
|
if (!serviceNameAttribute || !serviceNameAttribute.value.stringValue) {
|
|
77
78
|
throw new Error("Resource does not contain a service name");
|
|
78
79
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OtlpResource.js","names":["
|
|
1
|
+
{"version":3,"file":"OtlpResource.js","names":["Arr","_interopRequireWildcard","require","Config","Effect","Inspectable","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ATTR_SERVICE_NAME","ATTR_SERVICE_VERSION","make","options","resourceAttributes","attributes","entriesToAttributes","entries","push","key","value","stringValue","serviceName","serviceVersion","droppedAttributesCount","exports","fromConfig","fnUntraced","string","pipe","map","s","attrs","split","reduce","acc","attr","parts","length","trim","withDefault","envAttrs","undefined","orDie","unsafeServiceName","resource","serviceNameAttribute","find","Error","unknownToAttributeValue","Array","isArray","arrayValue","values","intValue","Number","isInteger","doubleValue","boolValue","toStringUnknown"],"sources":["../../src/OtlpResource.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -25,17 +25,13 @@ const policy = /*#__PURE__*/Schedule.forever.pipe(Schedule.passthrough, /*#__PUR
|
|
|
25
25
|
}));
|
|
26
26
|
/** @internal */
|
|
27
27
|
const make = exports.make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
28
|
+
const clock = yield* Effect.clock;
|
|
28
29
|
const scope = yield* Effect.scope;
|
|
29
30
|
const exportInterval = Duration.decode(options.exportInterval);
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
const retryAfter = error.response.headers["retry-after"];
|
|
35
|
-
const retryAfterSeconds = retryAfter ? parseInt(retryAfter, 10) : 5;
|
|
36
|
-
return Effect.sleep(Duration.seconds(retryAfterSeconds));
|
|
37
|
-
}), HttpClient.retryTransient({
|
|
38
|
-
schedule: policy
|
|
31
|
+
let disabledUntil = undefined;
|
|
32
|
+
const client = HttpClient.filterStatusOk(yield* HttpClient.HttpClient).pipe(HttpClient.retryTransient({
|
|
33
|
+
schedule: policy,
|
|
34
|
+
times: 3
|
|
39
35
|
}));
|
|
40
36
|
let headers = Headers.unsafeFromRecord({
|
|
41
37
|
"user-agent": `effect-opentelemetry-${options.label}/0.0.0`
|
|
@@ -48,6 +44,11 @@ const make = exports.make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
48
44
|
});
|
|
49
45
|
let buffer = [];
|
|
50
46
|
const runExport = Effect.suspend(() => {
|
|
47
|
+
if (disabledUntil !== undefined && clock.unsafeCurrentTimeMillis() < disabledUntil) {
|
|
48
|
+
return Effect.void;
|
|
49
|
+
} else if (disabledUntil !== undefined) {
|
|
50
|
+
disabledUntil = undefined;
|
|
51
|
+
}
|
|
51
52
|
const items = buffer;
|
|
52
53
|
if (options.maxBatchSize !== "disabled") {
|
|
53
54
|
if (buffer.length === 0) {
|
|
@@ -56,20 +57,20 @@ const make = exports.make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
56
57
|
buffer = [];
|
|
57
58
|
}
|
|
58
59
|
return client.execute(HttpClientRequest.bodyUnsafeJson(request, options.body(items))).pipe(Effect.asVoid, Effect.withTracerEnabled(false));
|
|
59
|
-
})
|
|
60
|
+
}).pipe(Effect.catchAllCause(cause => {
|
|
61
|
+
if (disabledUntil !== undefined) return Effect.void;
|
|
62
|
+
disabledUntil = clock.unsafeCurrentTimeMillis() + Duration.toMillis("1 minute");
|
|
63
|
+
return Effect.logDebug(`Disabling ${options.label} for 60 seconds`, cause);
|
|
64
|
+
}));
|
|
60
65
|
yield* Scope.addFinalizer(scope, runExport.pipe(Effect.ignore, Effect.interruptible, Effect.timeoutOption(options.shutdownTimeout)));
|
|
61
|
-
|
|
62
|
-
yield* Effect.sleep(exportInterval).pipe(Effect.zipRight(runExport), Effect.forever, Effect.catchAllCause(cause => {
|
|
63
|
-
disabled = true;
|
|
64
|
-
return Effect.logDebug("Failed to export", cause);
|
|
65
|
-
}), Effect.annotateLogs({
|
|
66
|
+
yield* Effect.sleep(exportInterval).pipe(Effect.zipRight(runExport), Effect.forever, Effect.annotateLogs({
|
|
66
67
|
package: "@effect/opentelemetry",
|
|
67
68
|
module: options.label
|
|
68
69
|
}), Effect.forkIn(scope), Effect.interruptible);
|
|
69
70
|
const runFork = yield* FiberSet.makeRuntime().pipe(Effect.interruptible);
|
|
70
71
|
return {
|
|
71
72
|
push(data) {
|
|
72
|
-
if (
|
|
73
|
+
if (disabledUntil !== undefined) return;
|
|
73
74
|
buffer.push(data);
|
|
74
75
|
if (options.maxBatchSize !== "disabled" && buffer.length >= options.maxBatchSize) {
|
|
75
76
|
runFork(runExport);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"otlpExporter.js","names":["Headers","_interopRequireWildcard","require","HttpClient","HttpClientError","HttpClientRequest","Duration","Effect","FiberSet","Num","Option","Schedule","Scope","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","policy","forever","pipe","passthrough","addDelay","error","isHttpClientError","_tag","response","status","retryAfter","fromNullable","headers","flatMap","parse","getOrElse","seconds","make","exports","fnUntraced","options","scope","exportInterval","decode","
|
|
1
|
+
{"version":3,"file":"otlpExporter.js","names":["Headers","_interopRequireWildcard","require","HttpClient","HttpClientError","HttpClientRequest","Duration","Effect","FiberSet","Num","Option","Schedule","Scope","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","policy","forever","pipe","passthrough","addDelay","error","isHttpClientError","_tag","response","status","retryAfter","fromNullable","headers","flatMap","parse","getOrElse","seconds","make","exports","fnUntraced","options","clock","scope","exportInterval","decode","disabledUntil","undefined","client","filterStatusOk","retryTransient","schedule","times","unsafeFromRecord","label","merge","fromInput","request","post","url","buffer","runExport","suspend","unsafeCurrentTimeMillis","void","items","maxBatchSize","length","execute","bodyUnsafeJson","body","asVoid","withTracerEnabled","catchAllCause","cause","toMillis","logDebug","addFinalizer","ignore","interruptible","timeoutOption","shutdownTimeout","sleep","zipRight","annotateLogs","package","module","forkIn","runFork","makeRuntime","push","data"],"sources":["../../../src/internal/otlpExporter.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,uBAAA,CAAAC,OAAA;AACA,IAAAE,eAAA,GAAAH,uBAAA,CAAAC,OAAA;AACA,IAAAG,iBAAA,GAAAJ,uBAAA,CAAAC,OAAA;AACA,IAAAI,QAAA,GAAAL,uBAAA,CAAAC,OAAA;AACA,IAAAK,MAAA,GAAAN,uBAAA,CAAAC,OAAA;AACA,IAAAM,QAAA,GAAAP,uBAAA,CAAAC,OAAA;AACA,IAAAO,GAAA,GAAAR,uBAAA,CAAAC,OAAA;AACA,IAAAQ,MAAA,GAAAT,uBAAA,CAAAC,OAAA;AACA,IAAAS,QAAA,GAAAV,uBAAA,CAAAC,OAAA;AACA,IAAAU,KAAA,GAAAX,uBAAA,CAAAC,OAAA;AAAqC,SAAAD,wBAAAY,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAd,uBAAA,YAAAA,CAAAY,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAErC,MAAMkB,MAAM,gBAAGrB,QAAQ,CAACsB,OAAO,CAACC,IAAI,CAClCvB,QAAQ,CAACwB,WAAW,eACpBxB,QAAQ,CAACyB,QAAQ,CAAEC,KAAK,IAAI;EAC1B,IACEjC,eAAe,CAACkC,iBAAiB,CAACD,KAAK,CAAC,IACrCA,KAAK,CAACE,IAAI,KAAK,eAAe,IAC9BF,KAAK,CAACG,QAAQ,CAACC,MAAM,KAAK,GAAG,EAChC;IACA,MAAMC,UAAU,GAAGhC,MAAM,CAACiC,YAAY,CAACN,KAAK,CAACG,QAAQ,CAACI,OAAO,CAAC,aAAa,CAAC,CAAC,CAACV,IAAI,CAChFxB,MAAM,CAACmC,OAAO,CAACpC,GAAG,CAACqC,KAAK,CAAC,EACzBpC,MAAM,CAACqC,SAAS,CAAC,MAAM,CAAC,CAAC,CAC1B;IACD,OAAOzC,QAAQ,CAAC0C,OAAO,CAACN,UAAU,CAAC;EACrC;EACA,OAAOpC,QAAQ,CAAC0C,OAAO,CAAC,CAAC,CAAC;AAC5B,CAAC,CAAC,CACH;AAED;AACO,MAAMC,IAAI,GAAAC,OAAA,CAAAD,IAAA,gBAcb1C,MAAM,CAAC4C,UAAU,CAAC,WAAUC,OAAO;EACrC,MAAMC,KAAK,GAAG,OAAO9C,MAAM,CAAC8C,KAAK;EACjC,MAAMC,KAAK,GAAG,OAAO/C,MAAM,CAAC+C,KAAK;EACjC,MAAMC,cAAc,GAAGjD,QAAQ,CAACkD,MAAM,CAACJ,OAAO,CAACG,cAAc,CAAC;EAC9D,IAAIE,aAAa,GAAuBC,SAAS;EAEjD,MAAMC,MAAM,GAAGxD,UAAU,CAACyD,cAAc,CAAC,OAAOzD,UAAU,CAACA,UAAU,CAAC,CAAC+B,IAAI,CACzE/B,UAAU,CAAC0D,cAAc,CAAC;IAAEC,QAAQ,EAAE9B,MAAM;IAAE+B,KAAK,EAAE;EAAC,CAAE,CAAC,CAC1D;EAED,IAAInB,OAAO,GAAG5C,OAAO,CAACgE,gBAAgB,CAAC;IACrC,YAAY,EAAE,wBAAwBZ,OAAO,CAACa,KAAK;GACpD,CAAC;EACF,IAAIb,OAAO,CAACR,OAAO,EAAE;IACnBA,OAAO,GAAG5C,OAAO,CAACkE,KAAK,CAAClE,OAAO,CAACmE,SAAS,CAACf,OAAO,CAACR,OAAO,CAAC,EAAEA,OAAO,CAAC;EACtE;EAEA,MAAMwB,OAAO,GAAG/D,iBAAiB,CAACgE,IAAI,CAACjB,OAAO,CAACkB,GAAG,EAAE;IAAE1B;EAAO,CAAE,CAAC;EAChE,IAAI2B,MAAM,GAAe,EAAE;EAC3B,MAAMC,SAAS,GAAGjE,MAAM,CAACkE,OAAO,CAAC,MAAK;IACpC,IAAIhB,aAAa,KAAKC,SAAS,IAAIL,KAAK,CAACqB,uBAAuB,EAAE,GAAGjB,aAAa,EAAE;MAClF,OAAOlD,MAAM,CAACoE,IAAI;IACpB,CAAC,MAAM,IAAIlB,aAAa,KAAKC,SAAS,EAAE;MACtCD,aAAa,GAAGC,SAAS;IAC3B;IACA,MAAMkB,KAAK,GAAGL,MAAM;IACpB,IAAInB,OAAO,CAACyB,YAAY,KAAK,UAAU,EAAE;MACvC,IAAIN,MAAM,CAACO,MAAM,KAAK,CAAC,EAAE;QACvB,OAAOvE,MAAM,CAACoE,IAAI;MACpB;MACAJ,MAAM,GAAG,EAAE;IACb;IACA,OAAOZ,MAAM,CAACoB,OAAO,CACnB1E,iBAAiB,CAAC2E,cAAc,CAACZ,OAAO,EAAEhB,OAAO,CAAC6B,IAAI,CAACL,KAAK,CAAC,CAAC,CAC/D,CAAC1C,IAAI,CACJ3B,MAAM,CAAC2E,MAAM,EACb3E,MAAM,CAAC4E,iBAAiB,CAAC,KAAK,CAAC,CAChC;EACH,CAAC,CAAC,CAACjD,IAAI,CACL3B,MAAM,CAAC6E,aAAa,CAAEC,KAAK,IAAI;IAC7B,IAAI5B,aAAa,KAAKC,SAAS,EAAE,OAAOnD,MAAM,CAACoE,IAAI;IACnDlB,aAAa,GAAGJ,KAAK,CAACqB,uBAAuB,EAAE,GAAGpE,QAAQ,CAACgF,QAAQ,CAAC,UAAU,CAAC;IAC/E,OAAO/E,MAAM,CAACgF,QAAQ,CAAC,aAAanC,OAAO,CAACa,KAAK,iBAAiB,EAAEoB,KAAK,CAAC;EAC5E,CAAC,CAAC,CACH;EAED,OAAOzE,KAAK,CAAC4E,YAAY,CACvBlC,KAAK,EACLkB,SAAS,CAACtC,IAAI,CACZ3B,MAAM,CAACkF,MAAM,EACblF,MAAM,CAACmF,aAAa,EACpBnF,MAAM,CAACoF,aAAa,CAACvC,OAAO,CAACwC,eAAe,CAAC,CAC9C,CACF;EAED,OAAOrF,MAAM,CAACsF,KAAK,CAACtC,cAAc,CAAC,CAACrB,IAAI,CACtC3B,MAAM,CAACuF,QAAQ,CAACtB,SAAS,CAAC,EAC1BjE,MAAM,CAAC0B,OAAO,EACd1B,MAAM,CAACwF,YAAY,CAAC;IAClBC,OAAO,EAAE,uBAAuB;IAChCC,MAAM,EAAE7C,OAAO,CAACa;GACjB,CAAC,EACF1D,MAAM,CAAC2F,MAAM,CAAC5C,KAAK,CAAC,EACpB/C,MAAM,CAACmF,aAAa,CACrB;EAED,MAAMS,OAAO,GAAG,OAAO3F,QAAQ,CAAC4F,WAAW,EAAE,CAAClE,IAAI,CAChD3B,MAAM,CAACmF,aAAa,CACrB;EACD,OAAO;IACLW,IAAIA,CAACC,IAAI;MACP,IAAI7C,aAAa,KAAKC,SAAS,EAAE;MACjCa,MAAM,CAAC8B,IAAI,CAACC,IAAI,CAAC;MACjB,IAAIlD,OAAO,CAACyB,YAAY,KAAK,UAAU,IAAIN,MAAM,CAACO,MAAM,IAAI1B,OAAO,CAACyB,YAAY,EAAE;QAChFsB,OAAO,CAAC3B,SAAS,CAAC;MACpB;IACF;GACD;AACH,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OtlpResource.d.ts","sourceRoot":"","sources":["../../src/OtlpResource.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"OtlpResource.d.ts","sourceRoot":"","sources":["../../src/OtlpResource.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAMvC;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,0BAA0B;IAC1B,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAA;IAC3B,sCAAsC;IACtC,sBAAsB,EAAE,MAAM,CAAA;CAC/B;AAED;;;GAGG;AACH,eAAO,MAAM,IAAI,GAAI,SAAS;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;CAC1D,KAAG,QAuBH,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,CACvB,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACzC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;CAC1D,GAAG,SAAS,KACV,MAAM,CAAC,MAAM,CAAC,QAAQ,CAgCX,CAAA;AAEhB;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,UAAU,QAAQ,KAAG,MAQtD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAI,SAAS,QAAQ,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KAAG,KAAK,CAAC,QAAQ,CASxF,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GAAI,OAAO,OAAO,KAAG,QAkCxD,CAAA;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,mBAAmB;IACnB,GAAG,EAAE,MAAM,CAAA;IACX,qBAAqB;IACrB,KAAK,EAAE,QAAQ,CAAA;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,2BAA2B;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,yBAAyB;IACzB,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IAC1B,wBAAwB;IACxB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,2BAA2B;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,0BAA0B;IAC1B,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,2BAA2B;IAC3B,WAAW,CAAC,EAAE,YAAY,CAAA;IAC1B,0BAA0B;IAC1B,UAAU,CAAC,EAAE,UAAU,CAAA;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,wBAAwB;IACxB,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAA;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,0BAA0B;IAC1B,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAA;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;;GAGG;AACH,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAA"}
|
package/dist/esm/OtlpResource.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @since 1.0.0
|
|
3
3
|
*/
|
|
4
|
-
import * as OtelSemConv from "@opentelemetry/semantic-conventions";
|
|
5
4
|
import * as Arr from "effect/Array";
|
|
6
5
|
import * as Config from "effect/Config";
|
|
7
6
|
import * as Effect from "effect/Effect";
|
|
8
7
|
import * as Inspectable from "effect/Inspectable";
|
|
8
|
+
const ATTR_SERVICE_NAME = "service.name";
|
|
9
|
+
const ATTR_SERVICE_VERSION = "service.version";
|
|
9
10
|
/**
|
|
10
11
|
* @since 1.0.0
|
|
11
12
|
* @category Constructors
|
|
@@ -13,14 +14,14 @@ import * as Inspectable from "effect/Inspectable";
|
|
|
13
14
|
export const make = options => {
|
|
14
15
|
const resourceAttributes = options.attributes ? entriesToAttributes(Object.entries(options.attributes)) : [];
|
|
15
16
|
resourceAttributes.push({
|
|
16
|
-
key:
|
|
17
|
+
key: ATTR_SERVICE_NAME,
|
|
17
18
|
value: {
|
|
18
19
|
stringValue: options.serviceName
|
|
19
20
|
}
|
|
20
21
|
});
|
|
21
22
|
if (options.serviceVersion) {
|
|
22
23
|
resourceAttributes.push({
|
|
23
|
-
key:
|
|
24
|
+
key: ATTR_SERVICE_VERSION,
|
|
24
25
|
value: {
|
|
25
26
|
stringValue: options.serviceVersion
|
|
26
27
|
}
|
|
@@ -50,8 +51,8 @@ export const fromConfig = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
50
51
|
...envAttrs,
|
|
51
52
|
...options?.attributes
|
|
52
53
|
})));
|
|
53
|
-
const serviceName = options?.serviceName ?? attributes[
|
|
54
|
-
const serviceVersion = options?.serviceVersion ?? attributes[
|
|
54
|
+
const serviceName = options?.serviceName ?? attributes[ATTR_SERVICE_NAME] ?? (yield* Config.string("OTEL_SERVICE_NAME"));
|
|
55
|
+
const serviceVersion = options?.serviceVersion ?? attributes[ATTR_SERVICE_VERSION] ?? (yield* Config.string("OTEL_SERVICE_VERSION").pipe(Config.withDefault(undefined)));
|
|
55
56
|
return make({
|
|
56
57
|
serviceName,
|
|
57
58
|
serviceVersion,
|
|
@@ -63,7 +64,7 @@ export const fromConfig = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
63
64
|
* @category Attributes
|
|
64
65
|
*/
|
|
65
66
|
export const unsafeServiceName = resource => {
|
|
66
|
-
const serviceNameAttribute = resource.attributes.find(attr => attr.key ===
|
|
67
|
+
const serviceNameAttribute = resource.attributes.find(attr => attr.key === ATTR_SERVICE_NAME);
|
|
67
68
|
if (!serviceNameAttribute || !serviceNameAttribute.value.stringValue) {
|
|
68
69
|
throw new Error("Resource does not contain a service name");
|
|
69
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OtlpResource.js","names":["
|
|
1
|
+
{"version":3,"file":"OtlpResource.js","names":["Arr","Config","Effect","Inspectable","ATTR_SERVICE_NAME","ATTR_SERVICE_VERSION","make","options","resourceAttributes","attributes","entriesToAttributes","Object","entries","push","key","value","stringValue","serviceName","serviceVersion","droppedAttributesCount","fromConfig","fnUntraced","string","pipe","map","s","attrs","split","reduce","acc","attr","parts","length","trim","withDefault","envAttrs","undefined","orDie","unsafeServiceName","resource","serviceNameAttribute","find","Error","unknownToAttributeValue","Array","isArray","arrayValue","values","intValue","Number","isInteger","doubleValue","boolValue","toStringUnknown"],"sources":["../../src/OtlpResource.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -18,17 +18,13 @@ const policy = /*#__PURE__*/Schedule.forever.pipe(Schedule.passthrough, /*#__PUR
|
|
|
18
18
|
}));
|
|
19
19
|
/** @internal */
|
|
20
20
|
export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
21
|
+
const clock = yield* Effect.clock;
|
|
21
22
|
const scope = yield* Effect.scope;
|
|
22
23
|
const exportInterval = Duration.decode(options.exportInterval);
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
const retryAfter = error.response.headers["retry-after"];
|
|
28
|
-
const retryAfterSeconds = retryAfter ? parseInt(retryAfter, 10) : 5;
|
|
29
|
-
return Effect.sleep(Duration.seconds(retryAfterSeconds));
|
|
30
|
-
}), HttpClient.retryTransient({
|
|
31
|
-
schedule: policy
|
|
24
|
+
let disabledUntil = undefined;
|
|
25
|
+
const client = HttpClient.filterStatusOk(yield* HttpClient.HttpClient).pipe(HttpClient.retryTransient({
|
|
26
|
+
schedule: policy,
|
|
27
|
+
times: 3
|
|
32
28
|
}));
|
|
33
29
|
let headers = Headers.unsafeFromRecord({
|
|
34
30
|
"user-agent": `effect-opentelemetry-${options.label}/0.0.0`
|
|
@@ -41,6 +37,11 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
41
37
|
});
|
|
42
38
|
let buffer = [];
|
|
43
39
|
const runExport = Effect.suspend(() => {
|
|
40
|
+
if (disabledUntil !== undefined && clock.unsafeCurrentTimeMillis() < disabledUntil) {
|
|
41
|
+
return Effect.void;
|
|
42
|
+
} else if (disabledUntil !== undefined) {
|
|
43
|
+
disabledUntil = undefined;
|
|
44
|
+
}
|
|
44
45
|
const items = buffer;
|
|
45
46
|
if (options.maxBatchSize !== "disabled") {
|
|
46
47
|
if (buffer.length === 0) {
|
|
@@ -49,20 +50,20 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
49
50
|
buffer = [];
|
|
50
51
|
}
|
|
51
52
|
return client.execute(HttpClientRequest.bodyUnsafeJson(request, options.body(items))).pipe(Effect.asVoid, Effect.withTracerEnabled(false));
|
|
52
|
-
})
|
|
53
|
+
}).pipe(Effect.catchAllCause(cause => {
|
|
54
|
+
if (disabledUntil !== undefined) return Effect.void;
|
|
55
|
+
disabledUntil = clock.unsafeCurrentTimeMillis() + Duration.toMillis("1 minute");
|
|
56
|
+
return Effect.logDebug(`Disabling ${options.label} for 60 seconds`, cause);
|
|
57
|
+
}));
|
|
53
58
|
yield* Scope.addFinalizer(scope, runExport.pipe(Effect.ignore, Effect.interruptible, Effect.timeoutOption(options.shutdownTimeout)));
|
|
54
|
-
|
|
55
|
-
yield* Effect.sleep(exportInterval).pipe(Effect.zipRight(runExport), Effect.forever, Effect.catchAllCause(cause => {
|
|
56
|
-
disabled = true;
|
|
57
|
-
return Effect.logDebug("Failed to export", cause);
|
|
58
|
-
}), Effect.annotateLogs({
|
|
59
|
+
yield* Effect.sleep(exportInterval).pipe(Effect.zipRight(runExport), Effect.forever, Effect.annotateLogs({
|
|
59
60
|
package: "@effect/opentelemetry",
|
|
60
61
|
module: options.label
|
|
61
62
|
}), Effect.forkIn(scope), Effect.interruptible);
|
|
62
63
|
const runFork = yield* FiberSet.makeRuntime().pipe(Effect.interruptible);
|
|
63
64
|
return {
|
|
64
65
|
push(data) {
|
|
65
|
-
if (
|
|
66
|
+
if (disabledUntil !== undefined) return;
|
|
66
67
|
buffer.push(data);
|
|
67
68
|
if (options.maxBatchSize !== "disabled" && buffer.length >= options.maxBatchSize) {
|
|
68
69
|
runFork(runExport);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"otlpExporter.js","names":["Headers","HttpClient","HttpClientError","HttpClientRequest","Duration","Effect","FiberSet","Num","Option","Schedule","Scope","policy","forever","pipe","passthrough","addDelay","error","isHttpClientError","_tag","response","status","retryAfter","fromNullable","headers","flatMap","parse","getOrElse","seconds","make","fnUntraced","options","scope","exportInterval","decode","
|
|
1
|
+
{"version":3,"file":"otlpExporter.js","names":["Headers","HttpClient","HttpClientError","HttpClientRequest","Duration","Effect","FiberSet","Num","Option","Schedule","Scope","policy","forever","pipe","passthrough","addDelay","error","isHttpClientError","_tag","response","status","retryAfter","fromNullable","headers","flatMap","parse","getOrElse","seconds","make","fnUntraced","options","clock","scope","exportInterval","decode","disabledUntil","undefined","client","filterStatusOk","retryTransient","schedule","times","unsafeFromRecord","label","merge","fromInput","request","post","url","buffer","runExport","suspend","unsafeCurrentTimeMillis","void","items","maxBatchSize","length","execute","bodyUnsafeJson","body","asVoid","withTracerEnabled","catchAllCause","cause","toMillis","logDebug","addFinalizer","ignore","interruptible","timeoutOption","shutdownTimeout","sleep","zipRight","annotateLogs","package","module","forkIn","runFork","makeRuntime","push","data"],"sources":["../../../src/internal/otlpExporter.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect/opentelemetry",
|
|
3
|
-
"version": "0.56.
|
|
3
|
+
"version": "0.56.3",
|
|
4
4
|
"description": "OpenTelemetry integration for Effect",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
"@opentelemetry/sdk-trace-web": "^2.0.0",
|
|
20
20
|
"@opentelemetry/sdk-logs": "^0.203.0",
|
|
21
21
|
"@opentelemetry/semantic-conventions": "^1.33.0",
|
|
22
|
-
"@effect/platform": "^0.90.
|
|
23
|
-
"effect": "^3.17.
|
|
22
|
+
"@effect/platform": "^0.90.4",
|
|
23
|
+
"effect": "^3.17.7"
|
|
24
24
|
},
|
|
25
25
|
"peerDependenciesMeta": {
|
|
26
26
|
"@opentelemetry/api": {
|
package/src/OtlpResource.ts
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @since 1.0.0
|
|
3
3
|
*/
|
|
4
|
-
import * as OtelSemConv from "@opentelemetry/semantic-conventions"
|
|
5
4
|
import * as Arr from "effect/Array"
|
|
6
5
|
import * as Config from "effect/Config"
|
|
7
6
|
import * as Effect from "effect/Effect"
|
|
8
7
|
import * as Inspectable from "effect/Inspectable"
|
|
9
8
|
|
|
9
|
+
const ATTR_SERVICE_NAME = "service.name"
|
|
10
|
+
const ATTR_SERVICE_VERSION = "service.version"
|
|
11
|
+
|
|
10
12
|
/**
|
|
11
13
|
* @since 1.0.0
|
|
12
14
|
* @category Models
|
|
@@ -31,14 +33,14 @@ export const make = (options: {
|
|
|
31
33
|
? entriesToAttributes(Object.entries(options.attributes))
|
|
32
34
|
: []
|
|
33
35
|
resourceAttributes.push({
|
|
34
|
-
key:
|
|
36
|
+
key: ATTR_SERVICE_NAME,
|
|
35
37
|
value: {
|
|
36
38
|
stringValue: options.serviceName
|
|
37
39
|
}
|
|
38
40
|
})
|
|
39
41
|
if (options.serviceVersion) {
|
|
40
42
|
resourceAttributes.push({
|
|
41
|
-
key:
|
|
43
|
+
key: ATTR_SERVICE_VERSION,
|
|
42
44
|
value: {
|
|
43
45
|
stringValue: options.serviceVersion
|
|
44
46
|
}
|
|
@@ -84,9 +86,9 @@ export const fromConfig: (
|
|
|
84
86
|
...options?.attributes
|
|
85
87
|
}))
|
|
86
88
|
)
|
|
87
|
-
const serviceName = options?.serviceName ?? attributes[
|
|
89
|
+
const serviceName = options?.serviceName ?? attributes[ATTR_SERVICE_NAME] as string ??
|
|
88
90
|
(yield* Config.string("OTEL_SERVICE_NAME"))
|
|
89
|
-
const serviceVersion = options?.serviceVersion ?? attributes[
|
|
91
|
+
const serviceVersion = options?.serviceVersion ?? attributes[ATTR_SERVICE_VERSION] as string ??
|
|
90
92
|
(yield* Config.string("OTEL_SERVICE_VERSION").pipe(Config.withDefault(undefined)))
|
|
91
93
|
return make({
|
|
92
94
|
serviceName,
|
|
@@ -101,7 +103,7 @@ export const fromConfig: (
|
|
|
101
103
|
*/
|
|
102
104
|
export const unsafeServiceName = (resource: Resource): string => {
|
|
103
105
|
const serviceNameAttribute = resource.attributes.find(
|
|
104
|
-
(attr) => attr.key ===
|
|
106
|
+
(attr) => attr.key === ATTR_SERVICE_NAME
|
|
105
107
|
)
|
|
106
108
|
if (!serviceNameAttribute || !serviceNameAttribute.value.stringValue) {
|
|
107
109
|
throw new Error("Resource does not contain a service name")
|
|
@@ -44,19 +44,13 @@ export const make: (
|
|
|
44
44
|
never,
|
|
45
45
|
HttpClient.HttpClient | Scope.Scope
|
|
46
46
|
> = Effect.fnUntraced(function*(options) {
|
|
47
|
+
const clock = yield* Effect.clock
|
|
47
48
|
const scope = yield* Effect.scope
|
|
48
49
|
const exportInterval = Duration.decode(options.exportInterval)
|
|
50
|
+
let disabledUntil: number | undefined = undefined
|
|
49
51
|
|
|
50
52
|
const client = HttpClient.filterStatusOk(yield* HttpClient.HttpClient).pipe(
|
|
51
|
-
HttpClient.
|
|
52
|
-
if (error._tag !== "ResponseError" || error.response.status !== 429) {
|
|
53
|
-
return Effect.void
|
|
54
|
-
}
|
|
55
|
-
const retryAfter = error.response.headers["retry-after"]
|
|
56
|
-
const retryAfterSeconds = retryAfter ? parseInt(retryAfter, 10) : 5
|
|
57
|
-
return Effect.sleep(Duration.seconds(retryAfterSeconds))
|
|
58
|
-
}),
|
|
59
|
-
HttpClient.retryTransient({ schedule: policy })
|
|
53
|
+
HttpClient.retryTransient({ schedule: policy, times: 3 })
|
|
60
54
|
)
|
|
61
55
|
|
|
62
56
|
let headers = Headers.unsafeFromRecord({
|
|
@@ -69,6 +63,11 @@ export const make: (
|
|
|
69
63
|
const request = HttpClientRequest.post(options.url, { headers })
|
|
70
64
|
let buffer: Array<any> = []
|
|
71
65
|
const runExport = Effect.suspend(() => {
|
|
66
|
+
if (disabledUntil !== undefined && clock.unsafeCurrentTimeMillis() < disabledUntil) {
|
|
67
|
+
return Effect.void
|
|
68
|
+
} else if (disabledUntil !== undefined) {
|
|
69
|
+
disabledUntil = undefined
|
|
70
|
+
}
|
|
72
71
|
const items = buffer
|
|
73
72
|
if (options.maxBatchSize !== "disabled") {
|
|
74
73
|
if (buffer.length === 0) {
|
|
@@ -82,7 +81,13 @@ export const make: (
|
|
|
82
81
|
Effect.asVoid,
|
|
83
82
|
Effect.withTracerEnabled(false)
|
|
84
83
|
)
|
|
85
|
-
})
|
|
84
|
+
}).pipe(
|
|
85
|
+
Effect.catchAllCause((cause) => {
|
|
86
|
+
if (disabledUntil !== undefined) return Effect.void
|
|
87
|
+
disabledUntil = clock.unsafeCurrentTimeMillis() + Duration.toMillis("1 minute")
|
|
88
|
+
return Effect.logDebug(`Disabling ${options.label} for 60 seconds`, cause)
|
|
89
|
+
})
|
|
90
|
+
)
|
|
86
91
|
|
|
87
92
|
yield* Scope.addFinalizer(
|
|
88
93
|
scope,
|
|
@@ -93,15 +98,9 @@ export const make: (
|
|
|
93
98
|
)
|
|
94
99
|
)
|
|
95
100
|
|
|
96
|
-
let disabled = false
|
|
97
|
-
|
|
98
101
|
yield* Effect.sleep(exportInterval).pipe(
|
|
99
102
|
Effect.zipRight(runExport),
|
|
100
103
|
Effect.forever,
|
|
101
|
-
Effect.catchAllCause((cause) => {
|
|
102
|
-
disabled = true
|
|
103
|
-
return Effect.logDebug("Failed to export", cause)
|
|
104
|
-
}),
|
|
105
104
|
Effect.annotateLogs({
|
|
106
105
|
package: "@effect/opentelemetry",
|
|
107
106
|
module: options.label
|
|
@@ -115,7 +114,7 @@ export const make: (
|
|
|
115
114
|
)
|
|
116
115
|
return {
|
|
117
116
|
push(data) {
|
|
118
|
-
if (
|
|
117
|
+
if (disabledUntil !== undefined) return
|
|
119
118
|
buffer.push(data)
|
|
120
119
|
if (options.maxBatchSize !== "disabled" && buffer.length >= options.maxBatchSize) {
|
|
121
120
|
runFork(runExport)
|