tsharkとluaを使用してNFSサーバーの応答時間を追跡する

先日、NFSサーバーがリクエストに費やす時間を決定する方法のタスクに直面しました。

見にくいのがわかりました。 しかし、お気に入りのツールが助けになりました-wireshark。 wirehakの場合、LUAで拡張機能を作成できます。







アイデアは簡単です。NFSリクエストを取得してハッシュマップに入れ、答えが見つかったら、

時差:



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"
      
      







結果:

 「2014年8月27日16:44:43.000 CEST」aaaa:bbbb:ccc:10a0 :: 1:7f <=> aaaa:bbbb:ccc:10bf :: 1:8c 0.001 v4_EXCHANGE_ID
 「2014年8月27日16:44:43.000 CEST」aaaa:bbbb:ccc:10a0 :: 1:7f <=> aaaa:bbbb:ccc:10bf :: 1:8c 0.001 v4_CREATE_SESSION
 「2014年8月27日16:44:43.000 CEST」aaaa:bbbb:ccc:10a0 :: 1:7f <=> aaaa:bbbb:ccc:10bf :: 1:8c 0.001 v4_PUTROOTFH
 「2014年8月27日16:44:43.000 CEST」aaaa:bbbb:ccc:10a0 :: 1:7f <=> aaaa:bbbb:ccc:10bf :: 1:8c 0.002 v4_RECLAIM_COMPLETE
 「2014年8月27日16:44:43.000 CEST」aaaa:bbbb:ccc:10a0 :: 1:7f <=> aaaa:bbbb:ccc:10bf :: 1:8c 0.001 v4_PUTROOTFH
 「2014年8月27日16:44:43.000 CEST」aaaa:bbbb:ccc:10a0 :: 1:7f <=> aaaa:bbbb:ccc:10bf :: 1:8c 0.001 v4_DESTROY_SESSION
 「2014年8月27日16:44:43.000 CEST」ab161.127 <=> ab191.140 0.001 v4_EXCHANGE_ID
 「2014年8月27日16:44:43.000 CEST」ab161.127 <=> ab191.140 0.001 v4_CREATE_SESSION
 「2014年8月27日16:44:43.000 CEST」ab161.127 <=> ab191.140 0.003 v4_PUTROOTFH
 「2014年8月27日16:44:43.000 CEST」ab161.127 <=> ab191.140 0.002 v4_RECLAIM_COMPLETE
 「2014年8月27日16:44:43.000 CEST」ab161.127 <=> ab191.140 0.004 v4_PUTROOTFH




たぶん誰かが同様の開発をしていますか 共有してください!



WiresharkのLuaサポート

Wireshark LUA wiki



All Articles