tasq/node_modules/@opentelemetry/exporter-zipkin/build/esm/transform.js

110 lines
4.4 KiB
JavaScript

/*
* Copyright The OpenTelemetry Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
var _a;
import * as api from '@opentelemetry/api';
import { hrTimeToMicroseconds } from '@opentelemetry/core';
import * as zipkinTypes from './types';
var ZIPKIN_SPAN_KIND_MAPPING = (_a = {},
_a[api.SpanKind.CLIENT] = zipkinTypes.SpanKind.CLIENT,
_a[api.SpanKind.SERVER] = zipkinTypes.SpanKind.SERVER,
_a[api.SpanKind.CONSUMER] = zipkinTypes.SpanKind.CONSUMER,
_a[api.SpanKind.PRODUCER] = zipkinTypes.SpanKind.PRODUCER,
// When absent, the span is local.
_a[api.SpanKind.INTERNAL] = undefined,
_a);
export var defaultStatusCodeTagName = 'otel.status_code';
export var defaultStatusErrorTagName = 'error';
/**
* Translate OpenTelemetry ReadableSpan to ZipkinSpan format
* @param span Span to be translated
*/
export function toZipkinSpan(span, serviceName, statusCodeTagName, statusErrorTagName) {
var zipkinSpan = {
traceId: span.spanContext().traceId,
parentId: span.parentSpanId,
name: span.name,
id: span.spanContext().spanId,
kind: ZIPKIN_SPAN_KIND_MAPPING[span.kind],
timestamp: hrTimeToMicroseconds(span.startTime),
duration: Math.round(hrTimeToMicroseconds(span.duration)),
localEndpoint: { serviceName: serviceName },
tags: _toZipkinTags(span, statusCodeTagName, statusErrorTagName),
annotations: span.events.length
? _toZipkinAnnotations(span.events)
: undefined,
};
return zipkinSpan;
}
/** Converts OpenTelemetry Span properties to Zipkin Tags format. */
export function _toZipkinTags(_a, statusCodeTagName, statusErrorTagName) {
var e_1, _b;
var attributes = _a.attributes, resource = _a.resource, status = _a.status, droppedAttributesCount = _a.droppedAttributesCount, droppedEventsCount = _a.droppedEventsCount, droppedLinksCount = _a.droppedLinksCount;
var tags = {};
try {
for (var _c = __values(Object.keys(attributes)), _d = _c.next(); !_d.done; _d = _c.next()) {
var key = _d.value;
tags[key] = String(attributes[key]);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_d && !_d.done && (_b = _c.return)) _b.call(_c);
}
finally { if (e_1) throw e_1.error; }
}
if (status.code !== api.SpanStatusCode.UNSET) {
tags[statusCodeTagName] = String(api.SpanStatusCode[status.code]);
}
if (status.code === api.SpanStatusCode.ERROR && status.message) {
tags[statusErrorTagName] = status.message;
}
/* Add droppedAttributesCount as a tag */
if (droppedAttributesCount) {
tags['otel.dropped_attributes_count'] = String(droppedAttributesCount);
}
/* Add droppedEventsCount as a tag */
if (droppedEventsCount) {
tags['otel.dropped_events_count'] = String(droppedEventsCount);
}
/* Add droppedLinksCount as a tag */
if (droppedLinksCount) {
tags['otel.dropped_links_count'] = String(droppedLinksCount);
}
Object.keys(resource.attributes).forEach(function (name) { return (tags[name] = String(resource.attributes[name])); });
return tags;
}
/**
* Converts OpenTelemetry Events to Zipkin Annotations format.
*/
export function _toZipkinAnnotations(events) {
return events.map(function (event) { return ({
timestamp: Math.round(hrTimeToMicroseconds(event.time)),
value: event.name,
}); });
}
//# sourceMappingURL=transform.js.map