aboutsummaryrefslogtreecommitdiffstats
path: root/net/adns.lua
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2025-02-07 09:22:52 +0100
committerKim Alvefur <zash@zash.se>2025-02-07 09:22:52 +0100
commitb4e8a8c6c49c7f6b4131eefa9d10d19d768b5e55 (patch)
tree98712f7f37660ddeb413be026805f8691e2422df /net/adns.lua
parent3d61988313d632dd5739a71119bd142fcd9c636b (diff)
downloadprosody-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.lua8
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;
};