Free SAN and storage performance and capacity monitoring


To install STOR2RRD follow all tabs from the left to the right.
Follow Virtual Appliance installation in case of usage of Virtual Appliance

  • STOR2RRD can be hosted on any Unix or Linux Operating system
  • Disk space requirements :
    • Storage edition: 1 - 10GB per each storage (depends on number of volumes)
    • SAN edition: 12MB per each physical SAN port
  • Perl: arbitrary version coming with the OS, it requires a few additional modules (installation procedure is below)
  • Apache or any other Web server
  • RRDTool: use RRDTool v1.3.5+ to allow graph zooming feature
If you have already running LPAR2RRD on the same host then skip to STOR2RRD installation

Follow on this page sections:


Basically you need to install here whatever version of:
  • Apache
  • RRDTool with Perl support (rrdtool & rrdtool-perl)
  • Perl TimeDate module
  • Perl XML::Simple module
  • Perl PDF::API2 for PDF reporting


Install RRDTool, Apache and Perl on Linux like below (under root):
  • RedHat, CentOS
    # yum list | egrep "httpd|rrdtool|perl|sharutils"
    # umask 0022
    # yum install rrdtool rrdtool-perl httpd
    # yum install epel-release
    # yum install perl perl-TimeDate perl-XML-Simple perl-XML-SAX perl-XML-LibXML perl-Env perl-CGI perl-Data-Dumper perl-LWP-Protocol-https perl-PDF-API2 perl-libwww-perl
    # yum install ed bc libxml2 sharutils
    Note that rrdtool-perl package might not be in your latest RedHat base repository. Install CentOS package instead

  • Debian, Ubuntu
    # umask 0022
    # apt-get install apache2 perl rrdtool 
    # apt-get install librrdp-perl libxml-sax-perl libxml-simple-perl libtimedate-perl libenv-sanctify-perl libcgi-pm-perl libdata-dumper-simple-perl libpdf-api2-perl liblwp-protocol-https-perl
    # apt-get install ed bc libxml2-utils
    When you have done that then skip to Web server configuration
    When you do not use yum or apt-get then go for manual RPM installation how is described in AIX section


STOR2RRD installation

  • Create preferably a dedicated user (stor2rrd) on a server which will host the tool

  • Add a user on Unix under root account
    # useradd -c "STOR2RRD user" -m stor2rrd
  • Increase memory limits for user stor2rrd and the WEB server user (under root)
    • AIX
      # chuser  data=-1  stor2rrd
      # chuser  stack=-1 stor2rrd
      # chuser  rss=-1   stor2rrd
      # chuser  data=-1  apache  
      # chuser  stack=-1 apache  
      # chuser  rss=-1   apache  
    • Linux
      # vi /etc/security/limits.conf
      @stor2rrd        hard    stack           -1
      @stor2rrd        soft    stack           -1
      @stor2rrd        hard    data            -1
      @stor2rrd        soft    data            -1
      @apache          hard    stack           -1
      @apache          soft    stack           -1
      @apache          hard    data            -1
      @apache          soft    data            -1
  • Product installation
    # su - stor2rrd
    $ tar xvf stor2rrd-1.XX.tar
    $ cd stor2rrd-1.XX
    $ ./
    $ cd /home/stor2rrd/stor2rrd
  • Configure parameters in etc/stor2rrd.cfg.
    Install process should do most of that automatically
    Here is the list of parameters which need to be reviewed:
    $ vi /home/stor2rrd/stor2rrd/etc/stor2rrd.cfg  
      # AIX usual location is:
  • Schedule to run STOR2RRD from stor2rrd crontab (lpar2rrd on Virtual Appliance)
    $ crontab -e
    0 * * * * /home/stor2rrd/stor2rrd/ > /home/stor2rrd/stor2rrd/load.out 2>&1
    You might need to add stor2rrd user (lpar2rrd for Virtual Appliance) into /var/adm/cron/cron.allow under root user when crontab cmd fails.
    # echo "stor2rrd" >> /var/adm/cron/cron.allow
  • Go to the web GUI: http://<your web server>/stor2rrd/

  • If you have any problems with the GUI then check:
    (note that the path to Apache logs might be different, search apache logs in /var)
    • /var/opt/freeware/apache/logs/error_log # Apache error log
    • /var/opt/freeware/apache/logs/access_log # Apache access log
    • /home/stor2rrd/stor2rrd/logs/error-cgi.log # STOR2RRD CGI-BIN log
    • check if web configuration is ok, it should list environment
      http://<your web server>/stor2rrd-cgi/
Skip it in case of configuring Virtual Appliance

Apache download

  • AIX
    Apache 2.4.18 from IBM AIX Toolbox for Linux Applications
    Apache 2.4.4 from M. Perlz's archive.

  • Linux CentOS, RedHat
    # yum install httpd
  • Linux Debian, Ubuntu
    # apt-get install httpd

