From d18ff74b13dc5909575fe0b018ae84a301d29f9d Mon Sep 17 00:00:00 2001 From: Ben Ballard Date: Fri, 6 Jun 2025 12:06:18 -0400 Subject: [PATCH 1/3] ENG-27785: set Content-Type, default metrics server (port 12223) to listen on all interfaces --- .../org/voltdb/meshmonitor/cli/MeshMonitorCommand.java | 4 ++-- .../voltdb/meshmonitor/metrics/MetricsHttpHandler.java | 8 ++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/voltdb/meshmonitor/cli/MeshMonitorCommand.java b/src/main/java/org/voltdb/meshmonitor/cli/MeshMonitorCommand.java index db8287c..0b49312 100644 --- a/src/main/java/org/voltdb/meshmonitor/cli/MeshMonitorCommand.java +++ b/src/main/java/org/voltdb/meshmonitor/cli/MeshMonitorCommand.java @@ -83,8 +83,8 @@ public class MeshMonitorCommand implements Callable { @CommandLine.Option( names = {"-m", "--metrics-bind"}, - description = "Bind address of a metrics server port in format ipv4[:port]", - defaultValue = "127.0.0.1:12223", + description = "Bind address for metrics server: [host][:port], e.g. 0.0.0.0:12223 for all IPv4 interfaces, [::]:12223 for all IPv6 interfaces, 12223 (default) for all interfaces (IPv4 and IPv6)", + defaultValue = "12223", converter = InetSocketAddressConverter.class) private InetSocketAddress metricsBindAddress; diff --git a/src/main/java/org/voltdb/meshmonitor/metrics/MetricsHttpHandler.java b/src/main/java/org/voltdb/meshmonitor/metrics/MetricsHttpHandler.java index b53c0c1..676388b 100644 --- a/src/main/java/org/voltdb/meshmonitor/metrics/MetricsHttpHandler.java +++ b/src/main/java/org/voltdb/meshmonitor/metrics/MetricsHttpHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 Volt Active Data Inc. + * Copyright (C) 2024-2025 Volt Active Data Inc. * * Use of this source code is governed by an MIT * license that can be found in the LICENSE file or at @@ -53,8 +53,12 @@ private void handleGetRequest(HttpExchange httpExchange) throws IOException { try (OutputStream outputStream = httpExchange.getResponseBody()) { StringBuilder output = new StringBuilder(); serverManager.getMonitors().forEach(monitor -> monitorStatsPrinter.print(output, monitor)); - String prometheusResponse = output.toString(); + + // Set Content-Type header (required by Prometheus) + // see: https://prometheus.io/docs/instrumenting/exposition_formats/#text-format-details + httpExchange.getResponseHeaders().set("Content-Type", "text/plain; version=0.0.4; charset=utf-8"); + httpExchange.sendResponseHeaders(200, prometheusResponse.length()); outputStream.write(prometheusResponse.getBytes()); From 7d057da85bb2d432a40abe37b8eca4a72236604e Mon Sep 17 00:00:00 2001 From: Tomasz Kowalczewski Date: Fri, 6 Jun 2025 20:25:28 +0200 Subject: [PATCH 2/3] Non shallow checkout to fix license plugin (#20) --- .github/workflows/release.yml | 2 ++ .github/workflows/test.yml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b9cb6db..d7b2078 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -15,6 +15,8 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - uses: actions/checkout@v3 + with: + fetch-depth: 0 - name: Build the Docker image run: | mkdir target diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c4a3fcb..1580b8f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -15,6 +15,8 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - uses: actions/checkout@v3 + with: + fetch-depth: 0 - name: Run tests in docker container run: | mkdir target From 6e390ef5ab11737f75d2688b91ccfe0edbfa4839 Mon Sep 17 00:00:00 2001 From: Ben Ballard Date: Fri, 6 Jun 2025 14:54:34 -0400 Subject: [PATCH 3/3] shorter -m description --- .../java/org/voltdb/meshmonitor/cli/MeshMonitorCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/voltdb/meshmonitor/cli/MeshMonitorCommand.java b/src/main/java/org/voltdb/meshmonitor/cli/MeshMonitorCommand.java index 0b49312..8827e9a 100644 --- a/src/main/java/org/voltdb/meshmonitor/cli/MeshMonitorCommand.java +++ b/src/main/java/org/voltdb/meshmonitor/cli/MeshMonitorCommand.java @@ -83,7 +83,7 @@ public class MeshMonitorCommand implements Callable { @CommandLine.Option( names = {"-m", "--metrics-bind"}, - description = "Bind address for metrics server: [host][:port], e.g. 0.0.0.0:12223 for all IPv4 interfaces, [::]:12223 for all IPv6 interfaces, 12223 (default) for all interfaces (IPv4 and IPv6)", + description = "Bind address for metrics server in format [host][:port]. Default is 12223 for all interfaces", defaultValue = "12223", converter = InetSocketAddressConverter.class) private InetSocketAddress metricsBindAddress;