prometheus_client_shelf 1.0.0+1 copy "prometheus_client_shelf: ^1.0.0+1" to clipboard
prometheus_client_shelf: ^1.0.0+1 copied to clipboard

Dart implementation of the Prometheus client library providing a shelf integration.

prometheus_client_shelf #

Pub Version Dart CI

This package exposes Prometheus metrics for shelf using the package prometheus_client. To expose them in your server application the package comes with a shelf handler. In addition, it comes with some plug-in ready metrics for the shelf.

You can find the latest updates in the changelog.

Usage #

A simple usage example:

import 'package:prometheus_client/prometheus_client.dart';
import 'package:prometheus_client/runtime_metrics.dart' as runtime_metrics;
import 'package:prometheus_client_shelf/shelf_metrics.dart' as shelf_metrics;
import 'package:prometheus_client_shelf/shelf_handler.dart';
import 'package:shelf/shelf.dart' as shelf;
import 'package:shelf/shelf_io.dart' as io;
import 'package:shelf_router/shelf_router.dart';

main() async {
  // Register default runtime metrics
  runtime_metrics.register();

  // Create a metric of type counter. 
  // Always register your metric, either at the default registry or a custom one.
  final greetingCounter = Counter(
    name: 'greetings_total',
    help: 'The total amount of greetings',
  )
    ..register();
  final app = Router();

  app.get('/hello', (shelf.Request request) {
    // Every time the hello is called, increase the counter by one 
    greetingCounter.inc();
    return shelf.Response.ok('hello-world');
  });

  // Register a handler to expose the metrics in the Prometheus text format
  app.get('/metrics', prometheusHandler());

  var handler = const shelf.Pipeline()
  // Register a middleware to track request times
      .addMiddleware(shelf_metrics.register())
      .addHandler(app.handler);
  var server = await io.serve(handler, 'localhost', 8080);

  print('Serving at http://${server.address.host}:${server.port}');
}

Start the example application and access the exposed metrics at http://localhost:8080/metrics. For a full usage example, take a look at example/prometheus_client_shelf_example.dart.

Metrics Handler #

This packages comes with a shelf handler that can be used to expose metrics with a shelf server.

Middleware #

To measure request counts and duration by method and status code, this package provides a shelf middleware.

Features and bugs #

Please file feature requests and bugs at the issue tracker.

15
likes
160
points
24
downloads

Documentation

API reference

Publisher

verified publishertentaclelabs.com

Weekly Downloads

Dart implementation of the Prometheus client library providing a shelf integration.

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

collection, prometheus_client, shelf

More

Packages that depend on prometheus_client_shelf