feat(users/Profpatsch/whatcd-resolver): trace http requests
Move the http calls into their own module, so we can trace the request and provide a simple copy-to-replay command. We have to work around a bug in the otel library, which would limit our attribute value length to 128 bytes because it uses the wrong option value. ~~~ `ifExists` is finally made more useful for dealing with optional attributes in e.g. lists. Change-Id: Iafab523e9ec4b00136db43f31fdc12aeefb7f77c Reviewed-on: https://cl.tvl.fyi/c/depot/+/11241 Tested-by: BuildkiteCI Autosubmit: Profpatsch <mail@profpatsch.de> Reviewed-by: Profpatsch <mail@profpatsch.de>
This commit is contained in:
parent
0b78998509
commit
eeb5e7abd6
10 changed files with 201 additions and 42 deletions
|
|
@ -40,6 +40,7 @@ import Network.URI qualified as URI
|
|||
import Network.Wai qualified as Wai
|
||||
import Network.Wai.Handler.Warp qualified as Warp
|
||||
import Network.Wai.Parse qualified as Wai
|
||||
import OpenTelemetry.Attributes qualified as Otel
|
||||
import OpenTelemetry.Trace qualified as Otel hiding (getTracer, inSpan, inSpan')
|
||||
import OpenTelemetry.Trace.Monad qualified as Otel
|
||||
import Parse (Parse)
|
||||
|
|
@ -596,7 +597,22 @@ withTracer f = do
|
|||
setDefaultEnv "OTEL_SERVICE_NAME" "whatcd-resolver"
|
||||
bracket
|
||||
-- Install the SDK, pulling configuration from the environment
|
||||
Otel.initializeGlobalTracerProvider
|
||||
( do
|
||||
(processors, opts) <- Otel.getTracerProviderInitializationOptions
|
||||
tp <-
|
||||
Otel.createTracerProvider
|
||||
processors
|
||||
-- workaround the attribute length bug https://github.com/iand675/hs-opentelemetry/issues/113
|
||||
( opts
|
||||
{ Otel.tracerProviderOptionsAttributeLimits =
|
||||
opts.tracerProviderOptionsAttributeLimits
|
||||
{ Otel.attributeCountLimit = Just 65_000
|
||||
}
|
||||
}
|
||||
)
|
||||
Otel.setGlobalTracerProvider tp
|
||||
pure tp
|
||||
)
|
||||
-- Ensure that any spans that haven't been exported yet are flushed
|
||||
Otel.shutdownTracerProvider
|
||||
-- Get a tracer so you can create spans
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue