tracing-0.0.1.1: app/ZipkinExample.hs
{-# LANGUAGE OverloadedStrings #-}
{-| A simple tracing example which publishes traces to a local Zipkin server. -}
module Main where
import Control.Concurrent (threadDelay)
import Control.Monad (void)
import Monitor.Tracing
import qualified Monitor.Tracing.Zipkin as Zipkin
example :: (MonadTrace m, MonadUnliftIO m) => m ()
example = Zipkin.rootSpan Zipkin.Accept "something" $ do
Zipkin.annotate "log2"
Zipkin.tag "tag2" "def"
liftIO $ threadDelay 100000
Zipkin.localSpan "A" $ do
void $ tracedForkIO $ Zipkin.localSpan "aa" $ do
liftIO $ threadDelay 20000
Zipkin.annotate "log1"
Zipkin.tag "tag1" "def"
liftIO $ threadDelay 10000
Zipkin.localSpan "B" $ liftIO $ threadDelay 30000
main :: IO ()
main = do
zipkin <- Zipkin.new $ Zipkin.defaultSettings
{ Zipkin.settingsEndpoint = Just $ Zipkin.defaultEndpoint
{ Zipkin.endpointService = Just "print-spans" }
, Zipkin.settingsHost = "localhost" }
Zipkin.run zipkin example
Zipkin.publish zipkin