52 lines
1.5 KiB
TypeScript
52 lines
1.5 KiB
TypeScript
import { metrics, type Tracer, trace } from "@opentelemetry/api";
|
|
|
|
const meter = metrics.getMeter("@suaveplan/bitpacker-compressed");
|
|
|
|
export function getBitPackerCompressedTracer(): Tracer {
|
|
return trace.getTracer("@suaveplan/bitpacker-compressed");
|
|
}
|
|
|
|
/**
|
|
* Counter incremented per top-level compress / decompress call. Labels:
|
|
* `op` (`compress` | `decompress`), `algorithm` (e.g. `gzip`, `deflate`,
|
|
* `none`, `rle`), and `success`.
|
|
*/
|
|
export const compressionOpsTotal = meter.createCounter(
|
|
"bitpacker_compressed.ops.total",
|
|
{
|
|
description: "Total compression / decompression operations",
|
|
unit: "{ops}",
|
|
}
|
|
);
|
|
|
|
/**
|
|
* Histogram of operation duration in milliseconds.
|
|
*/
|
|
export const compressionOpDurationMs = meter.createHistogram(
|
|
"bitpacker_compressed.op.duration_ms",
|
|
{
|
|
description: "Duration of compression / decompression in milliseconds",
|
|
unit: "ms",
|
|
}
|
|
);
|
|
|
|
/**
|
|
* Histogram of compression ratio (compressed bytes / input bytes), labelled
|
|
* by `algorithm`. Recorded only on successful `compress` calls.
|
|
*/
|
|
export const compressionRatio = meter.createHistogram(
|
|
"bitpacker_compressed.compression.ratio",
|
|
{
|
|
description:
|
|
"Compression ratio (output_bytes / input_bytes) per successful compress",
|
|
unit: "1",
|
|
}
|
|
);
|
|
|
|
export const BITPACKER_COMPRESSED_SPAN_NAMES = {
|
|
compress: "bitpacker_compressed.compress",
|
|
decompress: "bitpacker_compressed.decompress",
|
|
pack: "bitpacker_compressed.pack",
|
|
unpack: "bitpacker_compressed.unpack",
|
|
} as const;
|