package obs-prometheus-eio

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Changes

Unreleased

  • Enforce one label-name schema per Prometheus metric family. Later declarations or emitted events with a different label set raise Invalid_argument instead of producing inconsistent exposition output.
  • push now re-raises Eio.Cancel.Cancelled instead of converting cancellation into an ordinary Pushgateway error.
  • push now rejects non-positive timeouts and non-HTTP(S), hostless Pushgateway URLs before attempting a request.

0.1.0

  • Initial standalone OPAM package: obs-eio Prometheus backend, text exposition renderer, and Pushgateway client.
  • Fixed (post-tag, found by independent review of the sibling aws-eio package's identical copy of this code): the HTTPS wrapper (Obs_prometheus_tls) never seeded Mirage_crypto_rng, so every real TLS handshake failed with "The default generator is not yet initialized" — invisible to every test here since none of them exercised real TLS. Fixed with a domain-safe (Atomic+Mutex) cached seed, not a bare Stdlib.Lazy.t (documented unsafe across OCaml 5 domains).
  • Extracted (post-tag): Obs_prometheus_tls moved out to the standalone https-eio package. The same wrapper turned out to be duplicated byte-for-byte in aws-eio's Aws_tls, obs-loki-eio's Obs_loki_tls, and Sun's in-tree Kafka_service_tls. Obs_prometheus_tls is deleted; obs_prometheus.ml now depends on https-eio directly, which also replaces the hand-rolled CA-bundle path list with the maintained ca-certs package. The TLS regression tests moved to https-eio's own test suite.