mirror of
https://github.com/ntop/ntopng.git
synced 2026-05-03 09:20:10 +00:00
[AlertsK] Implements alert consts builder [AlertsK] alert_threshold_cross.lua [AlertsK] too_many_drops.lua [AlertsK] alert_test_failed.lua [AlertsK] alert_flows_flood.lua alert_tcp_syn_flood.lua lert_tcp_syn_scan.lua [AlertsK] alert_snmp_topology_changed.lua [AlertsK] snmp_device_reset.lua [AlertsK] alert_slow_periodic_activity.lua [AlertsK] alert_port_status_change.lua [AlertsK] alert_port_status_change.lua [AlertsK] alert_port_load_threshold_exceeded.lua [AlertsK] alert_port_errors.lua [AlertsK] alert_port_duplexstatus_change.lua [AlertsK] alert_periodic_activity_not_executed.lua [AlertsK] alert_misbehaving_flows_ratio.lua [AlertsK] alert_influxdb_error.lua [AlertsK] alert_influxdb_dropped_points.lua [AlertsK] alert_dropped_alerts.lua [AlertsK] alert_am_threshold_cross.lua [AlertsK] alert_broadcast_domain_too_large.lua [AlertsK] alert_device_connection.lua [AlertsK] alert_device_connection.lua [AlertsK] alert_host_pool_connection.lua alert_host_pool_disconnection.lua [AlertsK] alert_ghost_network.lua [AlertsK] alert_ip_outsite_dhcp_range.lua [AlertsK] alert_list_download_failed.lua [AlertsK] alert_login_failed.lua [AlertsK] alert_mac_ip_association_change.lua [AlertsK] alert_slow_purge.lua [AlertsK] alert_request_reply_ratio.lua [AlertsK] alert_quota_exceeded.lua [AlertsK] alert_process_notification.lua [AlertsK] alert_nfq_flushed.lua [AlertsK] alert_misconfigured_app.lua alert_new_device.lua [AlertsK] alert_influxdb_export_failure.lua [AlertsK] alert_unresponsive_device.lua [AlertsK] alert_user_activity.lua [AlertsK] alert_user_script_calls_drops.lua [AlertsK] minor fix
78 lines
2.1 KiB
Lua
78 lines
2.1 KiB
Lua
--
|
|
-- (C) 2019-20 - ntop.org
|
|
--
|
|
|
|
local alerts_api = require("alerts_api")
|
|
local alert_consts = require("alert_consts")
|
|
local user_scripts = require("user_scripts")
|
|
|
|
-- #################################################################
|
|
|
|
local function check_interface_idle(params)
|
|
local threshold = tonumber(params.user_script_config.threshold)
|
|
local engage = false
|
|
local max_idle = 0
|
|
local max_idle_perc = 0
|
|
|
|
local hash_tables_stats = interface.getHashTablesStats()
|
|
for ht_name, ht_stats in pairsByKeys(hash_tables_stats, asc) do
|
|
local idle = ht_stats["hash_entry_states"]["hash_entry_state_idle"] or "0"
|
|
local active = ht_stats["hash_entry_states"]["hash_entry_state_active"] or "0"
|
|
local idle_perc = math.min(idle * 100.0 / (idle + active + 1), 100)
|
|
if (idle + active) > 1000 and idle_perc > threshold then
|
|
if idle_perc > max_idle_perc then
|
|
max_idle = idle
|
|
max_idle_perc = idle_perc
|
|
end
|
|
end
|
|
end
|
|
|
|
local idle_type = alert_consts.alert_types.alert_slow_purge.builder(
|
|
alert_consts.alert_severities.warning,
|
|
alert_consts.alerts_granularities.min,
|
|
max_idle,
|
|
max_idle_perc,
|
|
threshold
|
|
)
|
|
|
|
if max_idle_perc > threshold then
|
|
alerts_api.trigger(params.alert_entity, idle_type, nil, params.cur_alerts)
|
|
else
|
|
alerts_api.release(params.alert_entity, idle_type, nil, params.cur_alerts)
|
|
end
|
|
end
|
|
|
|
-- #################################################################
|
|
|
|
local script = {
|
|
-- Script category
|
|
category = user_scripts.script_categories.Internals,
|
|
|
|
default_enabled = true,
|
|
default_value = {
|
|
-- "> 50%"
|
|
operator = "gt",
|
|
threshold = 50,
|
|
},
|
|
|
|
-- This script is only for alerts generation
|
|
is_alert = true,
|
|
|
|
hooks = {
|
|
min = check_interface_idle,
|
|
},
|
|
|
|
gui = {
|
|
i18n_title = "alerts_thresholds_config.alert_slow_purge_threshold",
|
|
i18n_description = "alerts_thresholds_config.alert_slow_purge_threshold_descr",
|
|
i18n_field_unit = user_scripts.field_units.percentage,
|
|
input_builder = "threshold_cross",
|
|
field_max = 99,
|
|
field_min = 1,
|
|
field_operator = "gt";
|
|
}
|
|
}
|
|
|
|
-- #################################################################
|
|
|
|
return script
|