Skip to content

Commit

Permalink
fix(prometheus): add a toggle switch for wasm metrics export
Browse files Browse the repository at this point in the history
  • Loading branch information
flrgh committed Dec 2, 2024
1 parent 35aa605 commit f3dcb8f
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 3 deletions.
7 changes: 7 additions & 0 deletions kong/clustering/compat/removed_fields.lua
Original file line number Diff line number Diff line change
Expand Up @@ -228,4 +228,11 @@ return {
"queue.concurrency_limit",
},
},

-- Any dataplane older than 3.8.0
[3009000000] = {
prometheus = {
"wasm_metrics",
},
},
}
14 changes: 13 additions & 1 deletion kong/plugins/prometheus/exporter.lua
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,19 @@ end


local function configure(configs)
IS_PROMETHEUS_ENABLED = configs ~= nil
IS_PROMETHEUS_ENABLED = false
wasm.set_enabled(false)

if configs ~= nil then
IS_PROMETHEUS_ENABLED = true

for i = 1, #configs do
if configs[i].wasm_metrics then
wasm.set_enabled(true)
break
end
end
end
end


Expand Down
1 change: 1 addition & 0 deletions kong/plugins/prometheus/schema.lua
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ return {
{ latency_metrics = { description = "A boolean value that determines if latency metrics should be collected. If enabled, `kong_latency_ms`, `upstream_latency_ms` and `request_latency_ms` metrics will be exported.", type = "boolean", default = false }, },
{ bandwidth_metrics = { description = "A boolean value that determines if bandwidth metrics should be collected. If enabled, `bandwidth_bytes` and `stream_sessions_total` metrics will be exported.", type = "boolean", default = false }, },
{ upstream_health_metrics = { description = "A boolean value that determines if upstream metrics should be collected. If enabled, `upstream_target_health` metric will be exported.", type = "boolean", default = false }, },
{ wasm_metrics = { description = "A boolean value that determines if Wasm metrics should be collected.", type = "boolean", default = false }, },
},
custom_validator = validate_shared_dict,
}, },
Expand Down
7 changes: 6 additions & 1 deletion kong/plugins/prometheus/wasmx.lua
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ local _M = {}
local FLUSH_EVERY = 100
local GET_METRIC_OPTS = { prefix = false }

local export_enabled = false

local metrics_data_buf = buf_new()
local labels_serialization_buf = buf_new()
Expand Down Expand Up @@ -181,7 +182,7 @@ end


_M.metrics_data = function()
if not wasm.enabled() then
if not export_enabled or not wasm.enabled() then
return
end

Expand Down Expand Up @@ -231,4 +232,8 @@ _M.metrics_data = function()
end


function _M.set_enabled(enabled)
export_enabled = enabled
end

return _M
5 changes: 4 additions & 1 deletion spec/03-plugins/26-prometheus/09-wasmx_spec.lua
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,10 @@ for _, strategy in helpers.each_strategy() do
add_filter_to_service(bp, "tests", service)
add_filter_to_service(bp, "tests", service2)

bp.plugins:insert({ name = "prometheus" })
assert(bp.plugins:insert({
name = "prometheus",
config = { wasm_metrics = true },
}))

assert(helpers.start_kong({
nginx_conf = "spec/fixtures/custom_nginx.template",
Expand Down

0 comments on commit f3dcb8f

Please sign in to comment.