From a17e9cc8c06854ca280ee205bce27900133b4c00 Mon Sep 17 00:00:00 2001 From: Brian Cunnie Date: Wed, 4 Dec 2024 18:16:17 -0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9E=20Make=20metrics=20more=20readable?= =?UTF-8?q?=20(no=20Unicode)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When using dig to determine the metrics of my servers, e.g. "dig txt metrics.status.sslip.io @ns-ovh.sslip.io +short", one record looks particularly heinous: ``` "Answer \226\137\165 1: 67974722 (651.9/s)" ``` It's supposed to look like this: ``` "Answer ≥ 1: 67974722 (651.9/s)" ``` `dig` doesn't handle Unicode well. So I'm replacing "Answer ≥ 1" with "Answer > 0". No Unicode. It was a worthy effort, but ultimately failed. --- integration_metrics_test.go | 5 ++--- k8s/document_root_sslip.io/index.html | 4 ++-- xip/xip.go | 2 +- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/integration_metrics_test.go b/integration_metrics_test.go index 6ac534e..57f2adf 100644 --- a/integration_metrics_test.go +++ b/integration_metrics_test.go @@ -205,13 +205,12 @@ func getMetrics(port int) (m xip.Metrics) { Expect(err).ToNot(HaveOccurred()) var uptime int var junk string - var greaterThanOrEqualsUnicode string _, err = fmt.Sscanf(string(stdout), "\"Uptime: %d\"\n"+ "\"Blocklist: %s %s %s\n"+ "\"Queries: %d (%s\n"+ // %s "swallows" the `/s"` at the end "\"TCP/UDP: %d/%d\"\n"+ - "\"Answer %s 1: %d (%s\n"+ // %s "swallows" the `/s"` at the end + "\"Answer > 0: %d (%s\n"+ // %s "swallows" the `/s"` at the end "\"A: %d\"\n"+ "\"AAAA: %d\"\n"+ "\"TXT Source: %d\"\n"+ @@ -223,7 +222,7 @@ func getMetrics(port int) (m xip.Metrics) { &junk, &junk, &junk, &m.Queries, &junk, &m.TCPQueries, &m.UDPQueries, - &greaterThanOrEqualsUnicode, &m.AnsweredQueries, &junk, + &m.AnsweredQueries, &junk, &m.AnsweredAQueries, &m.AnsweredAAAAQueries, &m.AnsweredTXTSrcIPQueries, diff --git a/k8s/document_root_sslip.io/index.html b/k8s/document_root_sslip.io/index.html index 5c35806..a6f2db4 100644 --- a/k8s/document_root_sslip.io/index.html +++ b/k8s/document_root_sslip.io/index.html @@ -267,7 +267,7 @@ dig @ns-azure.sslip.io metrics.status.sslip.io txt +short "Blocklist: 2023-10-04 07:37:50-07 3,6" "Queries: 14295231 (86.3/s)" "TCP/UDP: 5231/14290000" - "Answer ≥ 1: 4872793 (29.4/s)" + "Answer > 0: 4872793 (29.4/s)" "A: 4025711" "AAAA: 247215" "TXT Source: 57" @@ -294,7 +294,7 @@ dig @ns-azure.sslip.io metrics.status.sslip.io txt +short
TCP/UDP
This is the number of queries received on the TCP protocol versus the UDP protocol. The sum should equal the number of queries. DNS typically uses the UDP protocol
-
Answer ≥ 1
+
Answer > 0
This consists of two numbers: the first is the number of queries we responded to with at least one record in the answer section, and the second is the first number divided by the uptime (i.e. queries/second). Note that the number of responses with an answer record is typically a fourth the size of the overall responses. diff --git a/xip/xip.go b/xip/xip.go index ba1698a..5f06cac 100644 --- a/xip/xip.go +++ b/xip/xip.go @@ -985,7 +985,7 @@ func TXTMetrics(x *Xip, _ net.IP) (txtResources []dnsmessage.TXTResource, err er len(x.BlocklistCIDRs))) metrics = append(metrics, fmt.Sprintf("Queries: %d (%.1f/s)", x.Metrics.Queries, float64(x.Metrics.Queries)/uptime.Seconds())) metrics = append(metrics, fmt.Sprintf("TCP/UDP: %d/%d", x.Metrics.TCPQueries, x.Metrics.UDPQueries)) - metrics = append(metrics, fmt.Sprintf("Answer ≥ 1: %d (%.1f/s)", x.Metrics.AnsweredQueries, float64(x.Metrics.AnsweredQueries)/uptime.Seconds())) + metrics = append(metrics, fmt.Sprintf("Answer > 0: %d (%.1f/s)", x.Metrics.AnsweredQueries, float64(x.Metrics.AnsweredQueries)/uptime.Seconds())) metrics = append(metrics, fmt.Sprintf("A: %d", x.Metrics.AnsweredAQueries)) metrics = append(metrics, fmt.Sprintf("AAAA: %d", x.Metrics.AnsweredAAAAQueries)) metrics = append(metrics, fmt.Sprintf("TXT Source: %d", x.Metrics.AnsweredTXTSrcIPQueries))