mirror of
https://github.com/ntop/ntopng.git
synced 2026-04-29 15:39:33 +00:00
Improves periodic alerts cleanup
This commit is contained in:
parent
9c0f7499e7
commit
d723fd505d
3 changed files with 33 additions and 39 deletions
|
|
@ -1099,51 +1099,44 @@ end
|
|||
|
||||
-- #################################
|
||||
|
||||
function housekeepingAlertsMakeRoom()
|
||||
function housekeepingAlertsMakeRoom(ifId)
|
||||
local prefs = ntop.getPrefs()
|
||||
local max_num_alerts_per_entity = prefs.max_num_alerts_per_entity
|
||||
local max_num_flow_alerts = prefs.max_num_flow_alerts
|
||||
|
||||
local ifnames = interface.getIfNames()
|
||||
for id, n in pairs(ifnames) do
|
||||
interface.select(n)
|
||||
local k = get_make_room_keys(ifId)
|
||||
|
||||
local ifId = getInterfaceId(n)
|
||||
if ntop.getCache(k["entities"]) == "1" then
|
||||
ntop.delCache(k["entities"])
|
||||
local res = interface.queryAlertsRaw(false,
|
||||
"SELECT alert_entity, alert_entity_val, count(*) count",
|
||||
"GROUP BY alert_entity, alert_entity_val HAVING COUNT >= "..max_num_alerts_per_entity)
|
||||
|
||||
local k = get_make_room_keys(ifId)
|
||||
|
||||
if ntop.getCache(k["entities"]) == "1" then
|
||||
ntop.delCache(k["entities"])
|
||||
local res = interface.queryAlertsRaw(false,
|
||||
"SELECT alert_entity, alert_entity_val, count(*) count",
|
||||
"GROUP BY alert_entity, alert_entity_val HAVING COUNT >= "..max_num_alerts_per_entity)
|
||||
|
||||
for _, e in pairs(res) do
|
||||
local to_delete = e.count - (max_num_alerts_per_entity * 0.8) -- deletes 20% more alerts than the maximum number
|
||||
to_delete = round(to_delete, 0)
|
||||
--tprint({e=e, total=e.count, to_delete=to_delete, to_delete_not_discounted=(e.count - max_num_alerts_per_entity)})
|
||||
local cleanup = interface.queryAlertsRaw(false,
|
||||
"DELETE",
|
||||
"WHERE alert_entity="..e.alert_entity.." AND alert_entity_val=\""..e.alert_entity_val.."\""..
|
||||
"ORDER BY alert_tstamp ASC LIMIT "..to_delete)
|
||||
-- TODO: possibly raise a too many alerts for entity e
|
||||
end
|
||||
elseif ntop.getCache(k["flows"]) == "1" then
|
||||
ntop.delCache(k["flows"])
|
||||
local res = interface.queryFlowAlertsRaw("SELECT count(*) count", "WHERE 1=1")
|
||||
local count = tonumber(res[1].count)
|
||||
if count ~= nil and count >= max_num_flow_alerts then
|
||||
local to_delete = count - (max_num_flow_alerts * 0.8)
|
||||
to_delete = round(to_delete, 0)
|
||||
local cleanup = interface.queryFlowAlertsRaw("DELETE",
|
||||
"ORDER BY alert_tstamp ASC LIMIT "..to_delete)
|
||||
--tprint({total=count, to_delete=to_delete, cleanup=cleanup})
|
||||
--tprint(cleanup)
|
||||
-- TODO: possibly raise a too many flow alerts
|
||||
end
|
||||
for _, e in pairs(res) do
|
||||
local to_delete = e.count - (max_num_alerts_per_entity * 0.8) -- deletes 20% more alerts than the maximum number
|
||||
to_delete = round(to_delete, 0)
|
||||
--tprint({e=e, total=e.count, to_delete=to_delete, to_delete_not_discounted=(e.count - max_num_alerts_per_entity)})
|
||||
local cleanup = interface.queryAlertsRaw(false,
|
||||
"DELETE",
|
||||
"WHERE alert_entity="..e.alert_entity.." AND alert_entity_val=\""..e.alert_entity_val.."\""..
|
||||
"ORDER BY alert_tstamp ASC LIMIT "..to_delete)
|
||||
-- TODO: possibly raise a too many alerts for entity e
|
||||
end
|
||||
elseif ntop.getCache(k["flows"]) == "1" then
|
||||
ntop.delCache(k["flows"])
|
||||
local res = interface.queryFlowAlertsRaw("SELECT count(*) count", "WHERE 1=1")
|
||||
local count = tonumber(res[1].count)
|
||||
if count ~= nil and count >= max_num_flow_alerts then
|
||||
local to_delete = count - (max_num_flow_alerts * 0.8)
|
||||
to_delete = round(to_delete, 0)
|
||||
local cleanup = interface.queryFlowAlertsRaw("DELETE",
|
||||
"ORDER BY alert_tstamp ASC LIMIT "..to_delete)
|
||||
--tprint({total=count, to_delete=to_delete, cleanup=cleanup})
|
||||
--tprint(cleanup)
|
||||
-- TODO: possibly raise a too many flow alerts
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
-- #################################
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue