Как стать автором
Обновить

Отслеживаем время отклика NFS сервера с помощю tshark и lua

Время на прочтение2 мин
Количество просмотров8K
На днях встал перед задачей, как определить, сколько времени тратит 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
Теги:
Хабы:
Всего голосов 15: ↑12 и ↓3+9
Комментарии2

Публикации

Истории

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
10 – 11 октября
HR IT & Team Lead конференция «Битва за IT-таланты»
МоскваОнлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн