Files
OpenFlare/internal/apps/agent/nginx/observability_assets.go
T
ryan f0e234df1f feat(obs): 访问日志 SSOT 与 edge_health,去掉协议兼容层
Agent 仅上报 host_metrics/edge_health/access_logs;业务流量与 UV 由
Server 侧访问日志聚合。新增 of_node_edge_health 与 of_access_log_hourly,
删除 request_reports/openresty 吞吐路径;API 不再暴露 traffic_reports
与 openresty_rx|tx。心跳/离线默认阈值与回填迁移一并入库。
2026-07-18 11:53:11 +08:00

65 lines
2.1 KiB
Go

package nginx
import "github.com/Rain-kl/Wavelet/internal/apps/agent/protocol"
// Local OpenResty observability endpoint (target model):
// GET /openflare/observability returns instantaneous health/connections only.
// Business traffic is collected exclusively from access.log.
const openRestyObservabilityInitLua = `return
`
// log.lua no longer accumulates business counters (access.log is the authority).
const openRestyObservabilityLogLua = `return
`
// read.lua exposes stub_status-style connection gauges as JSON.
const openRestyObservabilityReadLua = `local cjson = require "cjson.safe"
local function read_stub_status()
local res = ngx.location.capture("/openflare/stub_status")
if not res or res.status ~= 200 or not res.body then
return nil
end
local body = res.body
local active = tonumber(string.match(body, "Active connections:%s*(%d+)")) or 0
local reading = tonumber(string.match(body, "Reading:%s*(%d+)")) or 0
local writing = tonumber(string.match(body, "Writing:%s*(%d+)")) or 0
local waiting = tonumber(string.match(body, "Waiting:%s*(%d+)")) or 0
return {
active = active,
reading = reading,
writing = writing,
waiting = waiting
}
end
local connections = read_stub_status()
local payload = {
ok = connections ~= nil,
captured_at_unix = ngx.time(),
connections = connections or {
active = 0,
reading = 0,
writing = 0,
waiting = 0
}
}
ngx.header.content_type = "application/json"
ngx.status = ngx.HTTP_OK
ngx.say(cjson.encode(payload))
`
// ManagedObservabilityLuaFiles returns embedded Lua assets for OpenResty observability.
func ManagedObservabilityLuaFiles() []protocol.SupportFile {
return []protocol.SupportFile{
{Path: "init.lua", Content: openRestyObservabilityInitLua},
{Path: "log.lua", Content: openRestyObservabilityLogLua},
{Path: "read.lua", Content: openRestyObservabilityReadLua},
{Path: "observability/init.lua", Content: openRestyObservabilityInitLua},
{Path: "observability/log.lua", Content: openRestyObservabilityLogLua},
{Path: "observability/read.lua", Content: openRestyObservabilityReadLua},
}
}