UNPKG

next

Version:

The React Framework

104 lines (103 loc) 3.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _asyncRetry = _interopRequireDefault(require("next/dist/compiled/async-retry")); var _crypto = require("crypto"); var _nodeFetch = _interopRequireDefault(require("node-fetch")); var Log = _interopRequireWildcard(require("../../build/output/log")); var _toZipkin = require("./to-zipkin"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = { }; if (obj != null) { for(var key in obj){ if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : { }; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } let traceId; let batch; const localEndpoint = { serviceName: 'nextjs', ipv4: '127.0.0.1', port: 9411 }; // Jaeger supports Zipkin's reporting API const zipkinUrl = `http://${localEndpoint.ipv4}:${localEndpoint.port}`; const jaegerWebUiUrl = `http://${localEndpoint.ipv4}:16686`; const zipkinAPI = `${zipkinUrl}/api/v2/spans`; function logWebUrl() { Log.info(`Jaeger trace will be available on ${jaegerWebUiUrl}/trace/${traceId}`); } const reportToLocalHost = (name, duration, timestamp, id, parentId, attrs)=>{ if (!traceId) { traceId = process.env.TRACE_ID || (0, _crypto).randomBytes(8).toString('hex'); logWebUrl(); } if (!batch) { batch = (0, _toZipkin).batcher((events)=>{ const eventsJson = JSON.stringify(events); // Ensure ECONNRESET error is retried 3 times before erroring out return (0, _asyncRetry).default(()=>// Send events to jaeger's zipkin endpoint (0, _nodeFetch).default(zipkinAPI, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: eventsJson }) , { minTimeout: 500, retries: 3, factor: 1 }).then(async (res)=>{ if (res.status !== 202) { console.log({ status: res.status, body: await res.text(), events: eventsJson }); } }).catch(console.log); }); } batch.report({ traceId, parentId, name, id, timestamp, duration, localEndpoint, tags: attrs }); }; var _default = { flushAll: ()=>batch ? batch.flushAll().then(()=>logWebUrl() ) : undefined , report: reportToLocalHost }; exports.default = _default; //# sourceMappingURL=to-jaeger.js.map