94 lines
2.6 KiB
Lua
94 lines
2.6 KiB
Lua
if not minetest.get_modpath("pipeworks") then
|
|
print("[monitoring] pipeworks extension not loaded")
|
|
return
|
|
else
|
|
print("[monitoring] pipeworks extension loaded")
|
|
end
|
|
|
|
|
|
local metric_tube_inject_item_calls = monitoring.counter(
|
|
"pipeworks_tube_inject_item_calls",
|
|
"count of pipeworks.tube_inject_item calls"
|
|
)
|
|
|
|
local metric_tube_inject_item_time = monitoring.counter(
|
|
"pipeworks_tube_inject_item_time",
|
|
"time of pipeworks.tube_inject_item calls"
|
|
)
|
|
|
|
|
|
pipeworks.tube_inject_item = metric_tube_inject_item_calls.wrap(
|
|
metric_tube_inject_item_time.wraptime(pipeworks.tube_inject_item)
|
|
)
|
|
|
|
|
|
local metric_entity_count = monitoring.gauge("pipeworks_entity_count", "count of pipeworks entities")
|
|
|
|
|
|
local timer = 0
|
|
minetest.register_globalstep(function(dtime)
|
|
timer = timer + dtime
|
|
if timer < 5 then return end
|
|
timer=0
|
|
|
|
local count = 0
|
|
for id, entity in pairs(pipeworks.luaentity.entities) do
|
|
count = count + 1
|
|
end
|
|
|
|
metric_entity_count.set(count)
|
|
|
|
end)
|
|
|
|
local stepnum = 1
|
|
|
|
for i, globalstep in ipairs(minetest.registered_globalsteps) do
|
|
local info = minetest.callback_origins[globalstep]
|
|
if not info then
|
|
break
|
|
end
|
|
|
|
local modname = info.mod
|
|
|
|
if modname == "pipeworks" then
|
|
|
|
local metric_globalstep = monitoring.counter(
|
|
"pipeworks_globalstep_time_" .. stepnum,
|
|
"timing or the pipeworks globalstep #" .. stepnum
|
|
)
|
|
|
|
local fn = metric_globalstep.wraptime(globalstep)
|
|
minetest.callback_origins[fn] = info
|
|
minetest.registered_globalsteps[i] = fn
|
|
|
|
stepnum = stepnum + 1
|
|
end
|
|
end
|
|
|
|
function register_action_on_metric(nodename, metricname, prettyname)
|
|
local nodedef = minetest.registered_nodes[nodename]
|
|
if nodedef and nodedef.mesecons and nodedef.mesecons.effector and nodedef.mesecons.effector.action_on then
|
|
local metric_count = monitoring.counter(
|
|
"pipeworks_" .. metricname .. "_count",
|
|
"number of " .. prettyname .. " executes"
|
|
)
|
|
|
|
local metric_time = monitoring.counter(
|
|
"pipeworks_" .. metricname .. "_time",
|
|
"total time of " .. prettyname .. " executes in us"
|
|
)
|
|
|
|
nodedef.mesecons.effector.action_on = metric_count.wrap( metric_time.wraptime(nodedef.mesecons.effector.action_on) )
|
|
|
|
end
|
|
end
|
|
|
|
register_action_on_metric("pipeworks:mese_filter", "mese_filter", "Mese filter")
|
|
register_action_on_metric("pipeworks:filter", "filter", "Filter")
|
|
|
|
register_action_on_metric("pipeworks:dispenser_off", "dispenser", "Dispenser")
|
|
register_action_on_metric("pipeworks:deployer_off", "deployer", "Deployer")
|
|
register_action_on_metric("pipeworks:nodebreaker_off", "nodebreaker", "Nodebreaker")
|
|
|
|
monitoring.wrap_global({"pipeworks", "create_fake_player"}, "pipeworks_create_fake_player")
|