72 lines
1.7 KiB
Lua
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
|