@opentelemetry/exporter-collector
Advanced tools
Comparing version 0.13.0 to 0.14.0
@@ -13,2 +13,3 @@ import { Attributes, Logger } from '@opentelemetry/api'; | ||
readonly attributes?: Attributes; | ||
protected _concurrencyLimit: number; | ||
protected _isShutdown: boolean; | ||
@@ -15,0 +16,0 @@ private _shuttingDownPromise; |
@@ -39,2 +39,6 @@ "use strict"; | ||
this.shutdown = this.shutdown.bind(this); | ||
this._concurrencyLimit = | ||
typeof config.concurrencyLimit === 'number' | ||
? config.concurrencyLimit | ||
: Infinity; | ||
// platform dependent | ||
@@ -56,2 +60,9 @@ this.onInit(config); | ||
} | ||
if (this._sendingPromises.length >= this._concurrencyLimit) { | ||
resultCallback({ | ||
code: core_1.ExportResultCode.FAILED, | ||
error: new Error('Concurrent export limit reached'), | ||
}); | ||
return; | ||
} | ||
this._export(items) | ||
@@ -58,0 +69,0 @@ .then(() => { |
@@ -0,3 +1,6 @@ | ||
/// <reference types="node" /> | ||
import type * as http from 'http'; | ||
import type * as https from 'https'; | ||
import { CollectorExporterBase } from '../../CollectorExporterBase'; | ||
import { CollectorExporterConfigBase } from '../../types'; | ||
import { CollectorExporterNodeConfigBase } from './types'; | ||
import * as collectorTypes from '../../types'; | ||
@@ -7,7 +10,9 @@ /** | ||
*/ | ||
export declare abstract class CollectorExporterNodeBase<ExportItem, ServiceRequest> extends CollectorExporterBase<CollectorExporterConfigBase, ExportItem, ServiceRequest> { | ||
export declare abstract class CollectorExporterNodeBase<ExportItem, ServiceRequest> extends CollectorExporterBase<CollectorExporterNodeConfigBase, ExportItem, ServiceRequest> { | ||
DEFAULT_HEADERS: Record<string, string>; | ||
headers: Record<string, string>; | ||
constructor(config?: CollectorExporterConfigBase); | ||
onInit(_config: CollectorExporterConfigBase): void; | ||
keepAlive: boolean; | ||
httpAgentOptions: http.AgentOptions | https.AgentOptions; | ||
constructor(config?: CollectorExporterNodeConfigBase); | ||
onInit(_config: CollectorExporterNodeConfigBase): void; | ||
send(objects: ExportItem[], onSuccess: () => void, onError: (error: collectorTypes.CollectorExporterError) => void): void; | ||
@@ -14,0 +19,0 @@ onShutdown(): void; |
@@ -29,2 +29,4 @@ "use strict"; | ||
this.DEFAULT_HEADERS = {}; | ||
this.keepAlive = true; | ||
this.httpAgentOptions = {}; | ||
if (config.metadata) { | ||
@@ -35,2 +37,11 @@ this.logger.warn('Metadata cannot be set when using http'); | ||
util_1.parseHeaders(config.headers, this.logger) || this.DEFAULT_HEADERS; | ||
if (typeof config.keepAlive === 'boolean') { | ||
this.keepAlive = config.keepAlive; | ||
} | ||
if (config.httpAgentOptions) { | ||
if (!this.keepAlive) { | ||
this.logger.warn('httpAgentOptions is used only when keepAlive is true'); | ||
} | ||
this.httpAgentOptions = Object.assign({}, config.httpAgentOptions); | ||
} | ||
} | ||
@@ -37,0 +48,0 @@ onInit(_config) { |
import { MetricRecord, MetricExporter } from '@opentelemetry/metrics'; | ||
import { CollectorExporterConfigBase } from '../../types'; | ||
import * as collectorTypes from '../../types'; | ||
import { CollectorExporterNodeConfigBase } from './types'; | ||
import { CollectorExporterNodeBase } from './CollectorExporterNodeBase'; | ||
@@ -11,5 +11,5 @@ /** | ||
convert(metrics: MetricRecord[]): collectorTypes.opentelemetryProto.collector.metrics.v1.ExportMetricsServiceRequest; | ||
getDefaultUrl(config: CollectorExporterConfigBase): string; | ||
getDefaultServiceName(config: CollectorExporterConfigBase): string; | ||
getDefaultUrl(config: CollectorExporterNodeConfigBase): string; | ||
getDefaultServiceName(config: CollectorExporterNodeConfigBase): string; | ||
} | ||
//# sourceMappingURL=CollectorMetricExporter.d.ts.map |
import { ReadableSpan, SpanExporter } from '@opentelemetry/tracing'; | ||
import { CollectorExporterConfigBase } from '../../types'; | ||
import { CollectorExporterNodeBase } from './CollectorExporterNodeBase'; | ||
import { CollectorExporterNodeConfigBase } from './types'; | ||
import * as collectorTypes from '../../types'; | ||
@@ -10,5 +10,5 @@ /** | ||
convert(spans: ReadableSpan[]): collectorTypes.opentelemetryProto.collector.trace.v1.ExportTraceServiceRequest; | ||
getDefaultUrl(config: CollectorExporterConfigBase): string; | ||
getDefaultServiceName(config: CollectorExporterConfigBase): string; | ||
getDefaultUrl(config: CollectorExporterNodeConfigBase): string; | ||
getDefaultServiceName(config: CollectorExporterNodeConfigBase): string; | ||
} | ||
//# sourceMappingURL=CollectorTraceExporter.d.ts.map |
@@ -5,2 +5,3 @@ export * from './CollectorTraceExporter'; | ||
export * from './util'; | ||
export * from './types'; | ||
//# sourceMappingURL=index.d.ts.map |
@@ -32,2 +32,3 @@ "use strict"; | ||
__exportStar(require("./util"), exports); | ||
__exportStar(require("./types"), exports); | ||
//# sourceMappingURL=index.js.map |
@@ -41,2 +41,6 @@ "use strict"; | ||
const request = parsedUrl.protocol === 'http:' ? http.request : https.request; | ||
const Agent = parsedUrl.protocol === 'http:' ? http.Agent : https.Agent; | ||
if (collector.keepAlive) { | ||
options.agent = new Agent(Object.assign(Object.assign({}, collector.httpAgentOptions), { keepAlive: true })); | ||
} | ||
const req = request(options, (res) => { | ||
@@ -43,0 +47,0 @@ let data = ''; |
@@ -1,2 +0,2 @@ | ||
import { Attributes, SpanKind, TimedEvent, TraceState } from '@opentelemetry/api'; | ||
import { Attributes, SpanKind, Status, StatusCode, TimedEvent, TraceState } from '@opentelemetry/api'; | ||
import * as core from '@opentelemetry/core'; | ||
@@ -45,2 +45,12 @@ import { Resource } from '@opentelemetry/resources'; | ||
/** | ||
* Converts StatusCode | ||
* @param code | ||
*/ | ||
export declare function toCollectorCode(code: StatusCode): opentelemetryProto.trace.v1.StatusCode; | ||
/** | ||
* Converts status | ||
* @param status | ||
*/ | ||
export declare function toCollectorStatus(status: Status): opentelemetryProto.trace.v1.Status; | ||
/** | ||
* Converts resource | ||
@@ -47,0 +57,0 @@ * @param resource |
@@ -18,3 +18,4 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.groupSpansByResourceAndLibrary = exports.toCollectorExportTraceServiceRequest = exports.toCollectorTraceState = exports.toCollectorKind = exports.toCollectorResource = exports.toCollectorSpan = exports.toCollectorEvents = exports.toCollectorAnyValue = exports.toCollectorAttributeKeyValue = exports.toCollectorKeyValueList = exports.toCollectorArrayValue = exports.toCollectorAttributes = void 0; | ||
exports.groupSpansByResourceAndLibrary = exports.toCollectorExportTraceServiceRequest = exports.toCollectorTraceState = exports.toCollectorKind = exports.toCollectorResource = exports.toCollectorStatus = exports.toCollectorCode = exports.toCollectorSpan = exports.toCollectorEvents = exports.toCollectorAnyValue = exports.toCollectorAttributeKeyValue = exports.toCollectorKeyValueList = exports.toCollectorArrayValue = exports.toCollectorAttributes = void 0; | ||
const api_1 = require("@opentelemetry/api"); | ||
const core = require("@opentelemetry/core"); | ||
@@ -157,3 +158,3 @@ const types_1 = require("./types"); | ||
droppedEventsCount: 0, | ||
status: span.status, | ||
status: toCollectorStatus(span.status), | ||
links: toCollectorLinks(span, useHex), | ||
@@ -165,2 +166,31 @@ droppedLinksCount: 0, | ||
/** | ||
* Converts StatusCode | ||
* @param code | ||
*/ | ||
function toCollectorCode(code) { | ||
switch (code) { | ||
case api_1.StatusCode.OK: | ||
return types_1.opentelemetryProto.trace.v1.StatusCode.OK; | ||
case api_1.StatusCode.UNSET: | ||
return types_1.opentelemetryProto.trace.v1.StatusCode.UNSET; | ||
default: | ||
return types_1.opentelemetryProto.trace.v1.StatusCode.ERROR; | ||
} | ||
} | ||
exports.toCollectorCode = toCollectorCode; | ||
/** | ||
* Converts status | ||
* @param status | ||
*/ | ||
function toCollectorStatus(status) { | ||
const spanStatus = { | ||
code: toCollectorCode(status.code), | ||
}; | ||
if (typeof status.message !== 'undefined') { | ||
spanStatus.message = status.message; | ||
} | ||
return spanStatus; | ||
} | ||
exports.toCollectorStatus = toCollectorStatus; | ||
/** | ||
* Converts resource | ||
@@ -167,0 +197,0 @@ * @param resource |
import { SpanKind, Logger, Attributes } from '@opentelemetry/api'; | ||
import * as api from '@opentelemetry/api'; | ||
export declare namespace opentelemetryProto { | ||
@@ -153,3 +152,27 @@ namespace collector { | ||
} | ||
type Status = api.Status; | ||
interface Status { | ||
/** The status code of this message. */ | ||
code: StatusCode; | ||
/** A developer-facing error message. */ | ||
message?: string; | ||
} | ||
/** | ||
* An enumeration of status codes. | ||
* https://github.com/open-telemetry/opentelemetry-proto/blob/master/opentelemetry/proto/trace/v1/trace.proto#L304 | ||
*/ | ||
enum StatusCode { | ||
/** | ||
* The default status. | ||
*/ | ||
UNSET = 0, | ||
/** | ||
* The operation has been validated by an Application developer or | ||
* Operator to have completed successfully. | ||
*/ | ||
OK = 1, | ||
/** | ||
* The operation contains an error. | ||
*/ | ||
ERROR = 2 | ||
} | ||
interface TraceConfig { | ||
@@ -228,2 +251,3 @@ constantSampler?: ConstantSampler | null; | ||
url?: string; | ||
concurrencyLimit?: number; | ||
} | ||
@@ -230,0 +254,0 @@ /** |
@@ -120,2 +120,22 @@ "use strict"; | ||
})(Span = v1.Span || (v1.Span = {})); | ||
/** | ||
* An enumeration of status codes. | ||
* https://github.com/open-telemetry/opentelemetry-proto/blob/master/opentelemetry/proto/trace/v1/trace.proto#L304 | ||
*/ | ||
let StatusCode; | ||
(function (StatusCode) { | ||
/** | ||
* The default status. | ||
*/ | ||
StatusCode[StatusCode["UNSET"] = 0] = "UNSET"; | ||
/** | ||
* The operation has been validated by an Application developer or | ||
* Operator to have completed successfully. | ||
*/ | ||
StatusCode[StatusCode["OK"] = 1] = "OK"; | ||
/** | ||
* The operation contains an error. | ||
*/ | ||
StatusCode[StatusCode["ERROR"] = 2] = "ERROR"; | ||
})(StatusCode = v1.StatusCode || (v1.StatusCode = {})); | ||
})(v1 = trace.v1 || (trace.v1 = {})); | ||
@@ -122,0 +142,0 @@ })(trace = opentelemetryProto.trace || (opentelemetryProto.trace = {})); |
@@ -1,2 +0,2 @@ | ||
export declare const VERSION = "0.13.0"; | ||
export declare const VERSION = "0.14.0"; | ||
//# sourceMappingURL=version.d.ts.map |
@@ -20,3 +20,3 @@ "use strict"; | ||
// this is autogenerated file, see scripts/version-update.js | ||
exports.VERSION = '0.13.0'; | ||
exports.VERSION = '0.14.0'; | ||
//# sourceMappingURL=version.js.map |
{ | ||
"name": "@opentelemetry/exporter-collector", | ||
"version": "0.13.0", | ||
"version": "0.14.0", | ||
"description": "OpenTelemetry Collector Exporter allows user to send collected traces to the OpenTelemetry Collector", | ||
@@ -53,5 +53,5 @@ "main": "build/src/index.js", | ||
"devDependencies": { | ||
"@babel/core": "7.12.9", | ||
"@types/mocha": "8.0.4", | ||
"@types/node": "14.14.10", | ||
"@babel/core": "7.12.10", | ||
"@types/mocha": "8.2.0", | ||
"@types/node": "14.14.12", | ||
"@types/sinon": "9.0.9", | ||
@@ -73,20 +73,20 @@ "@types/webpack-env": "1.16.0", | ||
"rimraf": "3.0.2", | ||
"sinon": "9.2.1", | ||
"ts-loader": "8.0.11", | ||
"sinon": "9.2.2", | ||
"ts-loader": "8.0.12", | ||
"ts-mocha": "8.0.0", | ||
"ts-node": "9.0.0", | ||
"ts-node": "9.1.1", | ||
"typescript": "3.9.7", | ||
"webpack": "4.44.2", | ||
"webpack-cli": "4.2.0", | ||
"webpack-merge": "5.4.0" | ||
"webpack-merge": "5.6.1" | ||
}, | ||
"dependencies": { | ||
"@opentelemetry/api": "^0.13.0", | ||
"@opentelemetry/core": "^0.13.0", | ||
"@opentelemetry/metrics": "^0.13.0", | ||
"@opentelemetry/resources": "^0.13.0", | ||
"@opentelemetry/tracing": "^0.13.0", | ||
"@opentelemetry/api": "^0.14.0", | ||
"@opentelemetry/core": "^0.14.0", | ||
"@opentelemetry/metrics": "^0.14.0", | ||
"@opentelemetry/resources": "^0.14.0", | ||
"@opentelemetry/tracing": "^0.14.0", | ||
"axios": "^0.21.0" | ||
}, | ||
"gitHead": "86cbd6798f9318c5920f9d9055f289a1c3f26500" | ||
"gitHead": "27a8d4530c56257c191468b073669909bf8892a1" | ||
} |
@@ -9,3 +9,3 @@ # OpenTelemetry Collector Exporter for web and node | ||
This module provides exporter for web and node to be used with [opentelemetry-collector][opentelemetry-collector-url] - last tested with version **0.12.0**. | ||
This module provides exporter for web and node to be used with [opentelemetry-collector][opentelemetry-collector-url] - last tested with version **0.16.0**. | ||
@@ -23,3 +23,3 @@ ## Installation | ||
```js | ||
import { SimpleSpanProcessor } from '@opentelemetry/tracing'; | ||
import { BatchSpanProcessor } from '@opentelemetry/tracing'; | ||
import { WebTracerProvider } from '@opentelemetry/web'; | ||
@@ -30,3 +30,4 @@ import { CollectorTraceExporter } from '@opentelemetry/exporter-collector'; | ||
url: '<opentelemetry-collector-url>', // url is optional and can be omitted - default is http://localhost:55681/v1/trace | ||
headers: {}, //an optional object containing custom headers to be sent with each request | ||
headers: {}, // an optional object containing custom headers to be sent with each request | ||
concurrencyLimit: 10, // an optional limit on pending requests | ||
}; | ||
@@ -36,3 +37,8 @@ | ||
const exporter = new CollectorTraceExporter(collectorOptions); | ||
provider.addSpanProcessor(new SimpleSpanProcessor(exporter)); | ||
provider.addSpanProcessor(new BatchSpanProcessor(exporter, { | ||
// send spans as soon as we have this many | ||
bufferSize: 10, | ||
// send spans if we have buffered spans older than this | ||
bufferTimeout: 500, | ||
})); | ||
@@ -52,3 +58,4 @@ provider.register(); | ||
url: '<opentelemetry-collector-url>', // url is optional and can be omitted - default is http://localhost:55681/v1/metrics | ||
headers: {}, //an optional object containing custom headers to be sent with each request | ||
headers: {}, // an optional object containing custom headers to be sent with each request | ||
concurrencyLimit: 1, // an optional limit on pending requests | ||
}; | ||
@@ -72,3 +79,3 @@ const exporter = new CollectorMetricExporter(collectorOptions); | ||
```js | ||
const { BasicTracerProvider, SimpleSpanProcessor } = require('@opentelemetry/tracing'); | ||
const { BasicTracerProvider, BatchSpanProcessor } = require('@opentelemetry/tracing'); | ||
const { CollectorTraceExporter } = require('@opentelemetry/exporter-collector'); | ||
@@ -81,3 +88,4 @@ | ||
foo: 'bar' | ||
}, //an optional object containing custom headers to be sent with each request will only work with http | ||
}, // an optional object containing custom headers to be sent with each request will only work with http | ||
concurrencyLimit: 10, // an optional limit on pending requests | ||
}; | ||
@@ -87,3 +95,8 @@ | ||
const exporter = new CollectorTraceExporter(collectorOptions); | ||
provider.addSpanProcessor(new SimpleSpanProcessor(exporter)); | ||
provider.addSpanProcessor(new BatchSpanProcessor(exporter, { | ||
// send spans as soon as we have this many | ||
bufferSize: 1000, | ||
// send spans if we have buffered spans older than this | ||
bufferTimeout: 30000, | ||
})); | ||
@@ -102,2 +115,3 @@ provider.register(); | ||
url: '<opentelemetry-collector-url>', // url is optional and can be omitted - default is http://localhost:55681/v1/metrics | ||
concurrencyLimit: 1, // an optional limit on pending requests | ||
}; | ||
@@ -104,0 +118,0 @@ const exporter = new CollectorMetricExporter(collectorOptions); |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
130213
60
2005
160
+ Added@opentelemetry/api@0.14.0(transitive)
+ Added@opentelemetry/context-base@0.14.0(transitive)
+ Added@opentelemetry/core@0.14.0(transitive)
+ Added@opentelemetry/metrics@0.14.0(transitive)
+ Added@opentelemetry/resources@0.14.0(transitive)
+ Added@opentelemetry/semantic-conventions@0.14.0(transitive)
+ Added@opentelemetry/tracing@0.14.0(transitive)
- Removed@opentelemetry/api@0.13.0(transitive)
- Removed@opentelemetry/context-base@0.13.0(transitive)
- Removed@opentelemetry/core@0.13.0(transitive)
- Removed@opentelemetry/metrics@0.13.0(transitive)
- Removed@opentelemetry/resources@0.13.0(transitive)
- Removed@opentelemetry/semantic-conventions@0.13.0(transitive)
- Removed@opentelemetry/tracing@0.13.0(transitive)
Updated@opentelemetry/api@^0.14.0
Updated@opentelemetry/core@^0.14.0