Files
kong--kong/kong/plugins/opentelemetry/handler.lua
T
2026-07-13 12:32:21 +08:00

72 lines
1.7 KiB
Lua

local otel_traces = require "kong.plugins.opentelemetry.traces"
local otel_logs = require "kong.plugins.opentelemetry.logs"
local otel_utils = require "kong.plugins.opentelemetry.utils"
local dynamic_hook = require "kong.dynamic_hook"
local o11y_logs = require "kong.observability.logs"
local kong_meta = require "kong.meta"
local _log_prefix = otel_utils._log_prefix
local ngx_log = ngx.log
local ngx_WARN = ngx.WARN
local OpenTelemetryHandler = {
VERSION = kong_meta.version,
PRIORITY = 14,
}
function OpenTelemetryHandler:configure(configs)
if configs then
for _, config in ipairs(configs) do
if config.logs_endpoint then
dynamic_hook.hook("observability_logs", "push", o11y_logs.maybe_push)
dynamic_hook.enable_by_default("observability_logs")
end
end
end
end
function OpenTelemetryHandler:access(conf)
-- Traces
if conf.traces_endpoint then
otel_traces.access(conf)
end
end
function OpenTelemetryHandler:header_filter(conf)
-- Traces
if conf.traces_endpoint then
otel_traces.header_filter(conf)
end
end
function OpenTelemetryHandler:log(conf)
-- Read resource attributes variable
local options = {}
if conf.resource_attributes then
local compiled, err = otel_utils.compile_resource_attributes(conf.resource_attributes)
if not compiled then
ngx_log(ngx_WARN, _log_prefix, "resource attributes template failed to compile: ", err)
end
options.compiled_resource_attributes = compiled
end
-- Traces
if conf.traces_endpoint then
otel_traces.log(conf, options)
end
-- Logs
if conf.logs_endpoint then
otel_logs.log(conf, options)
end
end
return OpenTelemetryHandler