Apache configuration

Apache start / restart

    Command depends on Apache version, one of these should work:
    # apachectl restart
    # /opt/freeware/apache/sbin/apachectl restart
    # /etc/init.d/httpd restart
    # service apache2 restart

Test web pages

    Point your web browser to http://<your stor2rrd host>/stor2rrd/ as soon as you configure STOR2RRD
    Do not forget to ensure that Apache starts after the OS reboot (there must be a starting script in /etc/rc.... )

Linux SELinux issue

    Linux: disable SELinux if you get "(13)Permission denied:" in Apache error_log
    # setenforce Permissive
    # vi /etc/sysconfig/selinux

Apache configuration per platform and version

  • Linux CentOS, RedHat

    Append at the end of /etc/httpd/conf/httpd.conf following
    # vi /etc/httpd/conf/httpd.conf
    AddHandler cgi-script .sh
    # DocumentRoot  "/home/stor2rrd/stor2rrd/www/"
    Alias /stor2rrd  "/home/stor2rrd/stor2rrd/www/"
    <Directory "/home/stor2rrd/stor2rrd/www/">
        AllowOverride AuthConfig
        Options Indexes FollowSymLinks Includes MultiViews
        Require all granted
    # CGI-BIN
    ScriptAlias /stor2rrd-cgi/ "/home/stor2rrd/stor2rrd/stor2rrd-cgi/"
    <Directory "/home/stor2rrd/stor2rrd/stor2rrd-cgi">
        AllowOverride AuthConfig
        SetHandler cgi-script
        Options ExecCGI Includes FollowSymLinks
        Require all granted
  • Linux Debian, Ubuntu : Apache2 (2.4+)

    Enable CGI-BIN
    # a2enmod cgi
    Append this at the end of /etc/apache2/apache2.conf
    # vi /etc/apache2/apache2.conf
    AddHandler cgi-script .sh
    Alias /stor2rrd  "/home/stor2rrd/stor2rrd/www/"
    <Directory "/home/stor2rrd/stor2rrd/www/">
        Options Indexes FollowSymLinks Includes MultiViews
        Require all granted
    # CGI-BIN
    ScriptAlias /stor2rrd-cgi/ "/home/stor2rrd/stor2rrd/stor2rrd-cgi/"
    <Directory "/home/stor2rrd/stor2rrd/stor2rrd-cgi">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Require all granted
        SetHandler cgi-script
  • Apache 2.4+ generally

    Configure httpd.conf, it might be in different locations (depends of distribution)
    • /etc/httpd/httpd.conf
    • /etc/httpd/conf/httpd.conf
    • /etc/opt/freeware/apache/httpd.conf (AIX)
    • /opt/freeware/etc/httpd/httpd.conf (AIX)

    1. Verify alias_module and cgi_module is loaded (uncommented it, the path can be different)
      LoadModule alias_module /opt/freeware/lib/httpd/modules/
      LoadModule cgi_module /opt/freeware/lib/httpd/modules/
    2. cgi_module could depend on mpm_prefork_module like here.
      Allow it as well (uncomment it) and disable mpm_worker_module, mpm_event_module
      LoadModule mpm_prefork_module /opt/freeware/lib/httpd/modules/
      # LoadModule mpm_worker_module /opt/freeware/lib/httpd/modules/
      # LoadModule mpm_event_module modules/
      <IfModule mpm_prefork_module>
           LoadModule cgi_module /opt/freeware/lib/httpd/modules/
    3. Append this at the end of httpd.conf
      AddHandler cgi-script .sh
      Alias /stor2rrd  "/home/stor2rrd/stor2rrd/www/"
      <Directory "/home/stor2rrd/stor2rrd/www/">
          Options Indexes FollowSymLinks Includes MultiViews
          Require all granted
      # CGI-BIN
      ScriptAlias /stor2rrd-cgi/ "/home/stor2rrd/stor2rrd/stor2rrd-cgi/"
      <Directory "/home/stor2rrd/stor2rrd/stor2rrd-cgi">
          AllowOverride None
          SetHandler cgi-script
          Options ExecCGI Includes FollowSymLinks
          Require all granted
      Sometimes appears necessary to remove "Require all granted" lines in both directives.

  • Apache 1.3 - 2.3

    Configure httpd.conf, it might be in different locations (depends of distribution)
    • /etc/httpd/httpd.conf
    • /etc/httpd/conf/httpd.conf
    • /etc/opt/freeware/apache/httpd.conf (AIX)
    • /opt/freeware/etc/httpd/httpd.conf (AIX)

    # vi /etc/opt/freeware/apache/httpd.conf
    Alias /stor2rrd  "/home/stor2rrd/stor2rrd/www/"
    <Directory "/home/stor2rrd/stor2rrd/www/">
        Options Indexes FollowSymLinks Includes MultiViews
        Order allow,deny
        Allow from all
    # CGI-BIN
    ScriptAlias /stor2rrd-cgi/ "/home/stor2rrd/stor2rrd/stor2rrd-cgi/"
    <Directory "/home/stor2rrd/stor2rrd/stor2rrd-cgi">
        AllowOverride None
        Options ExecCGI Includes
        Order allow,deny
        Allow from all

