opentelemetry-lightstep-0.3.0: src/OpenTelemetry/Lightstep/Exporter.hs
{-# LANGUAGE OverloadedStrings #-}
module OpenTelemetry.Lightstep.Exporter where
import Control.Concurrent.Async
import Control.Concurrent.STM
import Control.Monad.IO.Class
import Data.Aeson
import qualified Data.HashMap.Strict as HM
import Data.Scientific
import qualified Data.Text as T
import Network.HTTP.Client
import Network.HTTP.Client.TLS
import Network.HTTP.Types
import OpenTelemetry.Common
import OpenTelemetry.Exporter
import OpenTelemetry.Lightstep.Config
import OpenTelemetry.SpanContext
import OpenTelemetry.ZipkinExporter
import Text.Printf
createLightstepSpanExporter :: MonadIO m => LightstepConfig -> m (Exporter Span)
createLightstepSpanExporter cfg@(LightstepConfig {..}) = liftIO do
let zcfg =
ZipkinConfig
{ zEndpoint = printf "https://%s:%d/api/v2/spans" lsHostName (fromIntegral lsPort :: Int),
zServiceName = lsServiceName,
zGlobalTags =
[ ("lightstep.component", lsServiceName),
("lightstep.access_token", lsToken)
],
zSpanQueueSize = lsSpanQueueSize,
zGracefulShutdownTimeoutSeconds = lsGracefulShutdownTimeoutSeconds
}
createZipkinSpanExporter zcfg