Відстежуємо час відгуку NFS сервера за допомогою tshark і lua

Днями встав перед завданням, як визначити, скільки часу витрачає NFS сервер на запит.
Виявилося, що це не так вже і просто подивитися. Але на допомогу прийшов коханий молоток інструмент — wireshark. Для wireshak можна написати своє розширення на LUA.



Ідея проста: беремо NFS запит і кладемо в hashmap, а коли бачимо відповідь, то вважаємо
різницю у часі:

if msgtyp == 0 then
packets[xid] = {
timestamp = frameepochtime,
source = tostring(ipsrc),
destination = tostring(ipdst),
op_code = nfs_op
};
else
local l = packets[xid]
if l ~= nul then
packets[xid] = nil
local time_delta = frameepochtime - l.timestamp
if time_delta > min_time_delta then
print(frametime .. " " .. l.source .. " <=> " .. l.destination .. " " .. string.format("%.3f",time_delta) .. " " .. l.op_code)
end
end


Повний код доступний тут

Запускається з командного рядка
$ tshark-q-X lua_script:nfs.lua-f "port 2049"


Результат:

"Aug 27, 2014 16:44:43.000 CEST" aaaa:bbbb:ccc:10a0::1:7f <=> aaaa:bbbb:ccc:10bf::1:8c 0.001 v4_EXCHANGE_ID
"Aug 27, 2014 16:44:43.000 CEST" aaaa:bbbb:ccc:10a0::1:7f <=> aaaa:bbbb:ccc:10bf::1:8c 0.001 v4_CREATE_SESSION
"Aug 27, 2014 16:44:43.000 CEST" aaaa:bbbb:ccc:10a0::1:7f <=> aaaa:bbbb:ccc:10bf::1:8c 0.001 v4_PUTROOTFH
"Aug 27, 2014 16:44:43.000 CEST" aaaa:bbbb:ccc:10a0::1:7f <=> aaaa:bbbb:ccc:10bf::1:8c 0.002 v4_RECLAIM_COMPLETE
"Aug 27, 2014 16:44:43.000 CEST" aaaa:bbbb:ccc:10a0::1:7f <=> aaaa:bbbb:ccc:10bf::1:8c 0.001 v4_PUTROOTFH
"Aug 27, 2014 16:44:43.000 CEST" aaaa:bbbb:ccc:10a0::1:7f <=> aaaa:bbbb:ccc:10bf::1:8c 0.001 v4_DESTROY_SESSION
"Aug 27, 2014 16:44:43.000 CEST" a.b.161.127 <=> a.b.191.140 0.001 v4_EXCHANGE_ID
"Aug 27, 2014 16:44:43.000 CEST" a.b.161.127 <=> a.b.191.140 0.001 v4_CREATE_SESSION
"Aug 27, 2014 16:44:43.000 CEST" a.b.161.127 <=> a.b.191.140 0.003 v4_PUTROOTFH
"Aug 27, 2014 16:44:43.000 CEST" a.b.161.127 <=> a.b.191.140 0.002 v4_RECLAIM_COMPLETE
"Aug 27, 2014 16:44:43.000 CEST" a.b.161.127 <=> a.b.191.140 0.004 v4_PUTROOTFH

Може, у когось є схожі напрацювання? Діліться!

Lua Support in Wireshark
Wireshark LUA wiki

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.