Storage monitoring - schema

All supported storages with feature matrix.
Have not you found your storage supported? Vote for it to give us visibility of that.

Storage access summary

Vendor Storage type User role Interface Used ports 3rd party SW
IBM DS8000 monitor DScli 1750,1751 IBM DScli
Administrator SVC CLI 22
XIV,A9000 readonly SMI-S 5989
DS3000,4000,5000 monitor SMcli 2463 IBM SMcli
EMC² VMAX performance monitor REST API 8443
22, 443
Unity operator UEM CLI 443 Unisphere UEM CLI
VNX block operator Navisphere CLI 6389 Navisphere CLI
VNX file operator CLI 22
VNXe operator REST API 443 VNXe UEM CLI
NetApp C-mode monitor NetApp CLI
NetApp API
7-mode monitor NetApp CLI
NetApp API
E/EF-series monitor SMcli 2463 NetApp SMcli
Hitachi VSP-G,VSP-F
read only CCI,
Export Tool
CCI, Export Tool
HUS, AMS read role HSNM2 CLI 2000,28355 HSNM2 CLI
HPE 3PAR browse 3PAR CLI
via ssh
3PAR browse 3PAR CLI 22,5783,5782 3PAR CLI
XP7 read only CCI,
Export Tool
CCI, Export Tool
MSA P2000 monitor REST API, SMI-S 80,5988 (443,5989)
Lenovo Storwize Administrator Storwize CLI 22
S2200/S3200 monitor REST API, SMI-S 80,5988 (443,5989)
Dell MD3000 monitor SMcli 2463 Dell SMcli
SC series
admin REST API 443 Enterprise Manager or DSM Data Collector
Dot Hill AssuredSAN monitor REST API, SMI-S 80,5988 (443,5989)
Huawei OceanStor read-only REST API 8088
Pure Storage FlashArray read-only REST API 443
Storage monitoring - schema
In case of usage of Virtual Appliance
  • Use local account lpar2rrd for hosting of STOR2RRD on the virtual appliance
  • Use /home/stor2rrd/stor2rrd as the product home
Installation procedure is same for Cisco, Brocade and Qlogic (supported since v2.00) switches.
Only in case of usage Brocade Virtual Fabric you have to do special access configuration.
Cisco VSAN support works automatically.
SAN monitoring features

Install Prerequisites (skip that in case of Virtual Appliance)

  • AIX
    Download Net-SNMP packages and install them.
    Do not use the latest packages on AIX, it does not work, use net-snmp-!
    # umask 0022
    # rpm -Uvh net-snmp- net-snmp-utils- net-snmp-perl-
    Make sure
    • you use PERL=/opt/freeware/bin/perl in etc/stor2rrd.cfg
    • PERL5LIB in etc/stor2rrd.cfg contains /opt/freeware/lib/perl5/vendor_perl/5.8.8/ppc-thread-multi path
  • Linux
    # umask 0022
    # yum install net-snmp
    # yum install net-snmp-utils
    # yum install net-snmp-perl
  • Linux Debian/Ubuntu
    % umask 0022
    % apt-get install snmp libsnmp-perl snmp-mibs-downloader
    If apt-get does not find snmp-mibs-downloader package then enable contrib and non-free repositories.

Configure access to switches

  • Allow SNMP communication from STOR2RRD server to all SAN switches on port 161
  • Test SNMP communication (replace switch_IP for your one)
    # export PATH=$PATH:/opt/freeware/bin
    # snmpwalk -v 1 -c public  <Switch_IP>
      SNMPv2-MIB::sysName.0 = STRING: SAN_switch_name
    This must work exactly as above!
    When the command fails, times out or return whatever else then
    • ping <Switch_IP>
    • Assure there is SNMP allowed on the SAN switch with public read only role (Community 4)
      • Launch a command line interface for the Brocade switch and log in with Administrator credentials.
      • Perform the following steps to configure the switch for SNMPv1/v2c:
        • Type snmpConfig --show snmpv1
        • The community strings will be listed.
        • If you wish to change a community string, type snmpConfig --set snmpv1
        • Enter the new community string and proceed.
      • Repeat these steps for each Brocade switch in your storage environment.
        # ssh <Switch_IP> -l admin
        SAN:admin> snmpconfig --show snmpv1 
          SNMPv1 community and trap recipient configuration:
          Community 4: public (ro)
            No trap recipient configured yet
        When there is other community string than public then use it in test snmpwalk cmds above
        and place that community string it in etc/san-list.cfg

