@dxos/observability 0.5.9-main.a2de4fa → 0.5.9-main.aa46ff0

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.
Files changed (47) hide show
  1. package/dist/lib/browser/{chunk-VHY5QSKY.mjs → chunk-HKNRDUTP.mjs} +23 -81
  2. package/dist/lib/browser/chunk-HKNRDUTP.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +1 -1
  4. package/dist/lib/browser/meta.json +1 -1
  5. package/dist/lib/browser/{observability-QSVYYZQL.mjs → observability-6FYBCIL6.mjs} +2 -2
  6. package/dist/lib/node/{chunk-2JAUQJ4Y.cjs → chunk-6QQAPUDU.cjs} +26 -84
  7. package/dist/lib/node/chunk-6QQAPUDU.cjs.map +7 -0
  8. package/dist/lib/node/index.cjs +15 -15
  9. package/dist/lib/node/index.cjs.map +1 -1
  10. package/dist/lib/node/meta.json +1 -1
  11. package/dist/lib/node/{observability-XBZZCSZG.cjs → observability-7TFOBOTA.cjs} +6 -6
  12. package/dist/lib/node/{observability-XBZZCSZG.cjs.map → observability-7TFOBOTA.cjs.map} +2 -2
  13. package/dist/types/src/cli-observability-secrets.json +1 -3
  14. package/dist/types/src/observability.d.ts +0 -3
  15. package/dist/types/src/observability.d.ts.map +1 -1
  16. package/dist/types/src/observability.js +1 -48
  17. package/dist/types/src/observability.js.map +1 -1
  18. package/package.json +15 -23
  19. package/src/cli-observability-secrets.json +1 -3
  20. package/src/observability.ts +0 -55
  21. package/dist/lib/browser/chunk-VHY5QSKY.mjs.map +0 -7
  22. package/dist/lib/browser/otel-3B5NJ7JN.mjs +0 -127
  23. package/dist/lib/browser/otel-3B5NJ7JN.mjs.map +0 -7
  24. package/dist/lib/node/chunk-2JAUQJ4Y.cjs.map +0 -7
  25. package/dist/lib/node/otel-WOKFA2PO.cjs +0 -149
  26. package/dist/lib/node/otel-WOKFA2PO.cjs.map +0 -7
  27. package/dist/types/src/otel/index.d.ts +0 -4
  28. package/dist/types/src/otel/index.d.ts.map +0 -1
  29. package/dist/types/src/otel/index.js +0 -23
  30. package/dist/types/src/otel/index.js.map +0 -1
  31. package/dist/types/src/otel/logs.d.ts +0 -8
  32. package/dist/types/src/otel/logs.d.ts.map +0 -1
  33. package/dist/types/src/otel/logs.js +0 -64
  34. package/dist/types/src/otel/logs.js.map +0 -1
  35. package/dist/types/src/otel/metrics.d.ts +0 -11
  36. package/dist/types/src/otel/metrics.d.ts.map +0 -1
  37. package/dist/types/src/otel/metrics.js +0 -64
  38. package/dist/types/src/otel/metrics.js.map +0 -1
  39. package/dist/types/src/otel/otel.d.ts +0 -10
  40. package/dist/types/src/otel/otel.d.ts.map +0 -1
  41. package/dist/types/src/otel/otel.js +0 -6
  42. package/dist/types/src/otel/otel.js.map +0 -1
  43. package/src/otel/index.ts +0 -7
  44. package/src/otel/logs.ts +0 -69
  45. package/src/otel/metrics.ts +0 -79
  46. package/src/otel/otel.ts +0 -11
  47. /package/dist/lib/browser/{observability-QSVYYZQL.mjs.map → observability-6FYBCIL6.mjs.map} +0 -0
