- LPAR2RRD can be hosted on any Unix or Linux Operating system
- Perl: arbitrary version coming with the OS with some additional modules, more below
- Apache or any other Web server
Skip it in case of configuring
Virtual Appliance
HW sizing
User creation
- create lpar2rrd user under root:
# useradd -c "LPAR2RRD user" -m lpar2rrd
- Increase limits for user lpar2rrd and the WEB server user (under root)
- AIX
# chdev -l sys0 -a maxuproc=2000
# chuser nofiles=32768 data=-1 stack=-1 rss=-1 lpar2rrd
# chuser data=-1 stack=-1 rss=-1 apache
- Linux
# vi /etc/security/limits.conf
lpar2rrd hard stack -1
lpar2rrd soft stack -1
lpar2rrd hard data -1
lpar2rrd soft data -1
lpar2rrd hard nofile 32768
lpar2rrd soft nofile 32768
lpar2rrd hard nproc 5000
lpar2rrd soft nproc 5000
apache hard stack -1
apache soft stack -1
apache hard data -1
apache soft data -1
If you have already running
STOR2RRD on the same host then skip to
Web tab.
Linux RedHat, CentOS
RHEL 8: enable the codeready-builder-for-rhel-8-*-rpms repository
# ARCH=$( /bin/arch )
# subscription-manager repos --enable "codeready-builder-for-rhel-8-${ARCH}-rpms"
CentOS 8: enable the PowerTools repository
# yum config-manager --set-enabled PowerTools
# umask 0022
# yum install perl rrdtool rrdtool-perl httpd
# yum install epel-release
# yum install perl-TimeDate perl-XML-Simple perl-XML-SAX perl-XML-LibXML perl-Env perl-CGI perl-Data-Dumper perl-LWP-Protocol-https perl-libwww-perl perl-Time-HiRes perl-IO-Tty
# yum install perl-PDF-API2
# yum install ed bc libxml2 sharutils
Note that rrdtool-perl and epel-release (this is necessary only for
PDF reporting) might not be in your RedHat base repository especially for RHEL 6.x and olders.
Install CentOS package instead
rrdtool-perl-1.4.8-9.el7.x86_64.rpm and
epel-release-7-9.noarch.rpm
Linux Debian, Ubuntu
AIX
Install RRDTool 1.4.8 with all prerequisites for AIX
If you use yum on AIX then do not use rrdtool-1.7.0-4, it has a bug, use rrdtool-1.7.0-3 instead
Solaris
LPAR2RRD obtains data through SQL (SQL*Plus). Oracle client must be installed on LPAR2RRD server.
Monitoring implementation
does not require any Oracle licensed features like Oracle Diagnostics Pack or Oracle Tuning Pack .
LPAR2RRD requires a database user with the following view only permissions to collect monitoring data:
- create session
- select rights on specific sys.* tables
Oracle Instant Client and SQL*Plus installation
Oracle Instant Client and SQL Plus are used for collecting information from an Oracle DB instance.
Oracle DB user is needed with sufficient privileges.
Version compatibility: OIC 19c supports Oracle DB versions 11.2.0.4 and newer.
Oracle Instant Client (OIC) can be deployed from a ZIP file or installed as an RPM package.
Installation steps are performed under
root account
- Linux: libaio prerequisite
Skip this step if you are using XoruX Virtual Appliance
# yum -y install libaio.x86_64
- Linux CentOS8/RHEL8: libnsl.so.1 might not have been in the OS present, install it:
# dnf install libnsl.x86_64
- Installation form ZIP files (Linux and AIX)
- AIX: note that Oracle Client packages do not work on AIX 6.1, AIX 7.1 and 7.2 are fine.
- Download ZIP packages from Oracle Download website Linux x86-64, AIX
OIC basic: instantclient-basic-linux.x64-19.6.0.0.0dbru.zip
SQL*Plus: instantclient-sqlplus-linux.x64-19.6.0.0.0dbru.zip
Create /opt/oracle directory and unzip
# umask 022
# mkdir /opt/oracle
# cd /opt/oracle
# unzip /<download_dir>/instantclient-basic-linux.x64-19.6.0.0.0dbru.zip
# unzip /<download_dir>/instantclient-sqlplus-linux.x64-19.6.0.0.0dbru.zip
ZIP files will be unpacked into /opt/oracle/instantclient_<version>
- ldconfig (Linux)
# echo "/opt/oracle/instantclient_<version>" > /etc/ld.so.conf.d/oracle-instantclient.conf
# ldconfig
- RPM installation - Linux
-
AIX: missing iocp
You may get the following err when running sqlplus on AIX.
# cd /opt/oracle/instantclient_<version>
# export LIBPATH=`pwd`
# ./sqlplus
exec(): 0509-036 Cannot load program sqlplus because of the following errors:
rtld: 0712-001 Symbol CreateIoCompletionPort was referenced
from module /opt/oracle/instantclient_19_5/libttsh19.so(), but a runtime definition
of the symbol was not found.
rtld: 0712-001 Symbol GetMultipleCompletionStatus was referenced
from module /opt/oracle/instantclient_19_5/libttsh19.so(), but a runtime definition
of the symbol was not found.
rtld: 0712-002 fatal error: exiting.
# lsdev | grep iocp
iocp0 Defined I/O Completion Ports
Configure iocp without AIX reboot:
# smitty iocp
Select: Change / Show Characteristics of I/O Completion Ports ➡ se to available ➡ confirm ➡ it prints error that reboot is necessary, ignore it for now
# lsdev | grep iocp
iocp0 Defined I/O Completion Ports
# lsattr -El iocp0
autoconfig defined STATE to be configured at system restart True
Enable iocp0 now and at restart:
# mkdev -l iocp0
iocp0 Available
# chdev -l iocp0 -a autoconfig='available' -P
iocp0 changed
# lsdev | grep iocp
iocp0 Available I/O Completion Ports
Create DB user for LPAR2RRD
Database user in each Oracle instance must be created, it will be used for LPAR2RRD access.
You can choice whatever user name (below examle show "lpar2rrd" user, then specify it in LPAR2RRD Database properties.
- Standalone / RAC
$ sqlplus sys"/as sysdba"
create user lpar2rrd_check identified by "<password>" default tablespace USERS temporary tablespace TEMP;
grant create session to lpar2rrd_check;
grant select on sys.v_$resource_limit to lpar2rrd_check;
grant select on sys.gv_$resource_limit to lpar2rrd_check;
grant select on sys.v_$sysmetric_summary to lpar2rrd_check;
grant select on sys.gv_$sysmetric_summary to lpar2rrd_check;
grant select on sys.v_$sysmetric_history to lpar2rrd_check;
grant select on sys.gv_$sysmetric_history to lpar2rrd_check;
grant select on sys.v_$datafile to lpar2rrd_check;
grant select on sys.gv_$datafile to lpar2rrd_check;
grant select on sys.v_$filestat to lpar2rrd_check;
grant select on sys.gv_$filestat to lpar2rrd_check;
grant select on sys.v_$instance to lpar2rrd_check;
grant select on sys.gv_$instance to lpar2rrd_check;
grant select on sys.v_$database to lpar2rrd_check;
grant select on sys.gv_$database to lpar2rrd_check;
grant select on sys.v_$osstat to lpar2rrd_check;
grant select on sys.gv_$osstat to lpar2rrd_check;
grant select on sys.v_$session to lpar2rrd_check;
grant select on sys.gv_$session to lpar2rrd_check;
grant select on sys.v_$sgainfo to lpar2rrd_check;
grant select on sys.gv_$sgainfo to lpar2rrd_check;
grant select on sys.v_$containers to lpar2rrd_check;
grant select on sys.gv_$containers to lpar2rrd_check;
grant select on sys.v_$pgastat to lpar2rrd_check;
grant select on sys.gv_$pgastat to lpar2rrd_check;
grant select on sys.v_$system_wait_class to lpar2rrd_check;
grant select on sys.gv_$system_wait_class to lpar2rrd_check;
grant select on sys.v_$system_event to lpar2rrd_check;
grant select on sys.gv_$system_event to lpar2rrd_check;
grant select on sys.v_$cluster_interconnects to lpar2rrd_check;
grant select on sys.gv_$cluster_interconnects to lpar2rrd_check;
grant select on sys.v_$sysstat to lpar2rrd_check;
grant select on sys.gv_$sysstat to lpar2rrd_check;
grant select on sys.v_$service_stats to lpar2rrd_check;
grant select on sys.gv_$service_stats to lpar2rrd_check;
grant select on sys.v_$event_histogram to lpar2rrd_check;
grant select on sys.gv_$event_histogram to lpar2rrd_check;
grant select on dba_free_space to lpar2rrd_check;
grant select on dba_temp_free_space to lpar2rrd_check;
grant select on dba_data_files to lpar2rrd_check;
grant select on dba_registry to lpar2rrd_check;
grant select on dba_temp_files to lpar2rrd_check;
grant select on sys.registry$history to lpar2rrd_check;
grant select on sys.REGISTRY$SQLPATCH to lpar2rrd_check;
exit;
- MULTITENANT
$ sqlplus sys"/as sysdba"
create user lpar2rrd_check identified by "<password>" default tablespace USERS temporary tablespace TEMP CONTAINER = ALL;
grant create session to lpar2rrd_check CONTAINER = ALL;
grant SET CONTAINER to lpar2rrd_check CONTAINER = ALL;
grant select on sys.v_$resource_limit to lpar2rrd_check CONTAINER = ALL;
grant select on sys.gv_$resource_limit to lpar2rrd_check CONTAINER = ALL;
grant select on sys.v_$sysmetric_summary to lpar2rrd_check CONTAINER = ALL;
grant select on sys.gv_$sysmetric_summary to lpar2rrd_check CONTAINER = ALL;
grant select on sys.v_$sysmetric_history to lpar2rrd_check CONTAINER = ALL;
grant select on sys.gv_$sysmetric_history to lpar2rrd_check CONTAINER = ALL;
grant select on sys.v_$datafile to lpar2rrd_check CONTAINER = ALL;
grant select on sys.gv_$datafile to lpar2rrd_check CONTAINER = ALL;
grant select on sys.v_$filestat to lpar2rrd_check CONTAINER = ALL;
grant select on sys.gv_$filestat to lpar2rrd_check CONTAINER = ALL;
grant select on sys.v_$instance to lpar2rrd_check CONTAINER = ALL;
grant select on sys.gv_$instance to lpar2rrd_check CONTAINER = ALL;
grant select on sys.v_$database to lpar2rrd_check CONTAINER = ALL;
grant select on sys.gv_$database to lpar2rrd_check CONTAINER = ALL;
grant select on sys.v_$osstat to lpar2rrd_check CONTAINER = ALL;
grant select on sys.gv_$osstat to lpar2rrd_check CONTAINER = ALL;
grant select on sys.v_$session to lpar2rrd_check CONTAINER = ALL;
grant select on sys.gv_$session to lpar2rrd_check CONTAINER = ALL;
grant select on sys.v_$sgainfo to lpar2rrd_check CONTAINER = ALL;
grant select on sys.gv_$sgainfo to lpar2rrd_check CONTAINER = ALL;
grant select on sys.v_$containers to lpar2rrd_check CONTAINER = ALL;
grant select on sys.gv_$containers to lpar2rrd_check CONTAINER = ALL;
grant select on sys.v_$pgastat to lpar2rrd_check CONTAINER = ALL;
grant select on sys.gv_$pgastat to lpar2rrd_check CONTAINER = ALL;
grant select on sys.v_$system_wait_class to lpar2rrd_check CONTAINER = ALL;
grant select on sys.gv_$system_wait_class to lpar2rrd_check CONTAINER = ALL;
grant select on sys.v_$system_event to lpar2rrd_check CONTAINER = ALL;
grant select on sys.gv_$system_event to lpar2rrd_check CONTAINER = ALL;
grant select on sys.v_$con_sysmetric_summary to lpar2rrd_check CONTAINER = ALL;
grant select on sys.gv_$con_sysmetric_summary to lpar2rrd_check CONTAINER = ALL;
grant select on sys.v_$con_sysmetric_history to lpar2rrd_check CONTAINER = ALL;
grant select on sys.gv_$con_sysmetric_history to lpar2rrd_check CONTAINER = ALL;
grant select on sys.v_$cluster_interconnects to lpar2rrd_check CONTAINER = ALL;
grant select on sys.gv_$cluster_interconnects to lpar2rrd_check CONTAINER = ALL;
grant select on sys.v_$sysstat to lpar2rrd_check CONTAINER = ALL;
grant select on sys.gv_$sysstat to lpar2rrd_check CONTAINER = ALL;
grant select on sys.v_$service_stats to lpar2rrd_check CONTAINER = ALL;
grant select on sys.gv_$service_stats to lpar2rrd_check CONTAINER = ALL;
grant select on sys.v_$event_histogram to lpar2rrd_check CONTAINER = ALL;
grant select on sys.gv_$event_histogram to lpar2rrd_check CONTAINER = ALL;
grant select on dba_free_space to lpar2rrd_check CONTAINER = ALL;
grant select on dba_temp_free_space to lpar2rrd_check CONTAINER = ALL;
grant select on dba_data_files to lpar2rrd_check CONTAINER = ALL;
grant select on dba_registry to lpar2rrd_check CONTAINER = ALL;
grant select on dba_temp_files to lpar2rrd_check CONTAINER = ALL;
grant select on sys.registry$history to lpar2rrd_check CONTAINER = ALL;
grant select on sys.REGISTRY$SQLPATCH to lpar2rrd_check CONTAINER = ALL;
exit;
Note that for older databases than 12c you get errors like this, ignore them (you do not get this data from database: PSU,patches info)
SQL> grant SET CONTAINER to lpar2rrd;
ORA-00990: missing or invalid privilege
SQL> grant select on sys.REGISTRY$SQLPATCH to lpar2rrd;
ORA-00942: the table does not exist
Connectivity check
Allow access from the LPAR2RRD host to Oracle DB host.
Make sure you are using correct port.
Default port for Oracle DB sessions is 1521.
Check connectivity:
$ perl /home/lpar2rrd/lpar2rrd/bin/conntest.pl 192.168.1.1 1521
Connection to "192.168.1.1" on port "1521" is ok
Attach Oracle Databases
- Oracle environment
Set Oracle environment variables in etc/lpar2rrd.cfg, modify existing setup
# Oracle DB client setup
# Adjust ORACLE_HOME & ORACLE_BASE as necessary, "instantclient_X" is only example
# Do not use ORACLE_HOME variable as part of ORACLE_HOME, use always full path!
ORACLE_BASE=/opt/oracle
ORACLE_HOME=/opt/oracle/instantclient_XY
Note ORACLE_HOME must be directory where sqlplus binary is, like in this example when it is in /usr/lib/oracle/19.6/client64/bin/sqlplus
ORACLE_BASE=/usr/lib/oracle
ORACLE_HOME=/usr/lib/oracle/19.6/client64/bin
There can be a problem when sqlplus is in "bin" subdir as such ORACLE_HOME do not have to acceptable for Oracle client.
Either use ORACLE_HOME without "bin" and copy/symlink sqlplus to ORACLE_HOME or upgrade to LPAR2RRD 7.04+ (release in Dec 2020) where it is fixed (you do not need to put "bin" into ORACLE_HOME)
-
LPAR2RRD UI ➡ Settings icon ➡ Oracle DB --> ➡ New :
Oracle service: to list Oracle service use this cmd on the server where DB is running: lsnrctl status
Make sure that connection test passes without errors or warnings.
-
Number of attached Oracle RAC instances is limited to 1 in the Free edition.
However you can attach Oracle RAC nodes even as stand-alone instances if you reach the limitation, there is no limit for attaching of Oracle stand-alone DB instances.
- Make sure cron jobs for Oracle DB are in place (upgrade script might do it for you automatically)
Skip this step if you install the Virtual Appliance - it is already taken care of.
$ crontab -l | grep "load_oracledb.sh"
$
Add following lines to crontab if necessary
$ crontab -e
# Oracle DB support
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /home/lpar2rrd/lpar2rrd/load_oracledb.sh > /home/lpar2rrd/lpar2rrd/load_oracledb.out 2>&1
- Wait 30 minutes and then go to the web UI: http://<your web server>/lpar2rrd/
Use Ctrl-F5 to refresh the web browser cache.