About

Metadata

  • Last updated , by srk
  • License BSD-3-Clause
  • Categories Debugging
  • Maintained by: srk@48.io

  • Lottery factor: 1

Links

Installation

Package Flags

Use the -f option with cabal commands to enable flags

    buildexecutable (off by default)

    Build example executable

Readme

data-prometheus

Pure Prometheus metrics parser and builder.

Usage

Parsing metrics
import qualified Data.Prometheus
import qualified Network.Wreq
import qualified Data.ByteString.Lazy

main :: IO ()
main = do
  r <- Network.Wreq.get "http://localhost:9100/metrics"
  case Data.Prometheus.parseProm
        (Data.ByteString.Lazy.toStrict $ r ^. responseBody)
  of
    Right result -> print result
    Left err -> putStrLn err
Generating metrics

In monadic manner

{-# LANGUAGE OverloadedStrings #-}
import Data.Prometheus
import qualified Data.Text.IO

main :: IO ()
main = do
  Data.Text.IO.putStrLn
  $ runMetrics (metric "readme")
  $ do
    addMetric
      "subMetric"
      (Counter 13)

    logError "something is not right"

    addMetric'
      ( sub "anotherSubMetric"
      . sub "gauge"
      . label "key" "val")
      (Gauge 13)

or alternatively define ToMetrics instances for your data types.

Above example will output:

# HELP readme_gauge_anotherSubMetric 
# TYPE readme_gauge_anotherSubMetric gauge
readme_gauge_anotherSubMetric{key="val"} 13.0
# HELP readme_subMetric 
# TYPE readme_subMetric counter
readme_subMetric 13.0
# ERROR something is not right