h$&      !"#$%None >core-telemetryOutput metrics to the terminal. This is mostly useful for debugging, but it can also be used as general output mechanism if your program is mostly concerned with gathering metrics and displaying them.None None >0core-telemetry=Indicate which "dataset" spans and events will be posted intocore-telemetryConfigure your application to send telemetry in the form of spans and traces to the Honeycomb observability service.  context <-  ... context' <-  [] context   context' ... None > core-telemetryA telemetry value that can be sent over the wire. This is a wrapper around JSON values of type string, number, or boolean. You create these using the   method provided by a  " instance and passing them to the  function in a span or  if noting an event. core-telemetryRecord the name of the service that this span and its children are a part of. A reasonable default is the name of the binary that's running, but frequently you'll want to put something a bit more nuanced or specific to your application. This is the overall name of the independent service, component, or program complimenting the label set when calling , which by contrast descibes the name of the current phase, step, or even function name within the overall scope of the "service".This will end up as the  service_name parameter when exported.core-telemetry4Activate the telemetry subsystem for use within the   monad.Each exporter specified here will add setup and configuration to the context, including command-line options and environment variables needed as approrpiate:  context' <-  [  ] context This will allow you to then select the appropriate backend at runtime: $ !burgerservice --telemetry=console 8which will result in it spitting out metrics as it goes,  calories = 667.0 flavour = true meal_name = "hamburger" precise = 45.0  and so on.core-telemetry Begin a span.You need to call this from within the context of a trace, which is established either by calling  or + somewhere above this point in the program.You can nest spans as you make your way through your program, which means each span has a parent (except for the first one, which is the root span) In the context of a trace, allows an observability tool to reconstruct the sequence of events and to display them as a nested tree correspoding to your program flow.1The current time will be noted when entering the &< this span encloses, and its duration recorded when the sub Program exits. Start time, duration, the unique identifier of the span (generated for you), the identifier of the parent, and the unique identifier of the overall trace will be appended as metadata points and then sent to the telemetry channel.core-telemetry9Start a new trace. A random identifier will be generated.You must have a single "root span" immediately below starting a new trace.  program ::     () program = do  $ do ( "Service Request" $ do ... core-telemetryBegin a new trace, but using a trace identifier provided externally. This is the most common case. Internal services that are play a part of a larger request will inherit a job identifier, sequence number, or other externally supplied unique code. Even an internet facing web service might have a correlation ID provided by the outside load balancers.If you are continuting an existing trace within the execution path of another, larger, enclosing service then you need to specify what the parent span's identifier is in the second argument.  program ::     () program = do -- do something that gets the trace ID trace <- ... -- and something to get the parent span ID parent <- ...  ( trace) (' ( span)) $ do , "Internal processing" $ do ... core-telemetry%Add measurements to the current span.   [   "calories" (667 :: () ,  % "precise" measurement ,   "meal_name" ("hamburger" :: )) ,   "flavour" * ] The  3 function is a method provided by instances of the  Telemtetry typeclass which is mostly a wrapper around constructing key/value pairs suitable to be sent as measurements up to an observability service.core-telemetryRecord telemetry about an event. Specify a label for the event and then whichever metrics you wish to record.The emphasis of this package is to create traces and spans. There are, however, times when you just want to send telemetry about an event. You can use  to accomplish this.If you do call ' within an enclosing span created with  (the usual and expected use case) then this event will be "linked" to this span so that the observability tool can display it attached to the span in the in which it occured.  & "Make tea" [   "sugar" + ] core-telemetry,Override the start time of the current span.Under normal circumstances this shouldn't be necessary. The start and end of a span are recorded automatically when calling . Observabilty tools are designed to be used live; traces and spans should be created in real time in your code.core-telemetry%The usual warning about assuming the  ByteString is ASCII or UTF-8 applies here. Don't use this to send binary mush.core-telemetry%The usual warning about assuming the  ByteString is ASCII or UTF-8 applies here. Don't use this to send binary mush.   None >%core-telemetryOutput metrics to stdout" in the form of a raw JSON object.%% None %,  !"#$%&'()*+,-./01 23456789:56;56<=-core-telemetry-0.1.7.2-8fEZre2YGckLEf0ikHYOjmCore.Telemetry.ObservabilityCore.Telemetry.ConsoleCore.Telemetry.GeneralCore.Telemetry.HoneycombCore.Telemetry.StructuredCore.Program.Execute configureinitializeTelemetry executeWithProgramconsoleExporterNoneCore.Telemetry+core-program-0.3.2.0-7pynv9MGjJGLLTEocRcHw0Core.Program.ContextSpanTraceExportergeneralExporterDatasethoneycombExporterLabel Telemetrymetric MetricValuesetServiceName encloseSpan beginTrace usingTrace telemetry sendEvent setStartTime$fTelemetryJsonValue$fTelemetryBool$fTelemetryText$fTelemetryText0$fTelemetryByteString$fTelemetryByteString0 $fTelemetry[]$fTelemetryRope$fTelemetryScientific$fTelemetryDouble$fTelemetryFloat$fTelemetryInteger$fTelemetryInt64$fTelemetryInt32$fTelemetryInt$fShowMetricValuestructuredExporterbase GHC.MaybeJustghc-prim GHC.TypesInt(core-text-0.3.5.0-7nNKEmJTl05KmKc2n81kwLCore.Text.RopeRopeTrueFalse