Installation
Consider usage of our brand new full-stack infrastructure monitoring tool XorMon Next Generation as STOR2RRD replacement.
It brings a new level of infrastructure monitoring by relying on a modern technology stack.
In particular, reporting, exporting, alerting and presentation capabilities are unique on the market.
It already supports majority of monitored devices and features what STOR2RRD does, check for unsuported yet ones.
su - stor2rrd tar xvf stor2rrd-7.XX.tar cd stor2rrd-7.XX ./install.sh
cd /home/stor2rrd/stor2rrd . etc/stor2rrd.cfg; $PERL bin/perl_modules_check.plIf there is missing "LWP::Protocol::https" then check this docu to fix it
find /opt -name RRDp.pm 2>/dev/null /opt/freeware/lib/perl5/5.34/vendor_perl/RRDp.pm /opt/freeware/lib64/perl5/5.34/vendor_perl/RRDp.pm
PERL=/usr/bin/perl PERL5LIB=/home/stor2rrd/stor2rrd/bin:/home/stor2rrd/stor2rrd/lib:/opt/freeware/lib64/perl5/5.34/vendor_perl:/opt/freeware/lib/perl5/5.34/vendor_perl RRDTOOL=/opt/freeware/bin/rrdtoolAdjust above PERL5LIB path based on which Perl you have in /opt/freeware/bin/perl, above example is for "5.34", you see it in the paths:
/opt/freeware/bin/perl -v| head -2 This is perl 5, version 34, subversion 1 (v5.34.1) built for ppc-aix-thread-multi-64all
su - stor2rrd umask 022 cd /home/stor2rrd/stor2rrd cp html/.htaccess www cp html/.htaccess stor2rrd-cgi
crontab -e # STOR2RRD UI (just ONE entry of load.sh must be there) 5 * * * * /home/stor2rrd/stor2rrd/load.sh > /home/stor2rrd/stor2rrd/load.out 2>&1
# echo "stor2rrd" >> /var/adm/cron/cron.allow
Can't load '/usr/opt/perl5/lib/site_perl/5.28.1/aix-thread-multi/auto/XML/Parser/Expat/Expat.so' for module XML::Parser::Expat: Could not load module /usr/opt/perl5/lib/site_perl/5.28.1/aix-thread-multi/auto/XML/Parser/Expat/Expat.soIn this case:
cd /home/stor2rd/stor2rrd umask 022 echo "export LIBPATH=/opt/freeware/lib" >> etc/.magic
tail /var/log/httpd/error_log # Apache error log tail /var/log/httpd/access_log # Apache access log tail /var/tmp/stor2rrd-realt-error.log # STOR2RRD CGI-BIN log tail /var/tmp/systemd-private*/tmp/stor2rrd-realt-error.log # STOR2RRD CGI-BIN log when Linux has enabled private temp
umask 022 cd /home/stor2rrd/stor2rrd/ cp bin/stor-test-healthcheck-cgi.sh stor2rrd-cgi/go to the web browser: http://<your web server>/stor2rrd/test.html
All supported storage with feature matrix.
Have not you found your storage supported?
Vote for it to give us visibility of that.
Vendor | Storage type | User role | Interface | Used ports | 3rd party SW |
---|---|---|---|---|---|
Dell EMC² | Celerra | nasadmin | CLI | 22 | |
CLARiiON CX4 | operator | Navisphere CLI | 443, 6389 | Navisphere CLI | |
Data Domain | user | CLI | 22 | ||
ECS | System Monitor | REST API | 4443 | ||
ME4/ME5 via SMI-S | monitor | REST API SMI-S |
80, 5988 (443, 5989) |
||
ME4/ME5 via WBI | monitor | REST API | 443 | ||
Metro node | read only | CLI REST API |
22, 443 | ||
PowerFlex | monitor role | REST API | 443 | ||
PowerMax | performance monitor | REST API | 8443 | ||
PowerScale / Isilon | read only | REST API | 8080 | ||
PowerStore | operator | REST API | 443 | ||
Unity | operator | UEM CLI | 443 | Unisphere UEM CLI | |
VMAX | performance monitor | REST API | 8443 | ||
VNX block | operator | Navisphere CLI | 443, 6389 | Navisphere CLI | |
VNX file | operator | CLI | 22 | ||
VNXe | operator | REST API | 443 | VNXe UEM CLI | |
VPLEX | vplexuser | CLI REST API |
22, 443 | ||
XtremIO | read only | REST API | 443 |
Vendor | Storage type | User role | Interface | Used ports | 3rd party SW |
---|---|---|---|---|---|
IBM | Cloud Object Storage | read | API | 443 | |
DS8000 | monitor | DScli | 1750, 1751 | IBM DScli | |
SVC,Storwize | Monitor | SVC CLI | 22 | ||
Storage Virtualize | Monitor | SVC CLI | 22 | ||
FlashSystem V9000,9100,V840 | Monitor | SVC CLI | 22 | ||
FlashSystem 900,840 | RestrictedAdmin | SVC CLI | 22 | ||
XIV,A9000 | readonly | SMI-S | 5989 | ||
DS3000,4000,5000 | monitor | SMcli | 2463 | IBM SMcli | |
Storage Scale (GPFS) | monitor | API | 443 |
Vendor | Storage type | User role | Interface | Used ports | 3rd party SW |
---|---|---|---|---|---|
NetApp | C-mode (AFF A/C-Series) | monitor | NetApp CLI NetApp API |
22, 80, 443 | |
C-mode (AFF A/C-Series): REST API | readonly | REST API | 443 | ||
7-mode | monitor | NetApp CLI NetApp API |
22, 80, 443 | ||
E/EF-series | monitor | REST API | 8443 | ||
E/EF-series | monitor | SMcli | 2463 | SANtricity SM | |
SolidFire | Reporting | REST API | 443 | ||
StorageGRID | monitor | REST API | 443 |
Vendor | Storage type | User role | Interface | Used ports | 3rd party SW |
---|---|---|---|---|---|
Hitachi | VSP-G VSP-F VSP HUS-VM |
read only | CCI Export Tool SNMP |
TCP: 1099, 51099 - 51101 UDP: 31001 UDP: 161 |
CCI Export Tool |
HUS, AMS | read | HSNM2 CLI | 2000, 28355 | HSNM2 CLI | |
HNAS | read | SNMP v2c, v3 |
UDP:161 | ||
HCP | Monitor | REST API, SNMP | TCP:443, UDP:161 |
Vendor | Storage type | User role | Interface | Used ports | 3rd party SW |
---|---|---|---|---|---|
HPE | Primera | browse | 3PAR CLI via ssh |
22 | |
Primera | browse | 3PAR CLI | 5783 | 3PAR CLI | |
Primera | browse | WSAPI (REST API) | 8080 | ||
3PAR | browse | 3PAR CLI via ssh |
22 | ||
3PAR | browse | 3PAR CLI | 5783 | 3PAR CLI | |
3PAR | browse | WSAPI (REST API) | 8080 | ||
Alletra 9000 | browse | 3PAR CLI via ssh |
22 | ||
Alletra 9000 | browse | 3PAR CLI | 5783 | 3PAR CLI | |
Alletra 9000 | browse | WSAPI (REST API) | 8080 | ||
XP7 | read only | CCI, Export Tool SNMP |
TCP: 1099, 51099 - 51101 UDP: 31001 UDP: 161 |
CCI Export Tool |
|
MSA: via WBI | monitor | REST API | 443 | ||
MSA: via SMI-S | monitor | REST API SMI-S |
80, 5988 (443, 5989) |
||
Alletra 6000 | guest | CLI | 22 | ||
Nimble | guest | CLI | 22 | ||
StoreOnce | user | REST API | 443 | ||
StoreVirtual | view_only | CLI | 16022 |
Vendor | Storage type | User role | Interface | Used ports | 3rd party SW |
---|---|---|---|---|---|
Lenovo | Storage V Series | Monitor | CLI | 22 | |
Storage S Series: WBI | monitor | REST API | 443 | ||
Storage S Series: SMI-S | monitor | REST API SMI-S |
80, 5988 (443, 5989) |
||
DS Series: WBI | monitor | REST API | 443 | ||
ThinkSystem DS Series | monitor | REST API SMI-S |
80, 5988 (443, 5989) |
||
ThinkSystem DE Series | monitor | REST API | 8443 | ||
ThinkSystem DE Series | monitor | SMcli | 2463 | Lenovo SMcli | |
DM Series: REST API | monitor | REST API | 443 | ||
ThinkSystem DM Series | monitor | Lenovo CLI Lenovo API |
22, 80, 443 | ||
DG Series: REST API | monitor | REST API | 443 | ||
ThinkSystem DG Series | monitor | Lenovo CLI Lenovo API |
22, 80, 443 |
Vendor | Storage type | User role | Interface | Used ports | 3rd party SW |
---|---|---|---|---|---|
Dell | MD3000 | monitor | SMcli | 2463 | Dell SMcli |
SC series (Compellent) |
Reporter | REST API | 3033 | Enterprise Manager or DSM Data Collector |
Vendor | Storage type | User role | Interface | Used ports | 3rd party SW |
---|---|---|---|---|---|
Amazon FSx | NetApp | vsadmin-readonly | REST API | 443 | |
Ceph | Ceph | Prometheus API | 9283 | ||
Cohesity | DataProtect | Viewer | REST API | 443 | |
DataCore | SANsymphony | View | REST API | 80 (443) | DataCore REST API package |
DDN | IntelliFlash | Read only | REST API | 443 | |
Dot Hill | AssuredSAN via WBI | monitor | REST API | 443 | |
AssuredSAN via SMI-S | monitor | REST API SMI-S |
80, 5988 (443, 5989) |
||
FalconStor | FreeStor | viewer | REST API | 443 | |
Fujitsu | ETERNUS | monitor | CLI | 22 | |
Huawei | OceanStor | read-only | REST API | 8088 | |
Dorado | read-only | REST API | 8088 | ||
Pacific | read-only | REST API | 8088 | ||
Scale-Out NAS | read-only | REST API | 8088 | ||
OceanProtect Backup Storage | read-only | REST API | 8088 | ||
OceanStor A series | read-only | REST API | 8088 | ||
OceanDisk | read-only | REST API | 8088 | ||
OceanProtect | read-only | REST API | 8088 | ||
Infinidat | InfiniBox | read_only | REST API | 443 | |
InfiniGuard | read_only | REST API | 443 | ||
Infortrend | EonStor | read-only | SNMP v2c, v3 |
UDP:161 | |
Inspur | Inspur | Monitor | SVC CLI | 22 | |
iXsystems | FreeNAS | root | REST API | 443 | |
TrueNAS | root | REST API | 443 | ||
MacroSAN | Ceph | admin | SSH, FTP | 20,21,22 | |
Oracle | Oracle ZFS | read, create | REST API | 215 | |
Promise | VTrak | read | SNMP v2c, v3 |
UDP:161 | |
Pure Storage | FlashArray | read-only | REST API | 443 | |
FlashBlade | read-only | REST API | 443 | ||
QNAP | QNAP | regular OS user | SSH | 22 | |
Quantum | StorNext via WBI | monitor | REST API | 443 | |
StorNext via SMI-S | monitor | REST API SMI-S |
80, 5988 (443, 5989) |
||
Qumulo | Qumulo | Users | REST API | 8000 | |
RAIDIX | RAIDIX 5.x | regular OS user | SSH | 22 | |
Rubrik | CDM | ReadOnlyAdminRole | REST API | 443 | |
Seagate | Exos X via WBI | monitor | REST API | 443 | |
Exos X via SMI-S | monitor | REST API SMI-S |
80, 5988 (443, 5989) |
||
Synology | Synology | read | SNMP v2c, v3 |
UDP:161 | |
YADRO | TATLIN | restricted | monitor | 22 | |
Veritas | NetBackup | restricted | REST API | 1556 |
Vendor | Type | User role | Interface | Used ports | 3rd party SW |
---|---|---|---|---|---|
Brocade | SAN switch | read-only | SNMP v1,2,3 | 161 UDP | |
Brocade | Network Advisor | operator read only |
REST API | 443 | |
Brocade | SANnav | read only | REST API, Kafka | in:443, out:8081,9093 | Kafka |
QLogic | SAN switch | read-only | SNMP v1,2,3 | 161 UDP | |
Cisco | MDS and Nexus | read-only | SNMP v1,2,3 | 161 UDP | |
LAN | LAN switch | read-only | SNMP v1,2,3 | 161 UDP |
Vendor | Storage type | User role | Interface | Used ports |
---|---|---|---|---|
Brocade | SAN switch | read-only | SNMP v1,2,3 | 161 UDP |
QLogic | SAN switch | read-only | SNMP v1,2,3 | 161 UDP |
Cisco | MDS and Nexus | read-only | SNMP v1,2 | 161 UDP |
# 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
# umask 0022 # yum install net-snmp # yum install net-snmp-utils # yum install net-snmp-perl
# subscription-manager repos --list ... # subscription-manager repos --enable rhel-7-server-optional-rpms
% umask 0022 % apt-get install snmp libsnmp-perl snmp-mibs-downloader
#mibs :If apt-get does not find snmp-mibs-downloader package then enable contrib and non-free repositories.
$ perl /home/stor2rrd/stor2rrd/bin/conntest_udp.pl 192.168.1.1 161 UDP connection to "192.168.1.1" on port "161" is ok
# export PATH=$PATH:/opt/freeware/bin # snmpwalk -v 2c -c public <Switch_IP> 1.3.6.1.2.1.1.5 SNMPv2-MIB::sysName.0 = STRING: SAN_switch_name
Timeout: No Response from <Switch_IP>
# ssh <Switch_IP> -l admin SAN:admin> snmpconfig --show snmpv1 ... Community 4: public (ro) ...
# ssh <Switch_IP> -l admin switch# show snmp community Community Access --------- ------ private rw public ro
SAN:admin> snmpconfig --show accessControl
SAN: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 BROCADE-MAPS-MIB: YESEnable all missing MIBs each by each::
SAN:admin> snmpconfig --enable mibCapability -mib_name FICON-MIB
SAN:admin> snmpconfig --show seclevel SAN:admin> snmpconfig --set seclevel Select SNMP GET Security Level (0 = No security, 1 = Authentication only, 2 = Authentication and Privacy, 3 = No Access): (0..3) [3] 0
userconfig --add snmpuser1 -r user -l 1,128 userconfig --change snmpuser1 -r user -l 1,128 -h 128 -e no
$ 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
Error in packet. Reason: noAccess snmpwalk: Unknown user name
$ cd /home/stor2rrd/stor2rrd $ ./bin/config_check.sh <Switch IP/hostname> ========================= SWITCH: Switch_IP1 ========================= Type : BRCD DestHost : Switch_host Version SNMP : 1 Community : public Switch name : Switch_host STATE : CONNECTED!
$ crontab -l | grep load_sanperf.sh $
$ crontab -e # SAN agent 0,5,10,15,20,25,30,35,40,45,50,55 * * * * /home/stor2rrd/stor2rrd/load_sanperf.sh >/home/stor2rrd/stor2rrd/logs/load_sanperf.out 2>&1
$ crontab -e # STOR2RRD UI (just ONE entry of load.sh must be there) 5 * * * * /home/stor2rrd/stor2rrd/load.sh > /home/stor2rrd/stor2rrd/load.out 2>&1
$ cd /home/stor2rrd/stor2rrd $ ./load.sh html
User role | Interface | Used ports | operator read only | REST API | 443 TCP |
---|
$ perl /home/stor2rrd/stor2rrd/bin/conntest.pl 192.168.1.1 443 Connection to "192.168.1.1" on port "443" is ok
$ cd /home/stor2rrd/stor2rrd $ ./bin/config_check.sh <BNA IP/hostname> ========================= BNA: 10.22.11.53 ========================= Connection to "192.168.1.1" on port "443" is ok API connection: LOGIN : ok API request : ok LOGOUT : ok Switches found : 2 SAN switch : brocade01 operationalStatus : HEALTHY state : ONLINE statusReason : Switch Status is HEALTHY. SAN switch : brocade02 operationalStatus : HEALTHY state : ONLINE statusReason : Switch Status is HEALTHY. API connection OK
$ crontab -e # BNA agent 0,10,20,30,40,50 * * * * /home/stor2rrd/stor2rrd/load_bnaperf.sh >/home/stor2rrd/stor2rrd/logs/load_bnaperf.out 2>&1
$ crontab -e # STOR2RRD UI (just ONE entry of load.sh must be there) 5 * * * * /home/stor2rrd/stor2rrd/load.sh > /home/stor2rrd/stor2rrd/load.out 2>&1
$ cd /home/stor2rrd/stor2rrd $ ./load.sh html
$ ./bin/config_check.sh =============== BNA: 10.22.11.53 =============== Connection to "10.22.11.53" on port "4433" is ok API connection: Tue Oct 31 17:08:20 2017: Request error: 500 SSL negotiation failed: Tue Oct 31 17:08:20 2017: POST url : https://10.22.11.53:4433/rest/login Tue Oct 31 17:08:20 2017: LOGIN failed!Upgrade to STOR2RRD v2.20.
# 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
# umask 0022 # yum install net-snmp # yum install net-snmp-utils # yum install net-snmp-perl
# subscription-manager repos --list ... # subscription-manager repos --enable rhel-7-server-optional-rpms
% umask 0022 % apt-get install snmp libsnmp-perl snmp-mibs-downloader
#mibs :If apt-get does not find snmp-mibs-downloader package then enable contrib and non-free repositories.
$ perl /home/stor2rrd/stor2rrd/bin/conntest_udp.pl 192.168.1.1 161 UDP connection to "192.168.1.1" on port "161" is ok
$ export PATH=$PATH:/opt/freeware/bin $ snmpwalk -v 2c -c public 192.168.1.1 1.3.6.1.2.1.1.5 SNMPv2-MIB::sysName.0 = STRING: cisco01
$ interface vlan { vlan-id | vlan-range}
$ cd /home/stor2rrd/stor2rrd $ ./bin/config_check.sh 192.168.1.1 ========================= SWITCH: 192.168.1.1 ========================= Type : Cisco DestHost : 192.168.1.1 Version SNMP : 2c Community : public SNMP port : not defined! Used SNMP default port "161"! Switch name : cisco01 STATE : CONNECTED!
$ crontab -l | grep load_lanperf.sh $
$ crontab -e # LAN agent 0,5,10,15,20,25,30,35,40,45,50,55 * * * * /home/stor2rrd/stor2rrd/load_lanperf.sh >/home/stor2rrd/stor2rrd/logs/load_lanperf.out 2>&1
$ crontab -e # STOR2RRD UI (just ONE entry of load.sh must be there) 5 * * * * /home/stor2rrd/stor2rrd/load.sh > /home/stor2rrd/stor2rrd/load.out 2>&1
$ cd /home/stor2rrd/stor2rrd $ ./load.sh html
$ perl /home/stor2rrd/stor2rrd/bin/conntest.pl <Kafka Registry> 8081 Connection to <Kafka Registry> on port "8081" is ok $ perl /home/stor2rrd/stor2rrd/bin/conntest.pl <Kafka Broker> 9092 Connection to <Kafka Broker> on port "9092" is ok $ perl /home/stor2rrd/stor2rrd/bin/conntest.pl <SANnav> 443 Connection to <SANnav> on port "443" is ok
STOR2RRD collects data from SANnav using the Northbound Streaming feature.
Northbound Streaming provides support to securely stream performance and flow metrics from the switch to an external Kafka cluster (the northbound server).
Kafka cluster with schema registry must be configured in the customer's environment.
SANnav must be configured to stream data to the Kafka cluster.
SANnav NorthBound streaming is configured using SANnav REST API.
SANnav REST API documantation is available on https://support.broadcom.com/
Search for: "sannav rest api"
[root@xorux]# yum install python3 python3-pip python3-devel python3-requests gcc
[root@xorux]# rpm --import https://packages.confluent.io/rpm/7.7/archive.key [root@xorux]# cat > /etc/yum.repos.d/confluent.repo << EOF cat > /etc/yum.repos.d/confluent.repo << EOF [Confluent] name=Confluent repository baseurl=https://packages.confluent.io/rpm/7.7 gpgcheck=1 gpgkey=https://packages.confluent.io/rpm/7.7/archive.key enabled=1 [Confluent-Clients] name=Confluent Clients repository baseurl=https://packages.confluent.io/clients/rpm/centos/$releasever/$basearch gpgcheck=1 gpgkey=https://packages.confluent.io/clients/rpm/archive.key enabled=1 EOF
[root@xorux]# yum clean all && yum install librdkafka-devel
[stor2rrd@xorux]$ pip3 install --user kafkian==0.13.0 confluent-kafka==2.4.0When it ends with this error:
/tmp/pip-build-ka_v989g/confluent-kafka/src/confluent_kafka/src/confluent_kafka.c:1633:17: note: use option -std=c99 or -std=gnu99 to compile your code error: command 'gcc' failed with exit status 1Then use this cmd instead of above one:
[stor2rrd@xorux]$ CFLAGS=-std=c99 pip3 install --user kafkian==0.13.0 confluent-kafka==2.4.0
zypper install python3-pip python3-devel python3-requests zypper install librdkafka-develUbuntu / Debian
apt install python3-pip apt install python3-requests apt install python3-dev apt install librdkafka-dev
Note: SANnav can only be monitored from one STOR2RRD instance at a time
Create SANnav user for STOR2RRD
Navigate to User Management
SANnav ➡ Security ➡ SANnav User Management
Create new user with Operator role
Add storage to configuration in STOR2RRD GUI
Settings icon ➡ SAN ➡ New ➡ Vendor:device ➡ SANnav
REST API: SANnav IP address, port and STOR2RRD user credentials
KAFKA: Kafka NB server IP address and ports - this should be the IP address of your STOR2RRD host
$ crontab -l | grep load_sannavperf.sh $Add an entry if it doesn't exist
$ crontab -e # SANnav 0,5,10,15,20,25,30,35,40,45,50,55 * * * * /home/stor2rrd/stor2rrd/load_sannavperf.sh > /home/stor2rrd/stor2rrd/logs/load_sannavperf.out 2>&1
$ crontab -e # STOR2RRD UI (just ONE entry of load.sh must be there) 5 * * * * /home/stor2rrd/stor2rrd/load.sh > /home/stor2rrd/stor2rrd/load.out 2>&1
$ cd /home/stor2rrd/stor2rrd $ ./load.sh