mrkurt / promts

TypeScript Native Prometheus Client for Deno

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

id title sidebar_label
promts
README
README

promts

promts is a native TypeScript based implementation of promclient. Create Prometheus compatible metrics for your TypeScript/Deno Service.

Pronounced: Prom-tsss

Table of Contents

Background

Since no current TypeScript Native implementation for Node.JS or Deno seemed to exist, promts fills the gap. This allows for your TypeScript code to have type checking on the promclient types.

Install

Usage from Deno

    import { MetricsManager } from 'https://deno.land/x/promts@v0.1.14/mod.ts'

Usage

Counters

Counters are monotonically increasing--counters never go down. Think http request.

    import { MetricsManager } from 'https://deno.land/x/promts@v0.1.14/mod.ts'
    const httpTotalRequests = MetricsManager.getCounter("http_requests_total")
      .with({ service: "web" });
    httpTotalRequests.inc();

Gauges

Gauges can go up and down... Think water levels, temperature, thread counts.

    import { MetricsManager } from 'https://deno.land/x/promts@v0.1.14/mod.ts'
    const processCount = MetricsManager.getGauge("process_count").with({app:"server"});
    processCount.inc(); // 1
    processCount.inc(3);
    processCount.dec();
    processCount.getTotal(); // 3

Histogram

Histograms can be though of as a list of counters. These counters each represent a bucket. Buckets have a label le which denotes the upper bound. Histograms also contain their sum and count.

    import { MetricsManager } from 'https://deno.land/x/promts@v0.1.14/mod.ts'
    const histogram = new Histogram("http_request_duration");
    histogram.observe(0.01);
    histogram.observe(0.1);
    histogram.observe(5);
    histogram.observe(5);
    histogram.getCount(); // 4
    histogram.getSum();   // 10.11
    histogram.toString(); // dump to string

Pushgateway

    const pushgateway = new PushGateway("test_job");
    pushgateway.sendOnInterval(MetricsManager);

Dumping the metrics in prometheus format

    import { MetricsManager } from 'https://deno.land/x/promts@v0.1.14/mod.ts'
    const metricsData = MetricsManager.toString();

Contribute

Please refer to CONTRIBUTIONS.md for information about how to get involved. We welcome issues, questions, and pull requests.

Maintainers

License

  • This project is licensed under the terms of the MIT open source license. Please refer to LICENSE for the full terms.

Future Roadmap

  • Add support for configurable histogram buckets.
  • Add the summary metric type.

About

TypeScript Native Prometheus Client for Deno

License:MIT License


Languages

Language:TypeScript 97.1%Language:Makefile 2.0%Language:JavaScript 0.9%