@@ -1,149 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var otel_WOKFA2PO_exports = {};
20
- __export(otel_WOKFA2PO_exports, {
21
- OtelLogs: () => OtelLogs,
22
- OtelMetrics: () => OtelMetrics
23
- });
24
- module.exports = __toCommonJS(otel_WOKFA2PO_exports);
25
- var import_api = require("@opentelemetry/api");
26
- var import_api_logs = require("@opentelemetry/api-logs");
27
- var import_exporter_logs_otlp_http = require("@opentelemetry/exporter-logs-otlp-http");
28
- var import_resources = require("@opentelemetry/resources");
29
- var import_sdk_logs = require("@opentelemetry/sdk-logs");
30
- var import_semantic_conventions = require("@opentelemetry/semantic-conventions");
31
- var import_log = require("@dxos/log");
32
- var import_exporter_metrics_otlp_http = require("@opentelemetry/exporter-metrics-otlp-http");
33
- var import_resources2 = require("@opentelemetry/resources");
34
- var import_sdk_metrics = require("@opentelemetry/sdk-metrics");
35
- var import_semantic_conventions2 = require("@opentelemetry/semantic-conventions");
36
- var OtelLogs = class {
37
- constructor(options) {
38
- this.options = options;
39
- import_api.diag.setLogger(new import_api.DiagConsoleLogger(), import_api.DiagLogLevel.INFO);
40
- }
41
- getLogProcessor() {
42
- const resource = import_resources.Resource.default().merge(new import_resources.Resource({
43
- [import_semantic_conventions.SEMRESATTRS_SERVICE_NAME]: this.options.serviceName,
44
- [import_semantic_conventions.SEMRESATTRS_SERVICE_VERSION]: this.options.serviceVersion
45
- }));
46
- const collectorOptions = {
47
- url: this.options.endpoint + "/v1/logs",
48
- headers: {
49
- Authorization: this.options.authorizationHeader
50
- },
51
- concurrencyLimit: 1
52
- };
53
- const logExporter = new import_exporter_logs_otlp_http.OTLPLogExporter(collectorOptions);
54
- const loggerProvider = new import_sdk_logs.LoggerProvider({
55
- resource
56
- });
57
- loggerProvider.addLogRecordProcessor(new import_sdk_logs.BatchLogRecordProcessor(logExporter));
58
- const logger = loggerProvider.getLogger("dxos-observability", "0.0.0");
59
- return (config, entry) => {
60
- const { level, message, context, error } = entry;
61
- if (!(0, import_log.shouldLog)(entry, config.filters)) {
62
- return;
63
- }
64
- logger.emit({
65
- severityNumber: convertLevel(level),
66
- body: {
67
- message,
68
- error: error ?? void 0,
69
- ...context
70
- },
71
- attributes: this.options.getTags()
72
- });
73
- };
74
- }
75
- };
76
- var convertLevel = (level) => {
77
- switch (level) {
78
- case import_log.LogLevel.DEBUG:
79
- return import_api_logs.SeverityNumber.DEBUG;
80
- case import_log.LogLevel.INFO:
81
- return import_api_logs.SeverityNumber.INFO;
82
- case import_log.LogLevel.WARN:
83
- return import_api_logs.SeverityNumber.WARN;
84
- case import_log.LogLevel.ERROR:
85
- return import_api_logs.SeverityNumber.ERROR;
86
- default:
87
- return import_api_logs.SeverityNumber.ERROR;
88
- }
89
- };
90
- var EXPORT_INTERVAL = 60 * 1e3;
91
- var OtelMetrics = class {
92
- constructor(options) {
93
- this.options = options;
94
- this._gauges = /* @__PURE__ */ new Map();
95
- const resource = import_resources2.Resource.default().merge(new import_resources2.Resource({
96
- [import_semantic_conventions2.SEMRESATTRS_SERVICE_NAME]: this.options.serviceName,
97
- [import_semantic_conventions2.SEMRESATTRS_SERVICE_VERSION]: this.options.serviceVersion
98
- }));
99
- const grafanaMetricReader = new import_sdk_metrics.PeriodicExportingMetricReader({
100
- exporter: new import_exporter_metrics_otlp_http.OTLPMetricExporter({
101
- url: this.options.endpoint + "/v1/metrics",
102
- headers: {
103
- Authorization: this.options.authorizationHeader
104
- }
105
- }),
106
- exportIntervalMillis: EXPORT_INTERVAL
107
- });
108
- this._meterProvider = new import_sdk_metrics.MeterProvider({
109
- resource,
110
- readers: [
111
- grafanaMetricReader
112
- ]
113
- });
114
- }
115
- gauge(name, value, tags) {
116
- const meter = this._meterProvider.getMeter("dxos-observability");
117
- const observableGauge = this._gauges.get(name);
118
- const mergedTags = {
119
- ...this.options.getTags(),
120
- ...tags
121
- };
122
- if (!observableGauge) {
123
- const synchronousGauge = {
124
- gauge: meter.createObservableGauge(name),
125
- nextValue: value,
126
- nextTags: mergedTags
127
- };
128
- synchronousGauge.gauge.addCallback((observerResult) => {
129
- observerResult.observe(synchronousGauge.nextValue, synchronousGauge.nextTags);
130
- });
131
- this._gauges.set(name, synchronousGauge);
132
- } else {
133
- observableGauge.nextTags = mergedTags;
134
- observableGauge.nextValue = value;
135
- }
136
- }
137
- flush() {
138
- return this._meterProvider.forceFlush();
139
- }
140
- close() {
141
- return this._meterProvider.shutdown();
142
- }
143
- };
144
- // Annotate the CommonJS export names for ESM import in node:
145
- 0 && (module.exports = {
146
- OtelLogs,
147
- OtelMetrics
148
- });
149
- //# sourceMappingURL=otel-WOKFA2PO.cjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/otel/logs.ts", "../../../src/otel/metrics.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { diag, DiagConsoleLogger, DiagLogLevel } from '@opentelemetry/api';\nimport { SeverityNumber } from '@opentelemetry/api-logs';\nimport { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-http';\nimport { Resource } from '@opentelemetry/resources';\nimport { LoggerProvider, BatchLogRecordProcessor } from '@opentelemetry/sdk-logs';\nimport { SEMRESATTRS_SERVICE_NAME, SEMRESATTRS_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';\n\nimport { type LogConfig, type LogEntry, LogLevel, type LogProcessor, shouldLog } from '@dxos/log';\n\nimport { type OtelOptions } from './otel';\n\nexport class OtelLogs {\n constructor(private readonly options: OtelOptions) {\n diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.INFO);\n }\n\n getLogProcessor(): LogProcessor {\n const resource = Resource.default().merge(\n new Resource({\n [SEMRESATTRS_SERVICE_NAME]: this.options.serviceName,\n [SEMRESATTRS_SERVICE_VERSION]: this.options.serviceVersion,\n }),\n );\n const collectorOptions = {\n url: this.options.endpoint + '/v1/logs',\n headers: {\n Authorization: this.options.authorizationHeader,\n },\n concurrencyLimit: 1, // an optional limit on pending requests\n };\n const logExporter = new OTLPLogExporter(collectorOptions);\n const loggerProvider = new LoggerProvider({ resource });\n\n loggerProvider.addLogRecordProcessor(new BatchLogRecordProcessor(logExporter));\n\n // TODO: namespace?\n const logger = loggerProvider.getLogger('dxos-observability', '0.0.0');\n return (config: LogConfig, entry: LogEntry) => {\n const { level, message, context, error } = entry;\n if (!shouldLog(entry, config.filters)) {\n return;\n }\n logger.emit({\n severityNumber: convertLevel(level),\n body: { message, error: error ?? undefined, ...context },\n attributes: this.options.getTags(),\n });\n };\n }\n}\n\nconst convertLevel = (level: LogLevel): SeverityNumber => {\n switch (level) {\n case LogLevel.DEBUG:\n return SeverityNumber.DEBUG;\n case LogLevel.INFO:\n return SeverityNumber.INFO;\n case LogLevel.WARN:\n return SeverityNumber.WARN;\n case LogLevel.ERROR:\n return SeverityNumber.ERROR;\n default:\n return SeverityNumber.ERROR;\n }\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Attributes, type ObservableGauge } from '@opentelemetry/api';\nimport { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';\nimport { Resource } from '@opentelemetry/resources';\nimport { MeterProvider, PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics';\nimport { SEMRESATTRS_SERVICE_NAME, SEMRESATTRS_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';\n\nimport { type OtelOptions } from './otel';\n\nconst EXPORT_INTERVAL = 60 * 1000;\n\ntype SynchronousGauge = {\n gauge: ObservableGauge<Attributes>;\n nextValue: number;\n nextTags?: any;\n};\n\nexport class OtelMetrics {\n private _meterProvider: MeterProvider;\n private _gauges = new Map<string, SynchronousGauge>();\n\n constructor(private readonly options: OtelOptions) {\n // TODO: improve error handling/logging\n // https://github.com/open-telemetry/opentelemetry-js/issues/4823\n const resource = Resource.default().merge(\n new Resource({\n [SEMRESATTRS_SERVICE_NAME]: this.options.serviceName,\n [SEMRESATTRS_SERVICE_VERSION]: this.options.serviceVersion,\n }),\n );\n\n const grafanaMetricReader = new PeriodicExportingMetricReader({\n exporter: new OTLPMetricExporter({\n url: this.options.endpoint + '/v1/metrics',\n headers: {\n Authorization: this.options.authorizationHeader,\n },\n }),\n exportIntervalMillis: EXPORT_INTERVAL,\n });\n\n this._meterProvider = new MeterProvider({\n resource,\n readers: [grafanaMetricReader],\n });\n }\n\n gauge(name: string, value: number, tags?: any) {\n const meter = this._meterProvider.getMeter('dxos-observability');\n const observableGauge = this._gauges.get(name);\n\n const mergedTags = { ...this.options.getTags(), ...tags };\n if (!observableGauge) {\n const synchronousGauge = {\n gauge: meter.createObservableGauge(name),\n nextValue: value,\n nextTags: mergedTags,\n };\n synchronousGauge.gauge.addCallback((observerResult) => {\n observerResult.observe(synchronousGauge.nextValue, synchronousGauge.nextTags);\n });\n this._gauges.set(name, synchronousGauge);\n } else {\n observableGauge.nextTags = mergedTags;\n observableGauge.nextValue = value;\n }\n }\n\n flush() {\n return this._meterProvider.forceFlush();\n }\n\n close() {\n return this._meterProvider.shutdown();\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAIA,iBAAsD;AACtD,sBAA+B;AAC/B,qCAAgC;AAChC,uBAAyB;AACzB,sBAAwD;AACxD,kCAAsE;AAEtE,iBAAsF;ACNtF,wCAAmC;AACnC,IAAAA,oBAAyB;AACzB,yBAA6D;AAC7D,IAAAC,+BAAsE;ADO/D,IAAMC,WAAN,MAAMA;EACXC,YAA6BC,SAAsB;SAAtBA,UAAAA;AAC3BC,oBAAKC,UAAU,IAAIC,6BAAAA,GAAqBC,wBAAaC,IAAI;EAC3D;EAEAC,kBAAgC;AAC9B,UAAMC,WAAWC,0BAASC,QAAO,EAAGC,MAClC,IAAIF,0BAAS;MACX,CAACG,oDAAAA,GAA2B,KAAKX,QAAQY;MACzC,CAACC,uDAAAA,GAA8B,KAAKb,QAAQc;IAC9C,CAAA,CAAA;AAEF,UAAMC,mBAAmB;MACvBC,KAAK,KAAKhB,QAAQiB,WAAW;MAC7BC,SAAS;QACPC,eAAe,KAAKnB,QAAQoB;MAC9B;MACAC,kBAAkB;IACpB;AACA,UAAMC,cAAc,IAAIC,+CAAgBR,gBAAAA;AACxC,UAAMS,iBAAiB,IAAIC,+BAAe;MAAElB;IAAS,CAAA;AAErDiB,mBAAeE,sBAAsB,IAAIC,wCAAwBL,WAAAA,CAAAA;AAGjE,UAAMM,SAASJ,eAAeK,UAAU,sBAAsB,OAAA;AAC9D,WAAO,CAACC,QAAmBC,UAAAA;AACzB,YAAM,EAAEC,OAAOC,SAASC,SAASC,MAAK,IAAKJ;AAC3C,UAAI,KAACK,sBAAUL,OAAOD,OAAOO,OAAO,GAAG;AACrC;MACF;AACAT,aAAOU,KAAK;QACVC,gBAAgBC,aAAaR,KAAAA;QAC7BS,MAAM;UAAER;UAASE,OAAOA,SAASO;UAAW,GAAGR;QAAQ;QACvDS,YAAY,KAAK3C,QAAQ4C,QAAO;MAClC,CAAA;IACF;EACF;AACF;AAEA,IAAMJ,eAAe,CAACR,UAAAA;AACpB,UAAQA,OAAAA;IACN,KAAKa,oBAASC;AACZ,aAAOC,+BAAeD;IACxB,KAAKD,oBAASxC;AACZ,aAAO0C,+BAAe1C;IACxB,KAAKwC,oBAASG;AACZ,aAAOD,+BAAeC;IACxB,KAAKH,oBAASI;AACZ,aAAOF,+BAAeE;IACxB;AACE,aAAOF,+BAAeE;EAC1B;AACF;ACxDA,IAAMC,kBAAkB,KAAK;AAQtB,IAAMC,cAAN,MAAMA;EAIXpD,YAA6BC,SAAsB;SAAtBA,UAAAA;SAFrBoD,UAAU,oBAAIC,IAAAA;AAKpB,UAAM9C,WAAWC,kBAAAA,SAASC,QAAO,EAAGC,MAClC,IAAIF,kBAAAA,SAAS;MACX,CAACG,6BAAAA,wBAAAA,GAA2B,KAAKX,QAAQY;MACzC,CAACC,6BAAAA,2BAAAA,GAA8B,KAAKb,QAAQc;IAC9C,CAAA,CAAA;AAGF,UAAMwC,sBAAsB,IAAIC,iDAA8B;MAC5DC,UAAU,IAAIC,qDAAmB;QAC/BzC,KAAK,KAAKhB,QAAQiB,WAAW;QAC7BC,SAAS;UACPC,eAAe,KAAKnB,QAAQoB;QAC9B;MACF,CAAA;MACAsC,sBAAsBR;IACxB,CAAA;AAEA,SAAKS,iBAAiB,IAAIC,iCAAc;MACtCrD;MACAsD,SAAS;QAACP;;IACZ,CAAA;EACF;EAEAQ,MAAMC,MAAcC,OAAeC,MAAY;AAC7C,UAAMC,QAAQ,KAAKP,eAAeQ,SAAS,oBAAA;AAC3C,UAAMC,kBAAkB,KAAKhB,QAAQiB,IAAIN,IAAAA;AAEzC,UAAMO,aAAa;MAAE,GAAG,KAAKtE,QAAQ4C,QAAO;MAAI,GAAGqB;IAAK;AACxD,QAAI,CAACG,iBAAiB;AACpB,YAAMG,mBAAmB;QACvBT,OAAOI,MAAMM,sBAAsBT,IAAAA;QACnCU,WAAWT;QACXU,UAAUJ;MACZ;AACAC,uBAAiBT,MAAMa,YAAY,CAACC,mBAAAA;AAClCA,uBAAeC,QAAQN,iBAAiBE,WAAWF,iBAAiBG,QAAQ;MAC9E,CAAA;AACA,WAAKtB,QAAQ0B,IAAIf,MAAMQ,gBAAAA;IACzB,OAAO;AACLH,sBAAgBM,WAAWJ;AAC3BF,sBAAgBK,YAAYT;IAC9B;EACF;EAEAe,QAAQ;AACN,WAAO,KAAKpB,eAAeqB,WAAU;EACvC;EAEAC,QAAQ;AACN,WAAO,KAAKtB,eAAeuB,SAAQ;EACrC;AACF;",
6
- "names": ["import_resources", "import_semantic_conventions", "OtelLogs", "constructor", "options", "diag", "setLogger", "DiagConsoleLogger", "DiagLogLevel", "INFO", "getLogProcessor", "resource", "Resource", "default", "merge", "SEMRESATTRS_SERVICE_NAME", "serviceName", "SEMRESATTRS_SERVICE_VERSION", "serviceVersion", "collectorOptions", "url", "endpoint", "headers", "Authorization", "authorizationHeader", "concurrencyLimit", "logExporter", "OTLPLogExporter", "loggerProvider", "LoggerProvider", "addLogRecordProcessor", "BatchLogRecordProcessor", "logger", "getLogger", "config", "entry", "level", "message", "context", "error", "shouldLog", "filters", "emit", "severityNumber", "convertLevel", "body", "undefined", "attributes", "getTags", "LogLevel", "DEBUG", "SeverityNumber", "WARN", "ERROR", "EXPORT_INTERVAL", "OtelMetrics", "_gauges", "Map", "grafanaMetricReader", "PeriodicExportingMetricReader", "exporter", "OTLPMetricExporter", "exportIntervalMillis", "_meterProvider", "MeterProvider", "readers", "gauge", "name", "value", "tags", "meter", "getMeter", "observableGauge", "get", "mergedTags", "synchronousGauge", "createObservableGauge", "nextValue", "nextTags", "addCallback", "observerResult", "observe", "set", "flush", "forceFlush", "close", "shutdown"]
7
- }
@@ -1,4 +0,0 @@
1
- export * from './otel';
2
- export * from './logs';
3
- export * from './metrics';
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/otel/index.ts"],"names":[],"mappings":"AAIA,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC"}
@@ -1,23 +0,0 @@
1
- "use strict";
2
- //
3
- // Copyright 2024 DXOS.org
4
- //
5
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- var desc = Object.getOwnPropertyDescriptor(m, k);
8
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
- desc = { enumerable: true, get: function() { return m[k]; } };
10
- }
11
- Object.defineProperty(o, k2, desc);
12
- }) : (function(o, m, k, k2) {
13
- if (k2 === undefined) k2 = k;
14
- o[k2] = m[k];
15
- }));
16
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
- };
19
- Object.defineProperty(exports, "__esModule", { value: true });
20
- __exportStar(require("./otel"), exports);
21
- __exportStar(require("./logs"), exports);
22
- __exportStar(require("./metrics"), exports);
23
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/otel/index.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;;;;;;;;;;;AAEF,yCAAuB;AACvB,yCAAuB;AACvB,4CAA0B"}
@@ -1,8 +0,0 @@
1
- import { type LogProcessor } from '@dxos/log';
2
- import { type OtelOptions } from './otel';
3
- export declare class OtelLogs {
4
- private readonly options;
5
- constructor(options: OtelOptions);
6
- getLogProcessor(): LogProcessor;
7
- }
8
- //# sourceMappingURL=logs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../../../src/otel/logs.ts"],"names":[],"mappings":"AAWA,OAAO,EAA2C,KAAK,YAAY,EAAa,MAAM,WAAW,CAAC;AAElG,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,QAAQ,CAAC;AAE1C,qBAAa,QAAQ;IACP,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,WAAW;IAIjD,eAAe,IAAI,YAAY;CAiChC"}
@@ -1,64 +0,0 @@
1
- "use strict";
2
- //
3
- // Copyright 2024 DXOS.org
4
- //
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.OtelLogs = void 0;
7
- const api_1 = require("@opentelemetry/api");
8
- const api_logs_1 = require("@opentelemetry/api-logs");
9
- const exporter_logs_otlp_http_1 = require("@opentelemetry/exporter-logs-otlp-http");
10
- const resources_1 = require("@opentelemetry/resources");
11
- const sdk_logs_1 = require("@opentelemetry/sdk-logs");
12
- const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
13
- const log_1 = require("@dxos/log");
14
- class OtelLogs {
15
- constructor(options) {
16
- this.options = options;
17
- api_1.diag.setLogger(new api_1.DiagConsoleLogger(), api_1.DiagLogLevel.INFO);
18
- }
19
- getLogProcessor() {
20
- const resource = resources_1.Resource.default().merge(new resources_1.Resource({
21
- [semantic_conventions_1.SEMRESATTRS_SERVICE_NAME]: this.options.serviceName,
22
- [semantic_conventions_1.SEMRESATTRS_SERVICE_VERSION]: this.options.serviceVersion,
23
- }));
24
- const collectorOptions = {
25
- url: this.options.endpoint + '/v1/logs',
26
- headers: {
27
- Authorization: this.options.authorizationHeader,
28
- },
29
- concurrencyLimit: 1, // an optional limit on pending requests
30
- };
31
- const logExporter = new exporter_logs_otlp_http_1.OTLPLogExporter(collectorOptions);
32
- const loggerProvider = new sdk_logs_1.LoggerProvider({ resource });
33
- loggerProvider.addLogRecordProcessor(new sdk_logs_1.BatchLogRecordProcessor(logExporter));
34
- // TODO: namespace?
35
- const logger = loggerProvider.getLogger('dxos-observability', '0.0.0');
36
- return (config, entry) => {
37
- const { level, message, context, error } = entry;
38
- if (!(0, log_1.shouldLog)(entry, config.filters)) {
39
- return;
40
- }
41
- logger.emit({
42
- severityNumber: convertLevel(level),
43
- body: { message, error: error !== null && error !== void 0 ? error : undefined, ...context },
44
- attributes: this.options.getTags(),
45
- });
46
- };
47
- }
48
- }
49
- exports.OtelLogs = OtelLogs;
50
- const convertLevel = (level) => {
51
- switch (level) {
52
- case log_1.LogLevel.DEBUG:
53
- return api_logs_1.SeverityNumber.DEBUG;
54
- case log_1.LogLevel.INFO:
55
- return api_logs_1.SeverityNumber.INFO;
56
- case log_1.LogLevel.WARN:
57
- return api_logs_1.SeverityNumber.WARN;
58
- case log_1.LogLevel.ERROR:
59
- return api_logs_1.SeverityNumber.ERROR;
60
- default:
61
- return api_logs_1.SeverityNumber.ERROR;
62
- }
63
- };
64
- //# sourceMappingURL=logs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../../src/otel/logs.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;AAEF,4CAA2E;AAC3E,sDAAyD;AACzD,oFAAyE;AACzE,wDAAoD;AACpD,sDAAkF;AAClF,8EAA4G;AAE5G,mCAAkG;AAIlG,MAAa,QAAQ;IACnB,YAA6B,OAAoB;QAApB,YAAO,GAAP,OAAO,CAAa;QAC/C,UAAI,CAAC,SAAS,CAAC,IAAI,uBAAiB,EAAE,EAAE,kBAAY,CAAC,IAAI,CAAC,CAAC;IAC7D,CAAC;IAED,eAAe;QACb,MAAM,QAAQ,GAAG,oBAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,CACvC,IAAI,oBAAQ,CAAC;YACX,CAAC,+CAAwB,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;YACpD,CAAC,kDAA2B,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc;SAC3D,CAAC,CACH,CAAC;QACF,MAAM,gBAAgB,GAAG;YACvB,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,UAAU;YACvC,OAAO,EAAE;gBACP,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB;aAChD;YACD,gBAAgB,EAAE,CAAC,EAAE,wCAAwC;SAC9D,CAAC;QACF,MAAM,WAAW,GAAG,IAAI,yCAAe,CAAC,gBAAgB,CAAC,CAAC;QAC1D,MAAM,cAAc,GAAG,IAAI,yBAAc,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QAExD,cAAc,CAAC,qBAAqB,CAAC,IAAI,kCAAuB,CAAC,WAAW,CAAC,CAAC,CAAC;QAE/E,mBAAmB;QACnB,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;QACvE,OAAO,CAAC,MAAiB,EAAE,KAAe,EAAE,EAAE;YAC5C,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;YACjD,IAAI,CAAC,IAAA,eAAS,EAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtC,OAAO;YACT,CAAC;YACD,MAAM,CAAC,IAAI,CAAC;gBACV,cAAc,EAAE,YAAY,CAAC,KAAK,CAAC;gBACnC,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,SAAS,EAAE,GAAG,OAAO,EAAE;gBACxD,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;aACnC,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC;CACF;AAtCD,4BAsCC;AAED,MAAM,YAAY,GAAG,CAAC,KAAe,EAAkB,EAAE;IACvD,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,cAAQ,CAAC,KAAK;YACjB,OAAO,yBAAc,CAAC,KAAK,CAAC;QAC9B,KAAK,cAAQ,CAAC,IAAI;YAChB,OAAO,yBAAc,CAAC,IAAI,CAAC;QAC7B,KAAK,cAAQ,CAAC,IAAI;YAChB,OAAO,yBAAc,CAAC,IAAI,CAAC;QAC7B,KAAK,cAAQ,CAAC,KAAK;YACjB,OAAO,yBAAc,CAAC,KAAK,CAAC;QAC9B;YACE,OAAO,yBAAc,CAAC,KAAK,CAAC;IAChC,CAAC;AACH,CAAC,CAAC"}
@@ -1,11 +0,0 @@
1
- import { type OtelOptions } from './otel';
2
- export declare class OtelMetrics {
3
- private readonly options;
4
- private _meterProvider;
5
- private _gauges;
6
- constructor(options: OtelOptions);
7
- gauge(name: string, value: number, tags?: any): void;
8
- flush(): Promise<void>;
9
- close(): Promise<void>;
10
- }
11
- //# sourceMappingURL=metrics.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../../src/otel/metrics.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,QAAQ,CAAC;AAU1C,qBAAa,WAAW;IAIV,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,OAAO,CAAuC;gBAEzB,OAAO,EAAE,WAAW;IA0BjD,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;IAqB7C,KAAK;IAIL,KAAK;CAGN"}
@@ -1,64 +0,0 @@
1
- "use strict";
2
- //
3
- // Copyright 2024 DXOS.org
4
- //
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.OtelMetrics = void 0;
7
- const exporter_metrics_otlp_http_1 = require("@opentelemetry/exporter-metrics-otlp-http");
8
- const resources_1 = require("@opentelemetry/resources");
9
- const sdk_metrics_1 = require("@opentelemetry/sdk-metrics");
10
- const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
11
- const EXPORT_INTERVAL = 60 * 1000;
12
- class OtelMetrics {
13
- constructor(options) {
14
- this.options = options;
15
- this._gauges = new Map();
16
- // TODO: improve error handling/logging
17
- // https://github.com/open-telemetry/opentelemetry-js/issues/4823
18
- const resource = resources_1.Resource.default().merge(new resources_1.Resource({
19
- [semantic_conventions_1.SEMRESATTRS_SERVICE_NAME]: this.options.serviceName,
20
- [semantic_conventions_1.SEMRESATTRS_SERVICE_VERSION]: this.options.serviceVersion,
21
- }));
22
- const grafanaMetricReader = new sdk_metrics_1.PeriodicExportingMetricReader({
23
- exporter: new exporter_metrics_otlp_http_1.OTLPMetricExporter({
24
- url: this.options.endpoint + '/v1/metrics',
25
- headers: {
26
- Authorization: this.options.authorizationHeader,
27
- },
28
- }),
29
- exportIntervalMillis: EXPORT_INTERVAL,
30
- });
31
- this._meterProvider = new sdk_metrics_1.MeterProvider({
32
- resource,
33
- readers: [grafanaMetricReader],
34
- });
35
- }
36
- gauge(name, value, tags) {
37
- const meter = this._meterProvider.getMeter('dxos-observability');
38
- const observableGauge = this._gauges.get(name);
39
- const mergedTags = { ...this.options.getTags(), ...tags };
40
- if (!observableGauge) {
41
- const synchronousGauge = {
42
- gauge: meter.createObservableGauge(name),
43
- nextValue: value,
44
- nextTags: mergedTags,
45
- };
46
- synchronousGauge.gauge.addCallback((observerResult) => {
47
- observerResult.observe(synchronousGauge.nextValue, synchronousGauge.nextTags);
48
- });
49
- this._gauges.set(name, synchronousGauge);
50
- }
51
- else {
52
- observableGauge.nextTags = mergedTags;
53
- observableGauge.nextValue = value;
54
- }
55
- }
56
- flush() {
57
- return this._meterProvider.forceFlush();
58
- }
59
- close() {
60
- return this._meterProvider.shutdown();
61
- }
62
- }
63
- exports.OtelMetrics = OtelMetrics;
64
- //# sourceMappingURL=metrics.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../../src/otel/metrics.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;AAGF,0FAA+E;AAC/E,wDAAoD;AACpD,4DAA0F;AAC1F,8EAA4G;AAI5G,MAAM,eAAe,GAAG,EAAE,GAAG,IAAI,CAAC;AAQlC,MAAa,WAAW;IAItB,YAA6B,OAAoB;QAApB,YAAO,GAAP,OAAO,CAAa;QAFzC,YAAO,GAAG,IAAI,GAAG,EAA4B,CAAC;QAGpD,uCAAuC;QACvC,kEAAkE;QAClE,MAAM,QAAQ,GAAG,oBAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,CACvC,IAAI,oBAAQ,CAAC;YACX,CAAC,+CAAwB,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;YACpD,CAAC,kDAA2B,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc;SAC3D,CAAC,CACH,CAAC;QAEF,MAAM,mBAAmB,GAAG,IAAI,2CAA6B,CAAC;YAC5D,QAAQ,EAAE,IAAI,+CAAkB,CAAC;gBAC/B,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,aAAa;gBAC1C,OAAO,EAAE;oBACP,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB;iBAChD;aACF,CAAC;YACF,oBAAoB,EAAE,eAAe;SACtC,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,GAAG,IAAI,2BAAa,CAAC;YACtC,QAAQ;YACR,OAAO,EAAE,CAAC,mBAAmB,CAAC;SAC/B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAY,EAAE,KAAa,EAAE,IAAU;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;QACjE,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAE/C,MAAM,UAAU,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC;QAC1D,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,gBAAgB,GAAG;gBACvB,KAAK,EAAE,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC;gBACxC,SAAS,EAAE,KAAK;gBAChB,QAAQ,EAAE,UAAU;aACrB,CAAC;YACF,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,cAAc,EAAE,EAAE;gBACpD,cAAc,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAChF,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,eAAe,CAAC,QAAQ,GAAG,UAAU,CAAC;YACtC,eAAe,CAAC,SAAS,GAAG,KAAK,CAAC;QACpC,CAAC;IACH,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;IAC1C,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;IACxC,CAAC;CACF;AA1DD,kCA0DC"}
@@ -1,10 +0,0 @@
1
- export type OtelOptions = {
2
- endpoint: string;
3
- authorizationHeader: string;
4
- serviceName: string;
5
- serviceVersion: string;
6
- getTags: () => {
7
- [key: string]: string;
8
- };
9
- };
10
- //# sourceMappingURL=otel.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"otel.d.ts","sourceRoot":"","sources":["../../../../src/otel/otel.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CAC1C,CAAC"}
@@ -1,6 +0,0 @@
1
- "use strict";
2
- //
3
- // Copyright 2024 DXOS.org
4
- //
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- //# sourceMappingURL=otel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"otel.js","sourceRoot":"","sources":["../../../../src/otel/otel.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE"}
package/src/otel/index.ts DELETED
@@ -1,7 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- export * from './otel';
6
- export * from './logs';
7
- export * from './metrics';
package/src/otel/logs.ts DELETED
@@ -1,69 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { diag, DiagConsoleLogger, DiagLogLevel } from '@opentelemetry/api';
6
- import { SeverityNumber } from '@opentelemetry/api-logs';
7
- import { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-http';
8
- import { Resource } from '@opentelemetry/resources';
9
- import { LoggerProvider, BatchLogRecordProcessor } from '@opentelemetry/sdk-logs';
10
- import { SEMRESATTRS_SERVICE_NAME, SEMRESATTRS_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';
11
-
12
- import { type LogConfig, type LogEntry, LogLevel, type LogProcessor, shouldLog } from '@dxos/log';
13
-
14
- import { type OtelOptions } from './otel';
15
-
16
- export class OtelLogs {
17
- constructor(private readonly options: OtelOptions) {
18
- diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.INFO);
19
- }
20
-
21
- getLogProcessor(): LogProcessor {
22
- const resource = Resource.default().merge(
23
- new Resource({
24
- [SEMRESATTRS_SERVICE_NAME]: this.options.serviceName,
25
- [SEMRESATTRS_SERVICE_VERSION]: this.options.serviceVersion,
26
- }),
27
- );
28
- const collectorOptions = {
29
- url: this.options.endpoint + '/v1/logs',
30
- headers: {
31
- Authorization: this.options.authorizationHeader,
32
- },
33
- concurrencyLimit: 1, // an optional limit on pending requests
34
- };
35
- const logExporter = new OTLPLogExporter(collectorOptions);
36
- const loggerProvider = new LoggerProvider({ resource });
37
-
38
- loggerProvider.addLogRecordProcessor(new BatchLogRecordProcessor(logExporter));
39
-
40
- // TODO: namespace?
41
- const logger = loggerProvider.getLogger('dxos-observability', '0.0.0');
42
- return (config: LogConfig, entry: LogEntry) => {
43
- const { level, message, context, error } = entry;
44
- if (!shouldLog(entry, config.filters)) {
45
- return;
46
- }
47
- logger.emit({
48
- severityNumber: convertLevel(level),
49
- body: { message, error: error ?? undefined, ...context },
50
- attributes: this.options.getTags(),
51
- });
52
- };
53
- }
54
- }
55
-
56
- const convertLevel = (level: LogLevel): SeverityNumber => {
57
- switch (level) {
58
- case LogLevel.DEBUG:
59
- return SeverityNumber.DEBUG;
60
- case LogLevel.INFO:
61
- return SeverityNumber.INFO;
62
- case LogLevel.WARN:
63
- return SeverityNumber.WARN;
64
- case LogLevel.ERROR:
65
- return SeverityNumber.ERROR;
66
- default:
67
- return SeverityNumber.ERROR;
68
- }
69
- };
@@ -1,79 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { type Attributes, type ObservableGauge } from '@opentelemetry/api';
6
- import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';
7
- import { Resource } from '@opentelemetry/resources';
8
- import { MeterProvider, PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics';
9
- import { SEMRESATTRS_SERVICE_NAME, SEMRESATTRS_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';
10
-
11
- import { type OtelOptions } from './otel';
12
-
13
- const EXPORT_INTERVAL = 60 * 1000;
14
-
15
- type SynchronousGauge = {
16
- gauge: ObservableGauge<Attributes>;
17
- nextValue: number;
18
- nextTags?: any;
19
- };
20
-
21
- export class OtelMetrics {
22
- private _meterProvider: MeterProvider;
23
- private _gauges = new Map<string, SynchronousGauge>();
24
-
25
- constructor(private readonly options: OtelOptions) {
26
- // TODO: improve error handling/logging
27
- // https://github.com/open-telemetry/opentelemetry-js/issues/4823
28
- const resource = Resource.default().merge(
29
- new Resource({
30
- [SEMRESATTRS_SERVICE_NAME]: this.options.serviceName,
31
- [SEMRESATTRS_SERVICE_VERSION]: this.options.serviceVersion,
32
- }),
33
- );
34
-
35
- const grafanaMetricReader = new PeriodicExportingMetricReader({
36
- exporter: new OTLPMetricExporter({
37
- url: this.options.endpoint + '/v1/metrics',
38
- headers: {
39
- Authorization: this.options.authorizationHeader,
40
- },
41
- }),
42
- exportIntervalMillis: EXPORT_INTERVAL,
43
- });
44
-
45
- this._meterProvider = new MeterProvider({
46
- resource,
47
- readers: [grafanaMetricReader],
48
- });
49
- }
50
-
51
- gauge(name: string, value: number, tags?: any) {
52
- const meter = this._meterProvider.getMeter('dxos-observability');
53
- const observableGauge = this._gauges.get(name);
54
-
55
- const mergedTags = { ...this.options.getTags(), ...tags };
56
- if (!observableGauge) {
57
- const synchronousGauge = {
58
- gauge: meter.createObservableGauge(name),
59
- nextValue: value,
60
- nextTags: mergedTags,
61
- };
62
- synchronousGauge.gauge.addCallback((observerResult) => {
63
- observerResult.observe(synchronousGauge.nextValue, synchronousGauge.nextTags);
64
- });
65
- this._gauges.set(name, synchronousGauge);
66
- } else {
67
- observableGauge.nextTags = mergedTags;
68
- observableGauge.nextValue = value;
69
- }
70
- }
71
-
72
- flush() {
73
- return this._meterProvider.forceFlush();
74
- }
75
-
76
- close() {
77
- return this._meterProvider.shutdown();
78
- }
79
- }
package/src/otel/otel.ts DELETED
@@ -1,11 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- export type OtelOptions = {
6
- endpoint: string;
7
- authorizationHeader: string;
8
- serviceName: string; // For the Otel API, the name of the entity for which signals (metrics or trace) are collected.
9
- serviceVersion: string; // For the Otel API, The name of the entity for which signals (metrics or trace) are collected.
10
- getTags: () => { [key: string]: string };
11
- };