Extracting data from NAR files

My VNXCollector could extract performance data from EMC CLARiiON/VNX using naviseccli. But I have added extractor for NAR files.

Here is a description why.

What is wrong with naviseccli?

The data it provides isn’t enough.

Using naviseccli we could get only limited number of parameters.

It isn’t accurate.

Some data provided by naviseccli isn’t correct. Cache Hit Ratio for example.

cache07

1797%! How?

It’s looks like a bug in a storage system microcode. Cache properties from another array have same strange values.

cache22

Objects relationships

Using naviseccli we can get a list of objects: luns, disks. But we need to separate luns and disks by pools and RAID groups. We could setup this relationships in our dashboards by hand. But we will need to adjust its every time we change storage systems configuration. Not very good idea. So, it’s better to get an object relationships same time we get a performance data.

NAR files extractor

This is an extractor for my new Universal Storage Collector.

By receiving a message ‘ask’ it connect to storage system, get a list of NAR files on it, compare this list with last proceeded NAR file, if storage system has new NAR files, get the last one, extract data and relationship from it and output selected parameters.

NAR files have a lot of parameters. We select what parameters we need for each type of object (sp, port, lun, disk) and short names for this parameters.

Here is an example of configuration:

<extractor name="vnxnar">
  <address>10.10.10.10</address>
  <username>monitor</username>
  <password>monitor</password>
  <scope>0</scope>
  <objects>
    <object>
      <type>sp</type>
      <params>
        <param long="Utilization (%)" short="util"></param>
        <param long="Total Bandwidth (MB/s)" short="bw"></param>
        <param long="Total Throughput (IO/s)" short="iops"></param>
        <param long="Read Bandwidth (MB/s)" short="rbw"></param>
        <param long="Read Throughput (IO/s)" short="riops"></param>
        <param long="Write Bandwidth (MB/s)" short="wbw"></param>
        <param long="Write Throughput (IO/s)" short="wiops"></param>
        <param long="Read Size (KB)" short="rsize"></param>
        <param long="Write Size (KB)" short="wsize"></param>
        <param long="Queue Length" short="ql"></param>
        <param long="Average Busy Queue Length" short="abql"></param>
        <param long="Response Time (ms)" short="rt"></param>
        <param long="SP Cache Dirty Pages (MB)" short="cache.dp"></param>
        <param long="SP Cache MBs Flushed (MB/s)" short="cache.mbf"></param>
        <param long="FAST Cache Dirty Pages (%)" short="fastcache.fcdp"></param>
        <param long="FAST Cache MBs Flushed (MB/s)" short="fastcache.fcmbf"></param>
      </params>
    </object>
    <object>
      <type>port</type>
      <params>
        <param long="Total Bandwidth (MB/s)" short="bw"></param>
        <param long="Total Throughput (IO/s)" short="iops"></param>
        <param long="Read Bandwidth (MB/s)" short="rbw"></param>
        <param long="Read Throughput (IO/s)" short="riops"></param>
        <param long="Write Bandwidth (MB/s)" short="wbw"></param>
        <param long="Write Throughput (IO/s)" short="wiops"></param>
        <param long="Queue Full Count" short="qfull"></param>
      </params>
    </object>
      <object>
      <type>lun</type>
      <params>
        <param long="Total Bandwidth (MB/s)" short="bw"></param>
        <param long="Total Throughput (IO/s)" short="iops"></param>
        <param long="Read Bandwidth (MB/s)" short="rbw"></param>
        <param long="Read Throughput (IO/s)" short="riops"></param>
        <param long="Write Bandwidth (MB/s)" short="wbw"></param>
        <param long="Write Throughput (IO/s)" short="wiops"></param>
        <param long="Queue Length" short="ql"></param>
        <param long="Average Seek Distance (GB)" short="asd"></param>
        <param long="Response Time (ms)" short="rt"></param>
      </params>
    </object>
    <object>
      <type>disk</type>
      <params>
        <param long="Utilization (%)" short="util"></param>
        <param long="Total Bandwidth (MB/s)" short="bw"></param>
        <param long="Total Throughput (IO/s)" short="iops"></param>
        <param long="Read Bandwidth (MB/s)" short="rbw"></param>
        <param long="Read Throughput (IO/s)" short="riops"></param>
        <param long="Write Bandwidth (MB/s)" short="wbw"></param>
        <param long="Write Throughput (IO/s)" short="wiops"></param>
        <param long="Queue Length" short="ql"></param>
        <param long="Average Busy Queue Length" short="abql"></param>
        <param long="Average Seek Distance (GB)" short="asd"></param>
        <param long="Service Time (ms)" short="st"></param>
      </params>
    </object>
  </objects>
</extractor>

For each port, lun and disk it output its parent sp, pool or RAID group.

Here is an example of the output to carbon:

vnxnar

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s