ú΀Ç|¢/      !"#$%&'()*+,-.None!"#:I!The buckets (bins) that a  Histrogram can sample to.²A histogram samples observations (usually things like request durations or response sizes) and counts them in configurable buckets. It also provides a sum of all observed values.aA gauge is a metric that represents a single numerical value that can arbitrarily go up and down.§Gauges are typically used for measured values like temperatures or current memory usage, but also "counts" that can go up and down, like the number of running threads.ÿgA counter is a cumulative metric that represents a single numerical value that only ever goes up. A counter is typically used to count requests served, tasks completed, errors occurred, etc. Counters should not be used to expose current counts of items whose number can also go down, e.g. the number of currently running threads. Use gauges for this use case.:Failures encountered when attempting to register a metric.9A metric with the given name has already been registered.!The name of the colliding metric.A + is used to build up the list of all known  2s that will be reported to Prometheus. You add a Metric to the Registry with  .BUser readable help text describing what a given metric represents. RThe metric name specifies the general feature of a system that is measured (e.g. http_requests_total– - the total number of HTTP requests received). It may contain ASCII letters and digits, as well as underscores and colons. It must match the regex [a-zA-Z_:][a-zA-Z0-9_:]*. Note that   has a / instance. If you enable "{-# LANGUAGE OverloadedStrings #-}%, you can simply use string literals.See also, the  ,https://prometheus.io/docs/practices/naming/)best practice for metric and label naming.  K describes a specific type of metric, but in an un-registered state. Pass  s to registerMetric( to construct the metric for operation. ûAppend a dynamic label to a metric. A dynamic label is a label that can be assigned different values at runtime. The returned metric is a function from label value to a configured metric. The child metric inherits all of the parent metric's labels.JAs an example of where you might use dynamic labels, consider the metric http_responses_totalc, which counts HTTP responses. If you want to track the status code, you can add a dynamic label code: ºhttpResponsesByCode <- register "http_responses_total" "HTTP responses" mempty (addLabel "code" counter) -- later okResponses <- httpResponsesByCode "200" incCounter okResponses Register a metric with a .Throws: FGiven a computation that registers metrics, assemble a final registry.This is really just 0(, but with a name that has more meaning.Create a new counter.Increment a counter by 1.+Increment a counter by a particular amount.ŒInstrument some code that may throw exceptions by counting the amount of exceptions thrown. The exception will not be caught, only counted.)Create a new gauge, initialising it at 0.Increment a gauge by 1.Decrement a gauge by 1.Set a gauge to an exact value.!Apply a function to move a gauge. Construct 8 from anything list-like containing bucket upper-bounds.JThe input list will be sorted, and does not need to be sorted before hand.$linearBuckets start width numBuckets creates  numBuckets buckets, each width5 wide, where the lowest bucket has an upper bound of start (assuming width is positive).*exponentialBuckets start factor numBuckets creates  numBuckets9 buckets, where the lowest bucket has an upper bound of start- and each following bucket's upper bound is factor) times the previous bucket's upper bound.ÆPre-defined buckets that are probably suitable for IO operations. Upper-bounds are: 1¼s, 10¼s, 100¼s, 1ms, 10ms, 100ms, 200ms, 300ms, 400ms, 500ms, 600ms, 700ms, 800ms, 900ms, 1s, 2s, 4s, 8s, 16s.CCreate a new histogram that samples into a specific set of buckets.6Record an observation into the buckets of a histogram.4Run a computation, recording how long it takes to a .šFork a thread that collects information about the instrumentation process of this application itself. Specifically, the following metrics will be added:'haskell_prometheus_push_latency_seconds3: The latency when pushing metrics to a Pushgateway(haskell_prometheus_push_interval_seconds: The interval between pushes(haskell_prometheus_push_exceptions_total1: Total count of exceptions while pushing metrics&Build WAI middleware that responds to GET requests to pathŸ by streaming Prometheus metrics. This is the typical way to expose instrumentation, allowing Prometheus to collect metrics directly from the app by polling. 5Combining buckets concatenates the series of buckets.@123456789:;<=>?@ABCDEFGH I J The name of this metric.1Descriptive text about what this metric measures. A map of staticl labels, that will be applied whenever the metric is sampled. For dynamic labels (labels that change), see  . The metric to register. $How much to increment a counter by. Note$: negative values will be discarded.KLM !"      (123456789:;<=>?@ABCDEFGH I J KLM !"None:-ƒRegister metrics that record internal GHC runtime metrics, and fork a new thread to periodically update those metrics. Returns the N of the monitoring thread.)The following metrics will be registered:ghc_bytes_allocated_total!: Total number of bytes allocatedghc_num_gcs_totalK: Number of garbage collections performed (any generation, major and minor)ghc_max_bytes_used_total*: Maximum number of live bytes seen so far ghc_num_byte_usage_samples_totalX: Number of byte usage samples taken, or equivalently the number of major GCs performed.ghc_cumulative_bytes_used_total¦: Sum of all byte usage samples, can be used with numByteUsageSamples to calculate averages with arbitrary weighting (if you are sampling this record multiple times).ghc_bytes_copied_total": Number of bytes copied during GCghc_current_bytes_used6: Number of live bytes at the end of the last major GCghc_current_bytes_slop&: Current number of bytes lost to slopghc_max_bytes_slop_total=: Maximum number of bytes lost to slop at any one time so farghc_peak_bytes_allocated_total#: Maximum number of bytes allocatedghc_mutator_cpu_seconds_totali: CPU time spent running mutator threads. This does not include any profiling overhead or initialization.ghc_mutator_wall_seconds_totalV: Wall clock time spent running mutator threads. This does not include initialization.ghc_gc_cpu_seconds_total: CPU time spent running GCghc_gc_wall_seconds_total": Wall clock time spent running GCghc_cpu_seconds_total,: Total CPU time elapsed since program startghc_wall_seconds_total+: Total wall clock time elapsed since startghc_par_bytes_copied_total¸: Number of bytes copied during GC, minus space held by mutable lists held by the capabilities. Can be used with parMaxBytesCopied to determine how well parallel GC utilized all cores.ghc_par_max_bytes_copied_totalÿ: Sum of number of bytes copied each GC by the most active GC thread each GC. The ratio of parTotBytesCopied divided by parMaxBytesCopied approaches 1 for a maximally sequential run and approaches the number of threads (set by the RTS flag -N) for a maximally parallel run.&ghc_prometheus_collection_time_secondsJ: Amount of time spent by the Prometheus library collecting GHC statistics"ghc_prometheus_record_time_secondsI: Amount of time spent by the Prometheus library recording GHC statisticsO-P--O-PNone:.KBuild some very simple middleware that registers some HTTP related metrics:http_requests_total : Total number of HTTP requests.http_latency_seconds#: Overall HTTP transaction latency.....Q      !"#$%&'()*+,-./01234567899:;<<=>?@ABC DDEFG  HIJ3KLMNO.prometheus-effect-1.1.0-2fQb8jMMRnzHKz5OEqPlUN PrometheusPrometheus.GHC!Network.Wai.Middleware.PrometheusBuckets HistogramGaugeCounterRegistrationFailureMetricCollision collidingNameRegistry MetricHelp MetricNameMetricaddLabelregister buildRegistrycounter incCounter incCounterBycountExceptionsgaugeincGaugedecGaugesetGauge adjustGauge mkBuckets linearBucketsexponentialBucketsioDurationBuckets histogramobservetime pushMetricspublishRegistryMiddleware$fMonoidBuckets$fMonoidSumAndCount$fExceptionRegistrationFailure$fOrdMetricName$fEqMetricName$fIsStringMetricName$fHashableMetricName$fShowMetricName$fIsStringMetricHelp$fShowMetricHelp $fShowSample$fMonoidRegistry$fShowRegistrationFailureghcStatsinstrumentRequestsbase Data.StringIsStringtransformers-0.5.2.0 Control.Monad.Trans.State.Strict runStateT SumAndCountsumcountRegisteredMetric metricHelp metricType metricSample MetricTypeTCounter THistogramTGaugeSample sampleName sampleLabels sampleValuestreamRegistry streamMetricrespondWithMetrics GHC.Conc.SyncThreadIdnewUnlabelledMetric mkGhcStats