@contrail/telemetry 2.0.3 → 2.0.4-beta.0
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/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/metrics/index.d.ts +4 -0
- package/lib/metrics/index.js +40 -0
- package/package.json +3 -1
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
|
@@ -15,4 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./logger"), exports);
|
|
18
|
+
__exportStar(require("./metrics"), exports);
|
|
18
19
|
__exportStar(require("./semantic-conventions"), exports);
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getMeter = getMeter;
|
|
4
|
+
exports.flushMetrics = flushMetrics;
|
|
5
|
+
const sdk_metrics_1 = require("@opentelemetry/sdk-metrics");
|
|
6
|
+
const exporter_metrics_otlp_http_1 = require("@opentelemetry/exporter-metrics-otlp-http");
|
|
7
|
+
const resources_1 = require("@opentelemetry/resources");
|
|
8
|
+
const parse_otel_resource_attributes_1 = require("../logger/parse-otel-resource-attributes");
|
|
9
|
+
const otlpEndpoint = process.env.OTEL_EXPORTER_OTLP_ENDPOINT;
|
|
10
|
+
const shouldExportToOtlp = Boolean(otlpEndpoint);
|
|
11
|
+
const resource = (0, resources_1.resourceFromAttributes)((0, parse_otel_resource_attributes_1.parseOtelResourceAttributes)());
|
|
12
|
+
const readers = shouldExportToOtlp
|
|
13
|
+
? [
|
|
14
|
+
new sdk_metrics_1.PeriodicExportingMetricReader({
|
|
15
|
+
exporter: new exporter_metrics_otlp_http_1.OTLPMetricExporter(),
|
|
16
|
+
exportIntervalMillis: 30000,
|
|
17
|
+
}),
|
|
18
|
+
]
|
|
19
|
+
: [];
|
|
20
|
+
const meterProvider = new sdk_metrics_1.MeterProvider({ resource, readers });
|
|
21
|
+
function getMeter(name) {
|
|
22
|
+
return meterProvider.getMeter(name);
|
|
23
|
+
}
|
|
24
|
+
async function flushMetrics(options) {
|
|
25
|
+
var _a;
|
|
26
|
+
const timeoutMs = (_a = options === null || options === void 0 ? void 0 : options.timeoutMs) !== null && _a !== void 0 ? _a : 5000;
|
|
27
|
+
try {
|
|
28
|
+
await Promise.race([
|
|
29
|
+
meterProvider.forceFlush(),
|
|
30
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error(`Metrics flush timed out after ${timeoutMs}ms`)), timeoutMs)),
|
|
31
|
+
]);
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
process.stderr.write(`[OTel Metrics Flush Failed] ${JSON.stringify({
|
|
35
|
+
error: error instanceof Error ? error.message : String(error),
|
|
36
|
+
timeoutMs,
|
|
37
|
+
timestamp: new Date().toISOString(),
|
|
38
|
+
})}\n`);
|
|
39
|
+
}
|
|
40
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contrail/telemetry",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.4-beta.0",
|
|
4
4
|
"description": "Telemetry and monitoring utilities for contrail services",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -20,8 +20,10 @@
|
|
|
20
20
|
"@opentelemetry/api-logs": "^0.211.0",
|
|
21
21
|
"@opentelemetry/core": "^2.5.0",
|
|
22
22
|
"@opentelemetry/exporter-logs-otlp-http": "^0.211.0",
|
|
23
|
+
"@opentelemetry/exporter-metrics-otlp-http": "^0.211.0",
|
|
23
24
|
"@opentelemetry/resources": "^2.5.0",
|
|
24
25
|
"@opentelemetry/sdk-logs": "^0.211.0",
|
|
26
|
+
"@opentelemetry/sdk-metrics": "^2.5.0",
|
|
25
27
|
"@opentelemetry/sdk-trace-base": "^2.5.0",
|
|
26
28
|
"@opentelemetry/semantic-conventions": "^1.39.0",
|
|
27
29
|
"pino": "^10.1.0"
|