mirror of
https://github.com/ntop/ntopng.git
synced 2026-05-03 01:10:10 +00:00
Addresses #3720 Alerts Refactor: alert_utils as module Alerts Refactor: notify_ntopng_start and notify_ntopng_stop Alerts Refactor: processAlertNotifications Alerts Refactor: checkStoreAlertsFromC Alerts Refactor: formatAlertNotification Alerts Refactor: notification_timestamp_rev Alerts Refactor: formatAlertMessage Alerts Refactor: getConfigsetAlertLink Alerts Refactor: alertNotificationActionToLabel Alerts Refactor: flushAlertsData Alerts Refactor: disableAlertsGeneration Alerts Refactor: newAlertsWorkingStatus and other Alerts Refactor: drawAlerts Alerts Refactor: drawAlertTables Alerts Refactor: printAlertTables Alerts Refactor: checkDeleteStoredAlerts Alerts Refactor: getUnpagedAlertOptions Alerts Refactor: getTabParameters Alerts Refactor: getAlerts Alerts Refactor: getNumAlerts Alerts Refactor: performAlertsQuery Alerts Refactor: sec2granularity Alerts Refactor: granularity2id Alerts Refactor: granularity2sec Alerts Refactor: alertEngineLabel Alerts Refactor: alertEngine Alerts Refactor: alertEngineRaw Alerts Refactor: alertTypeDescription Alerts Refactor: alertType Alerts Refactor: alertTypeLabel Alerts Refactor: alertTypeRaw Alerts Refactor: alertSeverity Alerts Refactor: alertSeverityLabel Alerts Refactor: alertSeverityRaw Alerts Refactor: get_make_room_keys Alerts Refactor: enterprise_alert_utils
90 lines
2.7 KiB
Lua
90 lines
2.7 KiB
Lua
--
|
|
-- (C) 2019-20 - ntop.org
|
|
--
|
|
|
|
require "lua_utils"
|
|
local json = require "dkjson"
|
|
local alert_consts = require("alert_consts")
|
|
|
|
local script = {}
|
|
|
|
-- How often this script will be called (in seconds)
|
|
script.EXPORT_FREQUENCY = 5
|
|
|
|
-- The minimum severity for an alert in order to be exported by this
|
|
-- endpoint
|
|
script.DEFAULT_SEVERITY = "warning"
|
|
|
|
-- This determines the invocation priority of this endpoint.
|
|
-- Higher priority endpoints are invoked first for the alert export.
|
|
script.prio = 500
|
|
|
|
-- ##############################################
|
|
|
|
-- Each endpoint has a dedicated redis queue for the alerts. This function
|
|
-- is called every EXPORT_FREQUENCY seconds and should check the alerts
|
|
-- queue for alerts and possibly export them.
|
|
|
|
-- @brief Process the pending alerts notifications from the queue
|
|
-- @params queue the redis queue name
|
|
-- @return {success = true} on success,
|
|
-- {success = false, error_message = "Some error description here"} on failure
|
|
function script.dequeueAlerts(queue)
|
|
while true do
|
|
local json_alert = ntop.lpopCache(queue)
|
|
|
|
if not json_alert then
|
|
break
|
|
end
|
|
|
|
local alert = json.decode(json_alert)
|
|
|
|
-- Print the alert on the console.
|
|
tprint(alert)
|
|
|
|
-- Can filter the alerts based on some criteria
|
|
if (alert.action == "engage") then
|
|
if (alert_consts.alertTypeRaw(alert.type) == "alert_threshold_cross") and
|
|
(alert.alert_key == "min_active_local_hosts") then
|
|
|
|
-- Export the alert, e.g. by running a custom bash script
|
|
--os.execute("/tmp/my_script.sh")
|
|
end
|
|
end
|
|
end
|
|
|
|
return {success=true}
|
|
end
|
|
|
|
-- ##############################################
|
|
|
|
-- @brief Called when the "Alert Endpoints" form is submitted.
|
|
-- @note This API could be subject to change!
|
|
function email.handlePost()
|
|
--tprint(_POST)
|
|
end
|
|
|
|
-- ##############################################
|
|
|
|
-- @brief Adds some custom preferences to the "Alert Endpoints" page
|
|
-- @brief alert_endpoints a reference to the scripts/lua/modules/alert_endpoints_utils.lua module
|
|
-- @brief subpage_active the lua table representing the currently active page
|
|
-- @brief showElements right now is always true
|
|
-- @note This API could be subject to change!
|
|
function script.printPrefs(alert_endpoints, subpage_active, showElements)
|
|
local elementToSwitch = {}
|
|
|
|
print('<thead class="thead-light"><tr><th colspan="2" class="info">'..i18n("example.example_notification")..'</th></tr></thead>')
|
|
|
|
prefsToggleButton(subpage_active, {
|
|
field = "toggle_example_notification",
|
|
pref = alert_endpoints.getAlertNotificationModuleEnableKey("example", true),
|
|
default = "0",
|
|
disabled = showElements==false,
|
|
to_switch = elementToSwitch,
|
|
})
|
|
end
|
|
|
|
-- ##############################################
|
|
|
|
return script
|