The prometheus package

[ Tags: bsd3, library, metrics, monitoring, system, web ] [ Propose Tags ]
Prometheus Haskell Client

A simple and modern, type safe, idiomatic Haskell client for Prometheus monitoring. Specifically there is no use of unsafe IO or manual ByteString construction from lists of bytes. Batteries-included web server.

Usage Example
module Example where

import           Control.Monad.IO.Class                         (liftIO)
import           System.Metrics.Prometheus.Concurrent.Http      (serveHttpTextMetricsT)
import           System.Metrics.Prometheus.Concurrent.RegistryT
import           System.Metrics.Prometheus.Metric.Counter       (inc)
import           System.Metrics.Prometheus.MetricId

main :: IO ()
main = runRegistryT $ do
    -- Labels can be defined as lists or added to an empty label set
    connectSuccessGauge <- registerGauge "example_connections" (fromList [("login", "success")])
    connectFailureGauge <- registerGauge "example_connections" (addLabel "login" "failure" mempty)
    connectCounter <- registerCounter "example_connection_total" mempty
    latencyHistogram <- registerHistogram "example_round_trip_latency_ms" mempty [10, 20..100]

    liftIO $ inc connectCounter -- increment a counter

    -- [...] pass metric handles to the rest of the app

    serveHttpTextMetricsT 8080 ["metrics"] -- http://localhost:8080/metric server
Advanced Usage

A Registry and StateT-based RegistryT are available for unit testing or generating lists of `[IO a]` actions that can be sequenced and returned from pure code to be applied.


[Skip to Readme]

Properties

Versions 0.1.0.0, 0.1.0.1, 0.1.0.2, 0.1.0.3, 0.1.1, 0.2.0, 0.3.0, 0.3.1, 0.3.2, 0.3.2.1, 0.4.0, 0.4.1, 0.4.2
Dependencies atomic-primops (==0.8.*), base (>=4.7 && <4.11), bytestring (==0.10.*), containers (==0.5.*), http-types (>=0.8 && <0.10), text (==1.2.*), transformers (>=0.4 && <0.6), wai (==3.2.*), warp (==3.2.*) [details]
License BSD3
Copyright Bitnomial, Inc. (c) 2016
Author Luke Hoersten
Maintainer luke@bitnomial.com, opensource@bitnomial.com
Category Metrics, Monitoring, Web, System
Home page http://github.com/bitnomial/prometheus
Bug tracker http://github.com/bitnomial/prometheus/issues
Source repository head: git clone https://github.com/bitnomial/prometheus
Uploaded Thu Sep 7 16:04:45 UTC 2017 by LukeHoersten
Distributions NixOS:0.4.2
Downloads 552 total (39 in the last 30 days)
Rating 0.0 (0 ratings) [clear rating]
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2017-09-07 [all 1 reports]
Hackage Matrix CI

Modules

[Index]

Downloads

Maintainer's Corner

For package maintainers and hackage trustees


Readme for prometheus-0.4.2

[back to package description]

Prometheus Haskell Client

A simple and modern, type safe, idiomatic Haskell client for Prometheus monitoring. Specifically there is no use of unsafe IO or manual ByteString construction from lists of bytes. Batteries-included web server. . [Usage Example]

Usage Example

{-# LANGUAGE OverloadedStrings #-}

module Example where

import           Control.Monad.IO.Class                         (liftIO)
import           System.Metrics.Prometheus.Concurrent.Http      (serveHttpTextMetricsT)
import           System.Metrics.Prometheus.Concurrent.RegistryT
import           System.Metrics.Prometheus.Metric.Counter       (inc)
import           System.Metrics.Prometheus.MetricId

main :: IO ()
main = runRegistryT $ do
    -- Labels can be defined as lists or added to an empty label set
    connectSuccessGauge <- registerGauge "example_connections" (fromList [("login", "success")])
    connectFailureGauge <- registerGauge "example_connections" (addLabel "login" "failure" mempty)
    connectCounter <- registerCounter "example_connection_total" mempty
    latencyHistogram <- registerHistogram "example_round_trip_latency_ms" mempty [10, 20..100]

    liftIO $ inc connectCounter -- increment a counter

    -- [...] pass metric handles to the rest of the app

    serveHttpTextMetricsT 8080 ["metrics"] -- http://localhost:8080/metric server

Advanced Usage

A Registry and StateT-based RegistryT are available for unit testing or generating lists of [IO a] actions that can be sequenced and returned from pure code to be applied.

Tasks

  • [ ] Implement help docstrings.
  • [ ] Implement GHC-specific metrics.
  • [ ] Implement summary metric.
  • [ ] Encode name and labels on register.
  • [x] Implement ReaderT for Concurrent Registry.
  • [x] Library documentation and example.
  • [ ] Name and label validation