diff --git a/changelog/unreleased/kong/default_status_port.yml b/changelog/unreleased/kong/default_status_port.yml new file mode 100644 index 00000000000..ec3c3a510de --- /dev/null +++ b/changelog/unreleased/kong/default_status_port.yml @@ -0,0 +1,3 @@ +message: Enable `status_listen` on `127.0.0.1:8007` by default +type: feature +scope: Admin API diff --git a/kong.conf.default b/kong.conf.default index 6f1fe1f0844..18c578403b4 100644 --- a/kong.conf.default +++ b/kong.conf.default @@ -680,7 +680,8 @@ # # Example: `admin_listen = 127.0.0.1:8444 http2 ssl` -#status_listen = off # Comma-separated list of addresses and ports on +#status_listen = 127.0.0.1:8007 reuseport backlog=16384 + # Comma-separated list of addresses and ports on # which the Status API should listen. # The Status API is a read-only endpoint # allowing monitoring tools to retrieve metrics, diff --git a/kong/templates/kong_defaults.lua b/kong/templates/kong_defaults.lua index 7ff840c17eb..2c0802bc72a 100644 --- a/kong/templates/kong_defaults.lua +++ b/kong/templates/kong_defaults.lua @@ -28,7 +28,7 @@ proxy_listen = 0.0.0.0:8000 reuseport backlog=16384, 0.0.0.0:8443 http2 ssl reus stream_listen = off admin_listen = 127.0.0.1:8001 reuseport backlog=16384, 127.0.0.1:8444 http2 ssl reuseport backlog=16384 admin_gui_listen = 0.0.0.0:8002, 0.0.0.0:8445 ssl -status_listen = off +status_listen = 127.0.0.1:8007 reuseport backlog=16384 cluster_listen = 0.0.0.0:8005 cluster_control_plane = 127.0.0.1:8005 cluster_cert = NONE diff --git a/spec/02-integration/08-status_api/04-config_spec.lua b/spec/02-integration/08-status_api/04-config_spec.lua new file mode 100644 index 00000000000..fd1ac14372c --- /dev/null +++ b/spec/02-integration/08-status_api/04-config_spec.lua @@ -0,0 +1,32 @@ +local helpers = require "spec.helpers" +local cjson = require "cjson" + +for _, strategy in helpers.all_strategies() do + describe("Status API - with strategy #" .. strategy, function() + it("default enable", function() + assert.truthy(helpers.kong_exec("start -c spec/fixtures/default_status_listen.conf")) + local client = helpers.http_client("127.0.0.1", 8007, 20000) + finally(function() + helpers.stop_kong() + client:close() + end) + + local res = assert(client:send { + method = "GET", + path = "/status", + }) + + local body = assert.res_status(200, res) + local json = cjson.decode(body) + assert.is_table(json.server) + + assert.is_number(json.server.connections_accepted) + assert.is_number(json.server.connections_active) + assert.is_number(json.server.connections_handled) + assert.is_number(json.server.connections_reading) + assert.is_number(json.server.connections_writing) + assert.is_number(json.server.connections_waiting) + assert.is_number(json.server.total_requests) + end) + end) +end diff --git a/spec/fixtures/default_status_listen.conf b/spec/fixtures/default_status_listen.conf new file mode 100644 index 00000000000..5e9b45b7f20 --- /dev/null +++ b/spec/fixtures/default_status_listen.conf @@ -0,0 +1,26 @@ +# 1st digit is 9 for our test instances +admin_listen = 127.0.0.1:9001 +proxy_listen = 0.0.0.0:9000, 0.0.0.0:9443 ssl + +ssl_cert = spec/fixtures/kong_spec.crt +ssl_cert_key = spec/fixtures/kong_spec.key + +admin_ssl_cert = spec/fixtures/kong_spec.crt +admin_ssl_cert_key = spec/fixtures/kong_spec.key + +database = postgres +pg_host = 127.0.0.1 +pg_port = 5432 +pg_timeout = 10000 +pg_database = kong_tests +anonymous_reports = off + +dns_hostsfile = spec/fixtures/hosts + +nginx_main_worker_processes = 1 +nginx_main_worker_rlimit_nofile = NONE +nginx_events_worker_connections = NONE +nginx_events_multi_accept = off + +prefix = servroot +log_level = debug diff --git a/spec/kong_tests.conf b/spec/kong_tests.conf index f7c101f231e..9e53b8ae254 100644 --- a/spec/kong_tests.conf +++ b/spec/kong_tests.conf @@ -2,6 +2,8 @@ admin_listen = 127.0.0.1:9001 admin_gui_listen = off proxy_listen = 0.0.0.0:9000, 0.0.0.0:9443 http2 ssl, 0.0.0.0:9002 http2 +# avoid port conflicts when multiple Kong instances needed for tests +status_listen = off stream_listen = off ssl_cert = spec/fixtures/kong_spec.crt