diff net/adns.lua @ 13659:5abdcad8c2e0

net.adns: Collect DNS lookup timing metrics Nice to have this in OpenMetricts instead of debug logs
author Kim Alvefur <zash@zash.se>
date Fri, 07 Feb 2025 09:22:52 +0100
parents ba409c67353b
children
line wrap: on
line diff
--- a/net/adns.lua	Thu Feb 06 17:37:59 2025 +0000
+++ b/net/adns.lua	Fri Feb 07 09:22:52 2025 +0100
@@ -74,11 +74,17 @@
 	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 @@
 					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 @@
 	end;
 	resolver = new_async_resolver;
 	new_async_socket = new_async_socket;
+	instrument = function(measure_) measure = measure_; end;
 };