1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
|
--
-- (C) 2013-16 - ntop.org
--
dirs = ntop.getDirs()
package.path = dirs.installdir .. "/scripts/lua/modules/?.lua;" .. package.path
require "lua_utils"
sendHTTPHeader('text/html; charset=iso-8859-1')
--sendHTTPHeader('application/json')
function dumpInterfaceStats(interface_name)
interface.select(interface_name)
ifstats = interface.getStats()
ifstats = aggregateInterfaceStats(ifstats)
stats = interface.getFlowsStats()
if(ifstats ~= nil) then
uptime = ntop.getUptime()
prefs = ntop.getPrefs()
-- Round up
hosts_pctg = math.floor(1+((ifstats.hosts*100)/prefs.max_num_hosts))
flows_pctg = math.floor(1+((ifstats.flows*100)/prefs.max_num_flows))
print('\t{ "ifname": "'.. interface_name..'", "packets": '.. ifstats.packets .. ', "bytes": ' .. ifstats.bytes .. ', "drops": ' .. ifstats.drops .. ', "alerts": '.. ntop.getNumQueuedAlerts() ..', "num_flows": '.. ifstats.flows .. ', "num_hosts": ' .. ifstats.hosts .. ', "epoch": ' .. os.time()..' , "uptime": " ' .. secondsToTime(uptime) .. '", "hosts_pctg": ' .. hosts_pctg .. ', "flows_pctg": ' .. flows_pctg .. ', "remote_pps": ' .. ifstats.remote_pps ..', "remote_bps": ' .. ifstats.remote_bps)
print(', "is_view": '..tostring(ifstats.isView))
print(', "local2remote": '.. ifstats["localstats"]["bytes"]["local2remote"]..', "remote2local": '..ifstats["localstats"]["bytes"]["remote2local"])
print(', "tcpPacketStats": { "retransmissions": '..tostring(ifstats.tcpPacketStats.retransmissions)..', "out_of_order": '..tostring(ifstats.tcpPacketStats.out_of_order)..', "lost":'..tostring(ifstats.tcpPacketStats.lost)..' }')
if(ifstats["bridge.device_a"] ~= nil) then
print(', "a_to_b_in_pkts": '.. ifstats["bridge.a_to_b.in_pkts"])
print(', "a_to_b_in_bytes": '.. ifstats["bridge.a_to_b.in_bytes"])
print(', "a_to_b_out_pkts": '.. ifstats["bridge.a_to_b.out_pkts"])
print(', "a_to_b_out_bytes": '.. ifstats["bridge.a_to_b.out_bytes"])
print(', "a_to_b_filtered_pkts": '.. ifstats["bridge.a_to_b.filtered_pkts"])
print(', "a_to_b_shaped_pkts": '.. ifstats["bridge.a_to_b.shaped_pkts"])
print(', "b_to_a_in_pkts": '.. ifstats["bridge.b_to_a.in_pkts"])
print(', "b_to_a_in_bytes": '.. ifstats["bridge.b_to_a.in_bytes"])
print(', "b_to_a_out_pkts": '.. ifstats["bridge.b_to_a.out_pkts"])
print(', "b_to_a_out_bytes": '.. ifstats["bridge.b_to_a.out_bytes"])
print(', "b_to_a_filtered_pkts": '.. ifstats["bridge.b_to_a.filtered_pkts"])
print(', "b_to_a_shaped_pkts": '.. ifstats["bridge.b_to_a.shaped_pkts"])
print(', "a_to_b_num_pkts_send_buffer_full": '.. ifstats["bridge.a_to_b.num_pkts_send_buffer_full"])
print(', "a_to_b_num_pkts_send_error": '.. ifstats["bridge.a_to_b.num_pkts_send_error"])
print(', "b_to_a_num_pkts_send_buffer_full": '.. ifstats["bridge.b_to_a.num_pkts_send_buffer_full"])
print(', "b_to_a_num_pkts_send_error": '.. ifstats["bridge.b_to_a.num_pkts_send_error"])
end
if(ifstats["profiles"] ~= nil) then
print(", \"profiles\": { ")
num = 0
for key, value in pairsByKeys(ifstats["profiles"], rev) do
if(num > 0) then
print(", ")
end
print(' "'..key..'": '..value)
num = num + 1
end
print(' }')
end
print(", \"breed\": { ")
num = 0
for key, value in pairsByKeys(stats["breeds"], rev) do
if(num > 0) then
print(", ")
end
print(' "'..key..'": '..value)
num = num + 1
end
print(' }')
print(' }')
else
print('{ }')
end
end
-- ###############################
if(_GET["ifname"] == "all") then
names = interface.getIfNames()
print("[\n")
n = 0
sortedKeys = getKeysSortedByValue(names, function(a, b) return a < b end)
for k,v in ipairs(sortedKeys) do
if(n > 0) then print(",\n") end
dumpInterfaceStats(names[v])
n = n + 1
end
print("\n]\n")
else
dumpInterfaceStats(ifname)
end
|