v0.3.0
A prometheus client in Typescript for Deno
Repository
Current version released
4 years ago
Versions
ts_prometheus
A prometheus client for Deno that supports counter, gauge, histrogram and summary metric types.
Usage
By default all metrics are registered in the global Registry accessible via
Registry.default. The Registry class has the method metrics() that returns
the text-based exposition for all metrics collected. But it is possible
specified one or more custom registry:
const myRegistry = new Registry();
const myCounter = Counter.with({
name: "my_counter",
help: "a counter with custom registry",
registry: [myRegistry],
});Examples
Metric Types
Counter
const counter = Counter.with({
name: "http_requests_total",
help: "The total number of HTTP requests.",
labels: ["method", "status"],
});
const totalGetCreate = counter.labels({
method: "GET",
status: "201",
});
totalGetCreate.inc();
totalGetCreate.inc(42);# HELP http_requests_total The total number of HTTP requests.
# TYPE http_requests_total counter
http_requests_total{method="GET",status="201"} 43Gauge
const gauge = Gauge.with({
name: "cpu_time_usage",
help: "The CPU time usage.",
labels: ["mode"],
});
const cpuIdle = gauge.labels({
mode: "idle",
});
cpuIdle.set(0);
cpuIdle.inc();
cpuIdle.inc(42);
cpuIdle.dec();
cpuIdle.dec(3.14);# HELP cpu_time_usage The CPU time usage.
# TYPE cpu_time_usage gauge
cpu_time_usage{mode="idle"} 38.86Histogram
const histogram = Histogram.with({
name: "http_requests_duration",
help: "A histogram of the requests duration.",
buckets: [.05, .1, .2, .5, 1, 3],
});
histogram.observe(.42);
histogram.observe(.58);# HELP http_requests_duration A histogram of the requests duration.
# TYPE http_requests_duration histogram
http_requests_duration_bucket{le="0.05"} 0
http_requests_duration_bucket{le="0.1"} 0
http_requests_duration_bucket{le="0.2"} 0
http_requests_duration_bucket{le="0.5"} 1
http_requests_duration_bucket{le="1"} 2
http_requests_duration_bucket{le="3"} 2
http_requests_duration_bucket{le="+Inf"} 2
http_requests_duration_sum 1
http_requests_duration_count 2Summary
By default percentiles when not set are [ .01, .05, .9, .95, .99 ].
let summary = Summary.with({
name: "http_response_size",
help: "A summary of the response size.",
percentiles: [.25, .5, .75, 1],
});
let values = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55];
values.forEach((v) => summary.observe(v));# HELP http_response_size A summary of the response size.
# TYPE http_response_size summary
http_response_size{percentile="0.25"} 2
http_response_size{percentile="0.5"} 5
http_response_size{percentile="0.75"} 21
http_response_size{percentile="1"} 55
http_response_size_sum 143
http_response_size_count 10A sliding time window can be set using maxAge for defining the age of
observation in milliseconds, or ageBuckets for limiting the max number of
observations.
Summary.with({
name: "http_response_size",
help: "A summary of the response size.",
percentiles: [ .25, .5, .75, 1 ]
maxAge: 1000 // milliseconds
ageBuckets: 5 // number of observations
});