packages feed

prometheus-effect-1.1.0: weight/Weight.hs

{-# LANGUAGE OverloadedStrings, RecordWildCards #-}

module Main where

import Data.Monoid
import Weigh
import Prometheus
import Data.Text
import System.Mem
import Control.Concurrent

data Metrics = Metrics
  { testCounter :: Counter
  , testGauge :: Gauge
  , testHistogram :: Histogram
  , testDyns :: Text -> IO Counter
  }

main :: IO ()
main = do
  (Metrics {..}, registry) <-
    buildRegistry $
    Metrics <$> register "counter" "" mempty counter <*>
    register "gauge" "" mempty gauge <*>
    register "histogram" "" mempty (histogram (linearBuckets 0 1 10))
    <*> register "dyn" "" mempty (addLabel "k" counter)
  performGC
  threadDelay 10000
  incCounter testCounter
  -- putStrLn "Going"
  mainWith $ do
    action "incCounter" (incCounter testCounter)
    action "addCounter" (incCounterBy testCounter 10)
    action "incGauge" (incGauge testGauge)
    action "decGauge" (decGauge testGauge)
    action "resetGauge" (setGauge testGauge 10)
    action "observe" (observe 1 testHistogram)
    action "incDynNew" (testDyns "hello" >>= incCounter)
    action "incDynExisting" (testDyns "hello" >>= incCounter)
  seq registry (return ())
-- action "incCounter" (incCounter c)
-- action "addCounter" (addCounter 10 c)
-- action "incGauge" (incGaugeBy 1 g)
-- action "decGauge" (decGaugeBy 1 g)
-- action "resetGauge" (resetGauge 10 g)
-- action "observe" (observe 1 h)