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 diff --git a/src/main/java/org/voltdb/meshmonitor/cli/MeshMonitorCommand.java b/src/main/java/org/voltdb/meshmonitor/cli/MeshMonitorCommand.java index db8287c..8827e9a 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 in format [host][:port]. Default is 12223 for all interfaces", + 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());