Configure SAN switches

  • edit etc/san-list.cfg
    and place there IP or hostname of each switch, switch type (BRCD) and Fabric name (just one switch per the fabric is enough for fabric name)
    $ cat etc/san-list.cfg
    # SAN configuration file. All SAN switches must be listed here
    # <Switch IP or hostname>:<SNMP community string>:<BRCD|CISCO|QLOGIC>:<fabric name>
    # <fabric name> will be used in the GUI for Fabric aggregated graphs
    #               use it just once on arbitrary switch in given fabric
    # <SNMP community string> is usually set to string "public". In this case you can leave it blank.
    # GUI will show the real name of the switch regardless what name or IP you use here
    # Uncomment below if you prefere SNMP v3 
    # example
  • In case of SNMP v3 uncomment SNMP_VERSION=3 and use your security user in the 2nd field if it is different from snmpuser1 (default user when it is blank)

Brocade Virtual Fabric support

  • you have to use SNMP v3 with proper security user
  • Activate SNMP v3 mode in etc/san-list.cfg as per above example
  • Configure security user on the switch (under admin account):
    userconfig --add snmpuser1 -r user -l 1,128
    userconfig --change snmpuser1 -r user -l 1,128 -h 128 -e no
    Parameter -l says which virtual fabrics can be monitored by this user.
    Example above allows virtual fabrics 1 and 128 for user snmpuser1.
  • test access, you should see ports configured for your specific VF (Virtual Fabric).
    $ snmpwalk -v 3 -u snmpuser1 -n VF:<your_virtual_fabric_ID> <Switch_IP>
      SNMPv2-MIB::sysName.0 = STRING: SAN_switch_name
    If you get one of below errors then user is not configured properly:
    Error in packet.
    Reason: noAccess
    snmpwalk: Unknown user name
  • Linux bug in v1.24 code and Virtual Appliance 1.10, fix it manually by:
    cd /home/stor2rrd/stor2rrd
    vi bin/
    ➞ replace 4th row: snmpwalk="/opt/freeware/bin/snmpwalk" by:
  • Note a potential CPU issue on switches when you use vFabric support.

STOR2RRD configuration

  • Since now use stor2rrd user only (not root).
    In case of Virtual Appliance use lpar2rrd user account
  • Check switch connectivity
    $ cd /home/stor2rrd/stor2rrd
    $ cd ./bin; ./
      SWITCH: Switch_IP1
      Type         : BRCD
      DestHost     : Switch_host
      Version SNMP : 1
      Community    : public
      Switch name  : Switch_host
      STATE        : CONNECTED!
  • Schedule SAN agent to run from stor2rrd crontab (lpar2rrd on Virtual Appliance)
    $ crontab -e
    # SAN agent
    * * * * * /home/stor2rrd/stor2rrd/ >/home/stor2rrd/stor2rrd/logs/load_sanperf.out 2>&1
    Assure there is already an entry with the GUI creation running once an hour in crontab
    $ crontab -e
    0 * * * * /home/stor2rrd/stor2rrd/ > /home/stor2rrd/stor2rrd/load.out 2>&1
  • Let it run for 15 - 20 minutes, then re-build the GUI by:
    $ cd /home/stor2rrd/stor2rrd
    $ ./ html
  • Go to the web GUI: http://<your web server>/stor2rrd/
    Use Ctrl-F5 to refresh the web browser cache.


  • In case of a problem check our forum or contact us via

  • Note a potential CPU issue on switches when you use vFabric support.

  • In case you find below error during initial configuration then follow this page
    $ cd /home/stor2rrd/stor2rrd/logs
    $ tail -1 err.log-<Switch IP>
      Can't load '/opt/freeware/lib/perl5/vendor_perl/5.8.8/ppc-thread-multi/auto/NetSNMP/default_store/' for module NetSNMP::default_store:
      Could not load module /opt/freeware/lib/libnetsnmp.a(
      Dependent module /usr/lib/libcrypto.a( could not be loaded.
      Member is not found in archive
  • When there is no data from the switch at all than check if it has allowed all SNMP MIBs
    $ /opt/freeware/bin/snmpwalk -v 1 -c public <Switch_IP>
      SNMPv2-SMI::mib- = Hex-STRING: 10 00 00 27 F8 6E 88 CD 
    When above cmd returns nothing then check MIB setup:
    SAN1:admin> snmpconfig --show mibcapability
      FE-MIB: YES
      SW-MIB: YES
      FA-MIB: YES
      HA-MIB: YES
      IF-MIB: YES
      BD-MIB: YES
    Activate all MIBs to get exactly above output:
    SAN1:admin> snmpconfig -set mibcapabitily