Free SAN and storage performance and capacity monitoring

Installation

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:

Prerequisites

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

Linux

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 http://mirror.centos.org/centos/7/os/x86_64/Packages/rrdtool-perl-1.4.8-9.el7.x86_64.rpm

  • 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

AIX

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
    $ ./install.sh
    $ 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  
    
      STORAGE_USER=stor2rrd
      WEBDIR=/home/stor2rrd/stor2rrd/www  
      RRDTOOL=/usr/bin/rrdtool
      PERL=/usr/bin/perl  
      # AIX usual location is:
      #RRDTOOL=/opt/freeware/bin/rrdtool 
      #PERL=/opt/freeware/bin/perl
      PERL5LIB=/opt/freeware/lib/perl/5.8.8:/opt/freeware/lib/perl/5.8.0:/usr/opt/perl5/lib/site_perl/5.8.2:/usr/lib/perl5/vendor_perl/5.8.5:/usr/share/perl5:/usr/lib/perl5:/usr/opt/perl5/lib/site_perl/5.8.8/aix-thread-multi:/opt/freeware/lib/perl5/vendor_perl/5.8.8/ppc-thread-multi:/usr/lib64/perl5/vendor_perl:/usr/lib/perl5/vendor_perl
    
  • Schedule to run STOR2RRD from stor2rrd crontab (lpar2rrd on Virtual Appliance)
    $ crontab -e
    
    # STOR2RRD GUI
    0 * * * * /home/stor2rrd/stor2rrd/load.sh > /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/test.sh
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
      SELINUX=disabled
    

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
    </Directory>
    # 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
    </Directory>
    
  • 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
    </Directory>
    # 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
    </Directory>
    
  • 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/mod_alias.so
      LoadModule cgi_module /opt/freeware/lib/httpd/modules/mod_cgi.so
      
    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/mod_mpm_prefork.so
      # LoadModule mpm_worker_module /opt/freeware/lib/httpd/modules/mod_mpm_worker.so
      # LoadModule mpm_event_module modules/mod_mpm_event.so
      <IfModule mpm_prefork_module>
           LoadModule cgi_module /opt/freeware/lib/httpd/modules/mod_cgi.so
      </IfModule>
      
    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
      </Directory>
      # 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
      </Directory>
      
      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
    </Directory>
    # 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
    </Directory>
    



Storage monitoring - schema


All supported storages with feature matrix.
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-5.6.2.1-1!
    # umask 0022
    # rpm -Uvh net-snmp-5.6.2.1-1 net-snmp-utils-5.6.2.1-1 net-snmp-perl-5.6.2.1-1
    
    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> 1.3.6.1.2.1.1.5
      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 
    #SNMP_VERSION=3
    #
    # example
    #172.31.216.10::BRCD:Fabic_A
    #172.31.216.11::BRCD:Fabic_B
    #
    Switch_IP1::BRCD:Fabic_A
    Switch_IP2::CISCO:Fabic_B
    Switch_IP2::QLOGIC:Fabic_B
    
  • 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)
    SNMP_VERSION=3
    Switch_IP1:snmpuser2:BRCD:Fabic_A
    Switch_IP2:snmpuser2:CISCO:Fabic_B
    Switch_IP2:snmpuser2:QLOGIC:Fabic_B
    

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> 1.3.6.1.2.1.1.5
      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/check_vsan.sh
    ➞ replace 4th row: snmpwalk="/opt/freeware/bin/snmpwalk" by:
    snmpwalk="/usr/bin/snmpwalk"
    
  • 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; ./config_check.sh
      =========================
      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/load_sanperf.sh >/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
    
    # STOR2RRD GUI
    0 * * * * /home/stor2rrd/stor2rrd/load.sh > /home/stor2rrd/stor2rrd/load.out 2>&1
    
  • Let it run for 15 - 20 minutes, then re-build the GUI by:
    $ cd /home/stor2rrd/stor2rrd
    $ ./load.sh html
    
  • Go to the web GUI: http://<your web server>/stor2rrd/
    Use Ctrl-F5 to refresh the web browser cache.

Troubleshooting

  • In case of a problem check our forum or contact us via support@stor2rrd.com

  • 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/default_store.so' for module NetSNMP::default_store:
      Could not load module /opt/freeware/lib/libnetsnmp.a(libnetsnmp.so.25).
      Dependent module /usr/lib/libcrypto.a(libcrypto.so.1.0.1) could not be loaded.
      Member libcrypto.so.1.0.1 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> 1.3.6.1.2.1.75.1.1.1
      SNMPv2-SMI::mib-2.75.1.1.1.0 = 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
      FICON-MIB: YES
      HA-MIB: YES
      FCIP-MIB: YES
      ISCSI-MIB: YES
      IF-MIB: YES
      BD-MIB: YES
      ...
    
    Activate all MIBs to get exactly above output:
    SAN1:admin> snmpconfig -set mibcapabitily 
    

 

Links

Download

Others

Contact