package dns-resolver

  1. Overview
  2. Docs
DNS resolver business logic

Install

dune-project
 Dependency

Authors

Maintainers

Sources

dns-10.2.3.tbz
sha256=c895b2d112c4aa60c0987a09eb59f0d9602bd804fecf4124795be16e4a86734a
sha512=c51c3d123a89fcde187771d405df0be7282c44c9597bdfa54ca9eedc89347a6346ff4ef461ef65557d1b1d0e50eb7d42a39267ffa11bedf1feb37d38f459e10d

doc/src/dns-resolver.shared/dns_resolver_metrics.ml.html

Source file dns_resolver_metrics.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
let resolver_stats =
  let f = function
    | `Error -> "error"
    | `Queries -> "queries"
    | `Blocked -> "blocked"
    | `Clients -> "clients"
  in
  let src = Dns.counter_metrics ~f "dns-resolver" in
  (fun r -> Metrics.add src (fun x -> x) (fun d -> d r))

let response_metric =
  let store = ref (0L, 0L) in
  let data dp =
    store := (Int64.succ (fst !store), Int64.add dp (snd !store));
    Metrics.Data.v [ Metrics.uint "mean response" (Duration.to_ms (Int64.div (snd !store) (fst !store))) ]
  in
  let src = Metrics.Src.v ~tags:Metrics.Tags.[] ~data "dns-resolver-timings" in
  (fun dp -> Metrics.add src (fun x -> x) (fun d -> d dp))