You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bookkeeper.apache.org by eo...@apache.org on 2021/01/27 07:38:33 UTC
[bookkeeper] branch master updated: Allow to configure Prometheus
HTTP Server bind address
This is an automated email from the ASF dual-hosted git repository.
eolivelli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git
The following commit(s) were added to refs/heads/master by this push:
new c5d7026 Allow to configure Prometheus HTTP Server bind address
c5d7026 is described below
commit c5d7026cc38ce3fdfcac8f569327c1d4837813ad
Author: Shoothzj <sh...@gmail.com>
AuthorDate: Wed Jan 27 15:38:26 2021 +0800
Allow to configure Prometheus HTTP Server bind address
Descriptions of the changes in this PR:
make prometheus bind addr can cofigure
### Motivation
For security, make prometheus bind addr can config.
For compatibility, make default value is 0.0.0.0
### Changes
make prometheus bind addr can cofigure
Reviewers: Enrico Olivelli <eo...@gmail.com>, Sijie Guo <si...@apache.org>
This closes #2543 from Shoothzj/promethes_addr
---
.../stats/prometheus/PrometheusMetricsProvider.java | 6 +++++-
.../stats/prometheus/TestPrometheusMetricsProvider.java | 15 +++++++++++++++
conf/bk_server.conf | 5 ++++-
site/_data/config/bk_server.yaml | 3 +++
4 files changed, 27 insertions(+), 2 deletions(-)
diff --git a/bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/prometheus/PrometheusMetricsProvider.java b/bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/prometheus/PrometheusMetricsProvider.java
index 0b4c0c2..f999068 100644
--- a/bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/prometheus/PrometheusMetricsProvider.java
+++ b/bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/prometheus/PrometheusMetricsProvider.java
@@ -63,6 +63,9 @@ public class PrometheusMetricsProvider implements StatsProvider {
public static final String PROMETHEUS_STATS_HTTP_ENABLE = "prometheusStatsHttpEnable";
public static final boolean DEFAULT_PROMETHEUS_STATS_HTTP_ENABLE = true;
+ public static final String PROMETHEUS_STATS_HTTP_ADDRESS = "prometheusStatsHttpAddress";
+ public static final String DEFAULT_PROMETHEUS_STATS_HTTP_ADDR = "0.0.0.0";
+
public static final String PROMETHEUS_STATS_HTTP_PORT = "prometheusStatsHttpPort";
public static final int DEFAULT_PROMETHEUS_STATS_HTTP_PORT = 8000;
@@ -124,8 +127,9 @@ public class PrometheusMetricsProvider implements StatsProvider {
boolean bkHttpServerEnabled = conf.getBoolean("httpServerEnabled", false);
// only start its own http server when prometheus http is enabled and bk http server is not enabled.
if (httpEnabled && !bkHttpServerEnabled) {
+ String httpAddr = conf.getString(PROMETHEUS_STATS_HTTP_ADDRESS, DEFAULT_PROMETHEUS_STATS_HTTP_ADDR);
int httpPort = conf.getInt(PROMETHEUS_STATS_HTTP_PORT, DEFAULT_PROMETHEUS_STATS_HTTP_PORT);
- InetSocketAddress httpEndpoint = InetSocketAddress.createUnresolved("0.0.0.0", httpPort);
+ InetSocketAddress httpEndpoint = InetSocketAddress.createUnresolved(httpAddr, httpPort);
this.server = new Server(httpEndpoint);
ServletContextHandler context = new ServletContextHandler();
context.setContextPath("/");
diff --git a/bookkeeper-stats-providers/prometheus-metrics-provider/src/test/java/org/apache/bookkeeper/stats/prometheus/TestPrometheusMetricsProvider.java b/bookkeeper-stats-providers/prometheus-metrics-provider/src/test/java/org/apache/bookkeeper/stats/prometheus/TestPrometheusMetricsProvider.java
index 8e90e04..5fd34a3 100644
--- a/bookkeeper-stats-providers/prometheus-metrics-provider/src/test/java/org/apache/bookkeeper/stats/prometheus/TestPrometheusMetricsProvider.java
+++ b/bookkeeper-stats-providers/prometheus-metrics-provider/src/test/java/org/apache/bookkeeper/stats/prometheus/TestPrometheusMetricsProvider.java
@@ -90,6 +90,21 @@ public class TestPrometheusMetricsProvider {
}
@Test
+ public void testStartWithHttpSpecifyAddr() {
+ PropertiesConfiguration config = new PropertiesConfiguration();
+ config.setProperty(PrometheusMetricsProvider.PROMETHEUS_STATS_HTTP_ENABLE, true);
+ config.setProperty(PrometheusMetricsProvider.PROMETHEUS_STATS_HTTP_PORT, 0); // ephemeral
+ config.setProperty(PrometheusMetricsProvider.PROMETHEUS_STATS_HTTP_ADDRESS, "127.0.0.1");
+ PrometheusMetricsProvider provider = new PrometheusMetricsProvider();
+ try {
+ provider.start(config);
+ assertNotNull(provider.server);
+ } finally {
+ provider.stop();
+ }
+ }
+
+ @Test
public void testCounter() {
LongAdderCounter counter = new LongAdderCounter();
long value = counter.get();
diff --git a/conf/bk_server.conf b/conf/bk_server.conf
index 64a7b48..12a443f 100755
--- a/conf/bk_server.conf
+++ b/conf/bk_server.conf
@@ -787,7 +787,10 @@ zkEnableSecurity=false
# These configs are used when using `PrometheusMetricsProvider`.
# statsProviderClass=org.apache.bookkeeper.stats.prometheus.PrometheusMetricsProvider
-# Default port for Prometheus metrics exporter
+# default bind address for Prometheus metrics exporter
+# prometheusStatsHttpAddress=0.0.0.0
+
+# default port for Prometheus metrics exporter
# prometheusStatsHttpPort=8000
# latency stats rollover interval, in seconds
diff --git a/site/_data/config/bk_server.yaml b/site/_data/config/bk_server.yaml
index f1a72c8..167844f 100644
--- a/site/_data/config/bk_server.yaml
+++ b/site/_data/config/bk_server.yaml
@@ -554,6 +554,9 @@ groups:
- name: Prometheus Metrics Provider Settings
params:
+ - param: prometheusStatsHttpAddress
+ description: default bind address for Prometheus metrics exporter
+ default: 0.0.0.0
- param: prometheusStatsHttpPort
description: default port for prometheus metrics exporter
default: 8000