diff --git a/prog/weave-kube/launch.sh b/prog/weave-kube/launch.sh index c8ba8ebf..9ee11402 100755 --- a/prog/weave-kube/launch.sh +++ b/prog/weave-kube/launch.sh @@ -27,7 +27,7 @@ xt_set_exists() { # Default if not supplied - same as weave net default IPALLOC_RANGE=${IPALLOC_RANGE:-10.32.0.0/12} HTTP_ADDR=${WEAVE_HTTP_ADDR:-127.0.0.1:6784} -STATUS_ADDR=${WEAVE_STATUS_ADDR:-0.0.0.0:6782} +METRICS_ADDR=${WEAVE_METRICS_ADDR:-0.0.0.0:6782} HOST_ROOT=${HOST_ROOT:-/host} CONN_LIMIT=${CONN_LIMIT:-100} DB_PREFIX=${DB_PREFIX:-/weavedb/weave-net} @@ -54,6 +54,12 @@ else fi fi +STATUS_OPTS="--metrics-addr=$METRICS_ADDR" +# --status-addr exposes internal information, so only turn it on if asked to. +if [ -n "${WEAVE_STATUS_ADDR}" ]; then + STATUS_OPTS="$STATUS_OPTS --status-addr=$WEAVE_STATUS_ADDR" +fi + # Default is that npc will be running; allow caller to override WEAVE_NPC_OPTS="--expect-npc" if [ "${EXPECT_NPC}" = "0" ]; then @@ -144,7 +150,7 @@ post_start_actions & /home/weave/weaver $EXTRA_ARGS --port=6783 $(router_bridge_opts) \ --name="$PEERNAME" \ --host-root=$HOST_ROOT \ - --http-addr=$HTTP_ADDR --status-addr=$STATUS_ADDR --docker-api='' --no-dns \ + --http-addr=$HTTP_ADDR $STATUS_OPTS --docker-api='' --no-dns \ --db-prefix="$DB_PREFIX" \ --ipalloc-range=$IPALLOC_RANGE $NICKNAME_ARG \ --ipalloc-init $IPALLOC_INIT \ diff --git a/prog/weaver/main.go b/prog/weaver/main.go index 4db2b796..52a7b6bc 100644 --- a/prog/weaver/main.go +++ b/prog/weaver/main.go @@ -155,6 +155,7 @@ func main() { noDiscovery bool httpAddr string statusAddr string + metricsAddr string ipamConfig ipamConfig dockerAPI string peers []string @@ -192,6 +193,7 @@ func main() { mflag.IntVar(&bridgeConfig.MTU, []string{"-mtu"}, 0, "MTU size") mflag.StringVar(&httpAddr, []string{"-http-addr"}, "", "address to bind HTTP interface to (disabled if blank, absolute path indicates unix domain socket)") mflag.StringVar(&statusAddr, []string{"-status-addr"}, "", "address to bind status+metrics interface to (disabled if blank, absolute path indicates unix domain socket)") + mflag.StringVar(&metricsAddr, []string{"-metrics-addr"}, "", "address to bind metrics interface to (disabled if blank, absolute path indicates unix domain socket)") mflag.StringVar(&ipamConfig.Mode, []string{"-ipalloc-init"}, "", "allocator initialisation strategy (consensus, seed or observer)") mflag.StringVar(&ipamConfig.IPRangeCIDR, []string{"-ipalloc-range"}, "", "IP address range reserved for automatic allocation, in CIDR notation") mflag.StringVar(&ipamConfig.IPSubnetCIDR, []string{"-ipalloc-default-subnet"}, "", "subnet to allocate within by default, in CIDR notation") @@ -474,10 +476,17 @@ func main() { muxRouter.Methods("GET").Path("/metrics").Handler(metricsHandler(router, allocator, ns, dnsserver)) statusMux := http.NewServeMux() statusMux.Handle("/", muxRouter) - Log.Println("Listening for metrics requests on", statusAddr) + Log.Println("Listening for status+metrics requests on", statusAddr) go listenAndServeHTTP(statusAddr, statusMux) } + if metricsAddr != "" { + metricsMux := http.NewServeMux() + metricsMux.Handle("/metrics", metricsHandler(router, allocator, ns, dnsserver)) + Log.Println("Listening for metrics requests on", metricsAddr) + go listenAndServeHTTP(metricsAddr, metricsMux) + } + if plugin != nil { go plugin.Start(httpAddr, dockerCli, waitReady.Add()) }