Skip to content

Commit e032feb

Browse files
fix(exporter-prometheus): add appendTimestamp option to ExporterConfig (#1697)
* fix(exporter-prometheus): add appendTimestamp option to ExporterConfig Signed-off-by: Antonio Franco <[email protected]> * chore: lint Signed-off-by: Antonio Franco <[email protected]> * chore: add test Signed-off-by: Antonio Franco <[email protected]> * fix(exporter-prometheus): check if appendTimestamp is boolean Signed-off-by: Antonio Franco <[email protected]> * chore: lint Signed-off-by: Antonio Franco <[email protected]> * fix(exporter-prometheus): change appendTimestamp property Signed-off-by: Antonio Franco <[email protected]> * chore: rollback unintentional package changes Signed-off-by: Antonio Franco <[email protected]> * chore(exporter-prometheus): update test Co-authored-by: Bartlomiej Obecny <[email protected]> Co-authored-by: Bartlomiej Obecny <[email protected]>
1 parent e70a7c8 commit e032feb

File tree

3 files changed

+46
-1
lines changed

3 files changed

+46
-1
lines changed

packages/opentelemetry-exporter-prometheus/src/PrometheusExporter.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,15 @@ export class PrometheusExporter implements MetricExporter {
3333
port: 9464,
3434
endpoint: '/metrics',
3535
prefix: '',
36+
appendTimestamp: true,
3637
};
3738

3839
private readonly _logger: api.Logger;
3940
private readonly _port: number;
4041
private readonly _endpoint: string;
4142
private readonly _server: Server;
4243
private readonly _prefix?: string;
44+
private readonly _appendTimestamp: boolean;
4345
private _serializer: PrometheusSerializer;
4446
private _batcher = new PrometheusLabelsBatcher();
4547

@@ -56,8 +58,15 @@ export class PrometheusExporter implements MetricExporter {
5658
this._logger = config.logger || new NoopLogger();
5759
this._port = config.port || PrometheusExporter.DEFAULT_OPTIONS.port;
5860
this._prefix = config.prefix || PrometheusExporter.DEFAULT_OPTIONS.prefix;
61+
this._appendTimestamp =
62+
typeof config.appendTimestamp === 'boolean'
63+
? config.appendTimestamp
64+
: PrometheusExporter.DEFAULT_OPTIONS.appendTimestamp;
5965
this._server = createServer(this._requestHandler);
60-
this._serializer = new PrometheusSerializer(this._prefix);
66+
this._serializer = new PrometheusSerializer(
67+
this._prefix,
68+
this._appendTimestamp
69+
);
6170

6271
this._endpoint = (
6372
config.endpoint || PrometheusExporter.DEFAULT_OPTIONS.endpoint

packages/opentelemetry-exporter-prometheus/src/export/types.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,12 @@ export interface ExporterConfig {
2727
* */
2828
prefix?: string;
2929

30+
/**
31+
* Append timestamp to metrics
32+
* @default true
33+
*/
34+
appendTimestamp?: boolean;
35+
3036
/**
3137
* Endpoint the metrics should be exposed at with preceding slash
3238
* @default '/metrics'

packages/opentelemetry-exporter-prometheus/test/PrometheusExporter.test.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -660,6 +660,36 @@ describe('PrometheusExporter', () => {
660660
}
661661
);
662662
});
663+
664+
it('should export a metric without timestamp', done => {
665+
exporter = new PrometheusExporter(
666+
{
667+
appendTimestamp: false,
668+
},
669+
async () => {
670+
await meter.collect();
671+
exporter!.export(meter.getProcessor().checkPointSet(), () => {
672+
http
673+
.get('http://localhost:9464/metrics', res => {
674+
res.on('data', chunk => {
675+
const body = chunk.toString();
676+
const lines = body.split('\n');
677+
678+
assert.deepStrictEqual(lines, [
679+
'# HELP counter description missing',
680+
'# TYPE counter counter',
681+
'counter{key1="labelValue1"} 10',
682+
'',
683+
]);
684+
685+
done();
686+
});
687+
})
688+
.on('error', errorHandler(done));
689+
});
690+
}
691+
);
692+
});
663693
});
664694
});
665695

0 commit comments

Comments
 (0)