iscsiwho.d Script

This is a simple script to produce a report of the remote IP addresses and a count of iSCSI events. This is intended to provide a quick summary of iSCSI activity when run on the iSCSI target server:

#!/usr/sbin/dtrace -s

#pragma D option quiet

dtrace:::BEGIN
{
        printf("Tracing... Hit Ctrl-C to end.\n");
}

iscsi*:::
{
        @events[args[0]->ci_remote, probename] = count();
}

dtrace:::END
{
        printf("   %-26s %14s %8s\n", "REMOTE IP", "iSCSI EVENT", "COUNT");
        printa("   %-26s %14s %@8d\n", @events);
}

This output shows the host and the number of iSCSI operations:

# ./iscsiwho.d
Tracing... Hit Ctrl-C to end.
^C
   REMOTE IP                     iSCSI EVENT    COUNT
   192.0.2.14/27                 nop-receive        1
   192.0.2.14/27                    nop-send        1
   192.0.2.14/27               scsi-response      126
   192.0.2.14/27                scsi-command      208
   192.0.2.14/27                data-request     1207
   192.0.2.14/27                data-receive     1207

The following table describes the output fields of the iscsiwho.d script.

Field Description

REMOTE IP

IP address of the client

iSCSI EVENT

iSCSI event type

COUNT

Number of events traced

The example output shows normal traffic. For this simple script, these event names are not translated beyond their iSCSI provider probe names, and require some thought to comprehend as they are from the perspective of the iSCSI target server.