# simple-prom A simple and easy to use module for Prometheus metric exporting. ## Usage Create an instance of SimpleProm using `SimpleProm.init` ```ts import SimpleProm from "simple-prom"; const instance = SimpleProm.init({}); ``` See [IConfig](https://git.eusv.net/Catgirl.Enterprises/simple-prom/src/branch/master/interfaces/IConfig.ts) for config values to use in `SimpleProm.init` ### Self hosted usage SimpleProm can self host it's own http server for metrics polling, simple pass "selfHost: true" in the init config. ```ts const instance = SimpleProm.init({ selfHost: true, selfHostPort: 1337 // Optional, defaults to 9100 }); ``` ### Use your own http server Simply passing an empty config `{}` will get you what you want here, to get the metrics data call `getMetricText()` on your SimpleProm instance. You can then use it as you normally would with anything, in this example with express: ```ts const instance = SimpleProm.init({}); req.get("/metrics", (req, res) => res.end(instance.getMetricText())); ``` ## Creating metrics To add a metric call the `addMetric` method on your SimpleProm instance, passing in a metric object. Currently supported metric types are: - [Counter](https://prometheus.io/docs/concepts/metric_types/#counter) - [Gauge](https://prometheus.io/docs/concepts/metric_types/#gauge) Support for all metric types is planned. Example for Counter: ```ts const instance = SimpleProm.init({}); const httpRequests = instance.addMetric(new Counter("app_http_requests_handled")); httpRequests.setHelpText("The number of HTTP requests handled since startup"); httpRequests.add(1); ``` Example for Gauge: ```ts const instance = SimpleProm.init({}); const onlineUsers = instance.addMetric(new Gauge("app_online_users")); onlineUsers.setHelpText("The number of online users"); onlineUsers.Value = 1234; ```