UNPKG

nice-grpc-opentelemetry

Version:

OpenTelemetry instrumentation for nice-grpc

61 lines 2.23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getMethodAttributes = getMethodAttributes; exports.getStatusAttributes = getStatusAttributes; exports.getPeerAttributes = getPeerAttributes; const semantic_conventions_1 = require("@opentelemetry/semantic-conventions"); const ipaddr = require("ipaddr.js"); const nice_grpc_common_1 = require("nice-grpc-common"); /** * @param methodPath Full method path in form `/package.service/method` * * @see https://opentelemetry.io/docs/reference/specification/trace/semantic_conventions/rpc/#common-attributes */ function getMethodAttributes(methodPath) { const [, service, method] = methodPath.split('/'); return { [semantic_conventions_1.SEMATTRS_RPC_SYSTEM]: 'grpc', [semantic_conventions_1.SEMATTRS_RPC_SERVICE]: service, [semantic_conventions_1.SEMATTRS_RPC_METHOD]: method, }; } /** * @see https://opentelemetry.io/docs/reference/specification/trace/semantic_conventions/rpc/#grpc-attributes */ function getStatusAttributes(status) { return { [semantic_conventions_1.SEMATTRS_RPC_GRPC_STATUS_CODE]: status, 'rpc.grpc.status_text': nice_grpc_common_1.Status[status], }; } /** * @param peer Peer provided by `grpc-js`, usually `ip:port` * * @see https://opentelemetry.io/docs/reference/specification/trace/semantic_conventions/rpc/#common-attributes */ function getPeerAttributes(peer) { const lastColonIndex = peer.lastIndexOf(':'); if (lastColonIndex === -1) { return { [semantic_conventions_1.SEMATTRS_NET_PEER_NAME]: peer, }; } const host = peer.slice(0, lastColonIndex); const port = +peer.slice(lastColonIndex + 1); if (Number.isNaN(port)) { return { [semantic_conventions_1.SEMATTRS_NET_PEER_NAME]: peer, }; } if (ipaddr.isValid(host)) { return { [semantic_conventions_1.SEMATTRS_NET_PEER_IP]: host, [semantic_conventions_1.SEMATTRS_NET_PEER_PORT]: port, }; } return { [semantic_conventions_1.SEMATTRS_NET_PEER_NAME]: host, [semantic_conventions_1.SEMATTRS_NET_PEER_PORT]: port, }; } //# sourceMappingURL=attributes.js.map