-- 0.3 changes: different layout better overview local concat = table.concat local upstream = require "ngx.upstream" local get_servers = upstream.get_servers local get_upstreams = upstream.get_upstreams local us = get_upstreams() local worker_pid = tostring(ngx.worker.pid()) ngx.print("Upstream management page\n") ngx.print("\n") ngx.print("\n") for _, u in ipairs(us) do ngx.say("Peer status in upstream ", u, ", worker-PID: ",worker_pid,":
\n") local srvs, err = upstream.get_primary_peers(u) -- local srvs, err = get_servers(u) local p_up = " style=\"background:green; color:white;\"" local p_down = " style=\"background:red; color:white;\"" local p_addr = " style=\"background:blue; color:white;\"" local p_name = " style=\"background:lightblue; color:white;\"" if not srvs then ngx.say("failed to get servers in upstream ", u) else for _, srv in ipairs(srvs) do local r_id = _ - 1 local l_state = 0 local l_first = 0 if r_id > 0 then l_first = 1 end for k, v in pairs(srv) do if k == "addr" then l_state = 1 -- which fields do we want to see? elseif k == "server" then l_state = 1 elseif k == "fails" then l_state = 2 elseif k == "down" then l_state = 3 elseif k == "fail_timeout" then l_state = 2 elseif k == "weight" then l_state = 2 -- values: current_weight, weight, id, fail_timeout, fails, down, effective_weight, name, server, max_fails, addr end if l_state > 0 then if l_first == 1 then ngx.print(""); l_first = 0 end ngx.print("\n") else ngx.print("") ngx.print("\n") end else ngx.print("\n") end end l_state = 0 end end end ngx.print("
") p_state = "" if k == "server" then p_state = p_name end -- set a color for specific fields if k == "addr" then p_state = p_addr end if k == "down" then p_state = p_down end if k == "down" and tostring(v) == "false" then p_state = p_up end if k == "down" then if tostring(v) == "true" then vv = false else vv = true end end local p_test = k.."
" ngx.print(p_test) ngx.print("") ngx.print("") ngx.print("") if k == "down" then if tostring(v) == "true" then ngx.print("") ngx.print("

") end ngx.print("\n")