#!/usr/bin/php packet_at [1] => source [2] => source_port [3] => dest [4] => dest_port [5] => is_udp [6] => is_request [7] => nfs_version [8] => transaction_id [9] => op_id [10] => operation [11] => rpc_status [12] => payload_length [13] => record_id NFS Operation IDs: 0 - null 1 - getattr 2 - setattr 3 - lookup 4 - access 5 - readlink 6 - read 7 - write 8 - create 9 - mkdir 10 - symlink 11 - mkdir 12 - remove 13 - rmdir 14 - rename 15 - link 16 - readdir 17 - readdir+ 18 - fsstat 19 - fsinfo 20 - pathconf 21 - commit */ $read_ops = array(); $write_ops = array(); $read_bytes = array(); $write_bytes = array(); $req_ops = array(); $res_ops = array(); $read = 0; $write = 0; $nops = 0; $opnames = array("null", "getattr", "setattr", "lookup", "access", "readlink", "read", "write", "create", "mkdir", "symlink", "mkdir", "remove", "rmdir", "rename", "link", "readdir", "readdir+", "fsstat", "fsinfo", "pathconf", "commit"); $input_stream = fopen("php://stdin","r"); $header[0] = fgets($input_stream, 4096); $header[1] = fgets($input_stream, 4096); while ($line = fgets($input_stream, 4096)) { $field = explode(" ", trim($line)); if ($field[6] == "request") { $req_ops[$field[9]]++; if ($field[9] == 7) { $write += $field[12]; $write_ops[date("YmdH", floor($field[0]/1000000))]++; $write_bytes[date("YmdH", floor($field[0]/1000000))] += $field[12]; } } else if ($field[6] == "response") { $res_ops[$field[9]]++; if ($field[9] == 6) { $read += $field[12]; $read_ops[date("YmdH", floor($field[0]/1000000))]++; $read_bytes[date("YmdH", floor($field[0]/1000000))] += $field[12]; } } } fclose($input_stream); // Print results // Total Ops, Data Read (Gb), Read ops (M), Data Written (Gb), Write ops (M), Read/Write bytes/ops ratio, echo "Number of NFSOps REQUESTS:\n"; arsort($req_ops, SORT_NUMERIC); foreach ($req_ops as $k=>$v) { echo " " . $opnames[$k] . ": \t" . number_format($v). "\n"; $nops += $v; } echo "\nNumber of NFSOps RESPONSES:\n"; arsort($res_ops, SORT_NUMERIC); foreach ($res_ops as $k=>$v) { echo " " . $opnames[$k] . ": \t" . number_format($v). "\n"; } echo "Total # of NFSOPs: \t". number_format($nops) ."\n"; echo "Data Read (Gb): \t". number_format($read/1024/1024/1024, 2) ." Gb\n"; echo "Data Written (Gb):\t". number_format($write/1024/1024/1024, 2) ." Gb\n"; echo "Read/Write bytes ratio:\t". number_format($read/$write, 2) ."x\n"; echo "Read/Write ops ratio:\t". number_format($req_ops[6]/$req_ops[7], 2) ."x\n\n\n"; echo "Number of Read Operations:\n"; foreach ($read_ops as $k=>$v) { echo "$k, $v\n"; } echo "\n"; echo "Number of Read Mbytes:\n"; foreach ($read_bytes as $k=>$v) { echo "$k, " . number_format($v/1024/1024, 2) . "\n"; } echo "\n"; echo "Number of Write Operations:\n"; foreach ($write_ops as $k=>$v) { echo "$k, $v\n"; } echo "\n"; echo "Number of Write Mbytes:\n"; foreach ($write_bytes as $k=>$v) { echo "$k, " . number_format($v/1024/1024, 2) . "\n"; } echo "\n"; ?>