{-# LANGUAGE OverloadedStrings #-}
import Control.Concurrent
import Control.Concurrent.Async
import Data.Maybe
import qualified Data.Text as T
import LightStep
import System.Environment
import System.Exit
seriousBusinessMain :: IO ()
seriousBusinessMain = concurrently_ frontend backend
where
frontend =
withSpan "RESTful API" $ do
threadDelay 10000
setTag "foo" "bar"
withSpan "Kafka" $ do
threadDelay 20000
setTag "foo" "baz"
threadDelay 30000
withSpan "GraphQL" $ do
threadDelay 40000
setTag "foo" "quux"
withSpan "Mongodb" $ do
threadDelay 50000
setTag "lorem" "ipsum"
threadDelay 60000
threadDelay 70000
backend =
withSpan "Background Data Science" $ do
threadDelay 10000
withSpan "Tensorflow" $ do
threadDelay 100000
setTag "learning" "deep"
withSpan "Torch" $ do
threadDelay 100000
setTag "learning" "very_deep"
withSpan "Hadoop" $ do
threadDelay 100000
setTag "learning" "super_deep"
main :: IO ()
main = do
token <-
lookupEnv "LIGHTSTEP_TOKEN" >>= \case
Just t -> pure $ T.pack t
Nothing -> do
putStrLn "LIGHTSTEP_TOKEN environment variable not defined"
exitFailure
host <- fromMaybe "ingest.lightstep.com" <$> lookupEnv "LIGHTSTEP_HOST"
port <- maybe 443 read <$> lookupEnv "LIGHTSTEP_PORT"
let lsConfig = LightStepConfig host port token "helloworld"
withSingletonLightStep lsConfig seriousBusinessMain