Crates.io | epimetheus |
lib.rs | epimetheus |
version | 0.8.0 |
source | src |
created_at | 2019-08-16 13:53:31.398506 |
updated_at | 2022-09-21 02:13:05.610826 |
description | An easy-to-use prometheus-compatible metrics framework |
homepage | |
repository | https://git.sr.ht/~asayers/epimetheus |
max_upload_size | |
id | 157372 |
size | 25,225 |
An easy-to-use prometheus-compatible metrics library.
Epimetheus is probably the easiest way to get your Rust application
serving metrics. Just scatter your code with instrumentation and call
spawn_http_server()
in main()
.
Watch your hashmaps grow!
metric!(my_data_len).set(my_data.len());
metric!(my_data_cap).set(my_data.capacity());
Monitor the latency of your functions!
let start = Instant::now();
my_function();
metric!(my_function_duration_sum).add(start.elapsed().as_secs_f64());
metric!(my_function_duration_count).add(1.0);
Track the status codes of your responses!
let resp = compute_response();
metric!(responses{code=resp.status()}).add(1.0);
Ok(resp)
Then connect to port 9898 to see what's happening:
$ curl localhost:9898
my_data_cap 1024
my_data_len 764
my_function_duration_count 6032
my_function_duration_sum 8.32
responses{code="200 OK"} 5443
responses{code="404 Not Found"} 587
responses{code="500 Internal Server Error"} 2
Your program can also call epimetheus::query()
to inspect its own metrics.
If you only plan to access the metrics this way, you can skip the call to
spawn_http_server()
.
RUST_METRICS_PORT
environment
variable.my_data_len
above) is fast (~500ns
uncontended, ~5us contended).responses
above) is slower (~1us
uncontended, ~10us contended).Epimetheus is the brother of Prometheus, hence the crate's name.
Please send bug reports to ~asayers/public-inbox@lists.sr.ht.
Please send patches to ~asayers/public-inbox@lists.sr.ht, and include the following text:
I dedicate any and all copyright interest in this software to the public domain. I make this dedication for the benefit of the public at large and to the detriment of my heirs and successors. I intend this dedication to be an overt act of relinquishment in perpetuity of all present and future rights to this software under copyright law.