exporter.js 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. const serviceManager_1 = require("../serviceManager");
  4. const core_1 = require("@opencensus/core");
  5. const default_config_1 = require("./config/default-config");
  6. const constants_1 = require("./constants");
  7. var CanonicalCodeString;
  8. (function (CanonicalCodeString) {
  9. CanonicalCodeString["OK"] = "OK";
  10. CanonicalCodeString["CANCELLED"] = "CANCELLED";
  11. CanonicalCodeString["UNKNOWN"] = "UNKNOWN";
  12. CanonicalCodeString["INVALID_ARGUMENT"] = "INVALID_ARGUMENT";
  13. CanonicalCodeString["DEADLINE_EXCEEDED"] = "DEADLINE_EXCEEDED";
  14. CanonicalCodeString["NOT_FOUND"] = "NOT_FOUND";
  15. CanonicalCodeString["ALREADY_EXISTS"] = "ALREADY_EXISTS";
  16. CanonicalCodeString["PERMISSION_DENIED"] = "PERMISSION_DENIED";
  17. CanonicalCodeString["RESOURCE_EXHAUSTED"] = "RESOURCE_EXHAUSTED";
  18. CanonicalCodeString["FAILED_PRECONDITION"] = "FAILED_PRECONDITION";
  19. CanonicalCodeString["ABORTED"] = "ABORTED";
  20. CanonicalCodeString["OUT_OF_RANGE"] = "OUT_OF_RANGE";
  21. CanonicalCodeString["UNIMPLEMENTED"] = "UNIMPLEMENTED";
  22. CanonicalCodeString["INTERNAL"] = "INTERNAL";
  23. CanonicalCodeString["UNAVAILABLE"] = "UNAVAILABLE";
  24. CanonicalCodeString["DATA_LOSS"] = "DATA_LOSS";
  25. CanonicalCodeString["UNAUTHENTICATED"] = "UNAUTHENTICATED";
  26. })(CanonicalCodeString || (CanonicalCodeString = {}));
  27. class CustomCensusExporter {
  28. constructor(config) {
  29. this.transport = serviceManager_1.ServiceManager.get('transport');
  30. this.config = config;
  31. this.buffer = new core_1.ExporterBuffer(this, default_config_1.defaultConfig);
  32. }
  33. onEndSpan(root) {
  34. this.buffer.addToBuffer(root);
  35. }
  36. onStartSpan(root) { }
  37. sendTraces(zipkinTraces) {
  38. return new Promise((resolve, reject) => {
  39. zipkinTraces.forEach(span => {
  40. const isRootClient = span.kind === 'CLIENT' && !span.parentId;
  41. if (isRootClient && this.config.outbound === false)
  42. return;
  43. if (process.env.NODE_ENV === 'test' || (span.duration > constants_1.Constants.MINIMUM_TRACE_DURATION)) {
  44. this.transport.send('trace-span', span);
  45. }
  46. });
  47. resolve();
  48. });
  49. }
  50. mountSpanList(rootSpans) {
  51. const spanList = [];
  52. for (const root of rootSpans) {
  53. spanList.push(this.translateSpan(root));
  54. for (const span of root.spans) {
  55. spanList.push(this.translateSpan(span));
  56. }
  57. }
  58. return spanList;
  59. }
  60. translateSpan(span) {
  61. const spanTranslated = {
  62. traceId: span.traceId,
  63. name: span.name,
  64. id: span.id,
  65. parentId: span.parentSpanId,
  66. kind: this.getSpanKind(span.kind),
  67. timestamp: span.startTime.getTime() * 1000,
  68. duration: Math.round(span.duration * 1000),
  69. debug: false,
  70. shared: false,
  71. localEndpoint: { serviceName: this.config.serviceName },
  72. tags: span.attributes
  73. };
  74. if (typeof spanTranslated.tags['result.code'] !== 'string') {
  75. spanTranslated.tags['result.code'] = CanonicalCodeString[span.status.code];
  76. }
  77. if (typeof span.status.message === 'string') {
  78. spanTranslated.tags['result.message'] = span.status.message;
  79. }
  80. return spanTranslated;
  81. }
  82. publish(rootSpans) {
  83. const spanList = this.mountSpanList(rootSpans);
  84. return this.sendTraces(spanList).catch((err) => {
  85. return err;
  86. });
  87. }
  88. getSpanKind(kind) {
  89. switch (kind) {
  90. case core_1.SpanKind.CLIENT: {
  91. return 'CLIENT';
  92. }
  93. case core_1.SpanKind.SERVER: {
  94. return 'SERVER';
  95. }
  96. default: {
  97. return 'UNKNOWN';
  98. }
  99. }
  100. }
  101. }
  102. exports.CustomCensusExporter = CustomCensusExporter;
  103. //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2Vuc3VzL2V4cG9ydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0Esc0RBQWtEO0FBRWxELDJDQUFnSTtBQUNoSSw0REFBdUQ7QUFDdkQsMkNBQXVDO0FBTXZDLElBQUssbUJBa0JKO0FBbEJELFdBQUssbUJBQW1CO0lBQ3RCLGdDQUFTLENBQUE7SUFDVCw4Q0FBdUIsQ0FBQTtJQUN2QiwwQ0FBbUIsQ0FBQTtJQUNuQiw0REFBcUMsQ0FBQTtJQUNyQyw4REFBdUMsQ0FBQTtJQUN2Qyw4Q0FBdUIsQ0FBQTtJQUN2Qix3REFBaUMsQ0FBQTtJQUNqQyw4REFBdUMsQ0FBQTtJQUN2QyxnRUFBeUMsQ0FBQTtJQUN6QyxrRUFBMkMsQ0FBQTtJQUMzQywwQ0FBbUIsQ0FBQTtJQUNuQixvREFBNkIsQ0FBQTtJQUM3QixzREFBK0IsQ0FBQTtJQUMvQiw0Q0FBcUIsQ0FBQTtJQUNyQixrREFBMkIsQ0FBQTtJQUMzQiw4Q0FBdUIsQ0FBQTtJQUN2QiwwREFBbUMsQ0FBQTtBQUNyQyxDQUFDLEVBbEJJLG1CQUFtQixLQUFuQixtQkFBbUIsUUFrQnZCO0FBaUJELE1BQWEsb0JBQW9CO0lBSy9CLFlBQWEsTUFBcUI7UUFIMUIsY0FBUyxHQUFjLCtCQUFjLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBSTVELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxxQkFBYyxDQUFDLElBQUksRUFBRSw4QkFBYSxDQUFDLENBQUE7SUFDdkQsQ0FBQztJQU1ELFNBQVMsQ0FBRSxJQUFjO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQy9CLENBQUM7SUFHRCxXQUFXLENBQUUsSUFBYyxJQUFHLENBQUM7SUFNdkIsVUFBVSxDQUFFLFlBQThCO1FBQ2hELE9B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