package dns-resolver

  1. Overview
  2. Docs
DNS resolver business logic

Install

dune-project
 Dependency

Authors

Maintainers

Sources

dns-10.2.2.tbz
sha256=5123d7167f5fb3a5ab70cf0b3ccc965089ec440dc07edeabf8c0568ee737a7f0
sha512=4e5945435f280591c158ab03fec19dc0c807fb713d6ee68873939899c49175f39af1fbcd135517514a3ab088993356a4c303f7dce5e18d403d4630a33bad9076

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))