# metric2fs-rs A simple graphite metric metadata storage. This is a POC. ## Features Handle most, but not all, graphite paths style & wildcards listed on https://graphite.readthedocs.io/en/latest/render_api.html#paths-and-wildcards * Asterisk globbing (eg: `test*`); * List & ranges (eg: `[a-z0-9]` or `[abc]`); * Value lists (eg: `{abc,def}`). However, the double star globbing is not supported (eg: `**`). ## Build & run ```sh cargo build RUST_LOG=debug cargo run ``` ## API ### Write a metric Send a POST request to `/metric` with metric(s) in the body ```sh curl -sq -d testaroo.a.a.a http://localhost:3000/metric ``` ### Retrieve metrics Send a GET request to `/metric` with `q=` parameter as a globbing expression ```sh curl "http://localhost:3000/metric?q=te*ar*.\{a\}.\{b,c\}.\[bcd\]" ``` ## Testing ```sh for metric in testaroo.{a,b,c}.{a,b,c}.{a,b,c,d,e,f}; do curl -sq -d $metric http://localhost:3000/metric ; done curl "http://localhost:3000/metric?q=te*ar*.\{a\}.\{b,c\}.\[b-e\]" testaroo.a.b.b testaroo.a.b.c testaroo.a.b.d testaroo.a.b.e testaroo.a.c.b testaroo.a.c.c testaroo.a.c.d testaroo.a.c.e ```