diff --git a/.npmignore b/.npmignore index 9c0e9ad..b42ea12 100644 --- a/.npmignore +++ b/.npmignore @@ -1,6 +1,10 @@ .github/* index.ts tsconfig.json +lib/test/* +interfaces/* +objects/* +test/* # Logs logs diff --git a/README.md b/README.md index ff535ce..08d654b 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,58 @@ # simple-prom -A simple and easy to use module for Prometheus metric exporting. \ No newline at end of file +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; +``` \ No newline at end of file diff --git a/objects/Guage.ts b/objects/Gauge.ts similarity index 100% rename from objects/Guage.ts rename to objects/Gauge.ts diff --git a/package-lock.json b/package-lock.json index fd8b1ca..7a32237 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "simple-prom", - "version": "1.0.0", + "version": "1.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "simple-prom", - "version": "1.0.0", + "version": "1.0.1", "license": "MIT", "dependencies": { "funky-array": "^1.0.0" diff --git a/package.json b/package.json index f472006..e50b745 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "simple-prom", - "version": "1.0.0", + "version": "1.0.1", "description": "A simple and easy to use module for Prometheus metric exporting.", "main": "./lib/index.js", "types": "./lib/index.d.ts", diff --git a/test/testServer.ts b/test/testServer.ts index 073e0e6..67ee302 100644 --- a/test/testServer.ts +++ b/test/testServer.ts @@ -3,7 +3,7 @@ import SimpleProm from "../index"; import Counter from "../objects/Counter"; -import Gauge from "../objects/Guage"; +import Gauge from "../objects/Gauge"; const instance = SimpleProm.init({ selfHost: true