diff options
author | Kim Alvefur <zash@zash.se> | 2025-02-07 09:22:52 +0100 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2025-02-07 09:22:52 +0100 |
commit | b4e8a8c6c49c7f6b4131eefa9d10d19d768b5e55 (patch) | |
tree | 98712f7f37660ddeb413be026805f8691e2422df /net/adns.lua | |
parent | 3d61988313d632dd5739a71119bd142fcd9c636b (diff) | |
download | prosody-b4e8a8c6c49c7f6b4131eefa9d10d19d768b5e55.tar.gz prosody-b4e8a8c6c49c7f6b4131eefa9d10d19d768b5e55.zip |
net.adns: Collect DNS lookup timing metrics
Nice to have this in OpenMetricts instead of debug logs
Diffstat (limited to 'net/adns.lua')
-rw-r--r-- | net/adns.lua | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/net/adns.lua b/net/adns.lua index 2ecd7f53..59f19302 100644 --- a/net/adns.lua +++ b/net/adns.lua @@ -74,11 +74,17 @@ local function new_async_socket(sock, resolver) return handler; end +local function measure(_qclass, _qtype) + return measure; +end + function async_resolver_methods:lookup(handler, qname, qtype, qclass) local resolver = self._resolver; + local m = measure(qclass or "IN", qtype or "A"); return coroutine.wrap(function (peek) if peek then log("debug", "Records for %s already cached, using those...", qname); + m(); handler(peek); return; end @@ -89,6 +95,7 @@ function async_resolver_methods:lookup(handler, qname, qtype, qclass) log("debug", "Reply for %s (%s)", qname, coroutine.running()); end if ok then + m(); ok, err = pcall(handler, resolver:peek(qname, qtype, qclass)); else log("error", "Error sending DNS query: %s", err); @@ -129,4 +136,5 @@ return { end; resolver = new_async_resolver; new_async_socket = new_async_socket; + instrument = function(measure_) measure = measure_; end; }; |