Status
- OVIS version 3.0 supports multiple concurrent shepherds for the distributed database and mysql inserts on the part of the sheep (on-component data collectors). It has the qt/vtk based interface only.
- We have a number of installs that use a single shepherd configuration. There are some features in the master git branch that are currently supported for single shepherd operation only (e.g., outlier analysis).
- The data collection version which uses LDMS rather than the sheep is being used on some collaborative installs. This eliminates the on-node mysql inserts.
Please contact ovis-help for more information.
Directory Structure
A specific directory structure is not mandated, however we have used the following in many deployments: OVIS source is in
~ovis/Source/ovis
and the binaries are in
~ovis/Build/ovis
and make install has been done to install to
/usr/local/ovis
with links from /usr/local/bin to the binaries there for shepherd, baron, and ovis-db and with
/etc/ld.so.conf.d/ovis.conf
created with contents /usr/local/ovis/lib and /usr/local/ovis/lib64. (Recall to run /sbin/ldconfig -v after, and restart mysqld)
Dependencies
- Avahi (or Bonjour) – avahi is only necessary for running OVIS with multiple databases. Avahi headers are necessary for building OVIS, even if intending a single database, but the avahi service does not need to be running for single shepherd operation. version around 0.6.27
- qt – 4.7.4
- qjson – 0.7.1 at least
- boost – version 1.44 at least
- MySQL – can use either PostgreSQL or MySQL
- PostgreSQL – can use either PostgreSQL or MySQL
- libevent – only if using LDMS. version 2.x
- readline
- CMake (if building)- version 2.8 at least
On systems such as FC16 all these dependencies can be resolved via yum (on others they may not be, or the version may not be correct). Assuming you are building everything, this would be:
yum install \ cmake readline-devel libevent-devel \ postgresql postgresql-devel postgresql-libs postgresql-server \ mysql-devel mysql-utilities mysql mysql-libs mysql-server \ avahi avahi-glib-devel avahi-gobject avahi-libs avahi-glib avahi-devel \ avahi-ui-devel avahi-qt4-devel avahi-qt4 \ qt qt-webkit-devel qt-webkit qt-devel qt-x11 qt-mysql qjson qjson-devel \ boost boost-devel # Required only to build baler: yum install perl-Algorithm-Diff
Note that for some of the installation steps you may want to do (e.g., changing the rpath for programs) you may also want:
yum install chrpath
Otherwise you can install the packages from source and set the appropriate paths in the CMAKE Flags of OVIS.
CMAKE
OVIS uses CMAKE to build. Flags of interest include:
- CMAKE_INSTALL_DIR – where you want to install ovis
- any dependencypaths suchas : BOOST_INCLUDE_DIR, BOOST_LIBRARY_DIRS, QJSON_LIBRARY, QJSON_INCLUDE_DIR, any of the AVAHI flags etc
- QT_QMAKE_EXECUTABLE
- OVIS_USE_MYSQL or OVIS_USE_POSTGRESQL – at least one or the other must be on
- OVIS_USE_AVAHI or OVIS_USE_BONJOUR – at least one or the other must be on
- If you are using static libraries for your dependendencies: CMAKE_CXX_FLAGS and CMAKE_C_FLAGS -fPIC
- OVIS_BUILD_BARON – set to yes for the install where you will run the baron (desired resolution and speed for the 3D interface requires NVIDIA card)
- OVIS_BUILD_SHEPHERD – set to yes for the install where you will run shepherd (shepherd must be co-located with the database)
In addition:
- BUILD_KOMONDOR = no
- USE_SYSTEM_LIBEXEC =yes
- anything to do with ldms currently no/off
Database
particular to FC16, from which you can extrapolate to your system:
- Start database daemons
# MySQL systemctl enable mysqld.service systemctl start mysqld.service # Be sure to change Foob to something you will remember: mysql -u root -e "UPDATE mysql.user SET Password=PASSWORD('Foob') WHERE User='root';FLUSH PRIVILEGES;" # If the above doesn't work, try adding "-p". # Drop the anonymous accounts (also verify afterward) mysql -u root -p -e "DROP USER (single quote here)(single quote here)@'localhost'" mysql -u root -p -e "DROP USER (single quote here)(single quote here)@'host_name_here'" #mysql -u root -p -e "CREATE DATABASE OVIS_Cluster; GRANT ALL ON OVIS_Cluster.* TO 'ovis'@'localhost';FLUSH PRIVILEGES;" #mysql -u root -p -e "CREATE DATABASE balerDemo;" #mysql -u root -p -e "GRANT ALL ON balerDemo.* TO 'baler'@'localhost' IDENTIFIED BY 'Foob'; FLUSH PRIVILEGES;" mysql -u root -p -e "GRANT ALL ON *.* TO 'ovis'@'localhost';FLUSH PRIVILEGES;"
# PostgreSQL postgresql-setup initdb systemctl enable postgresql.service systemctl start postgresql.service su - postgres createuser -s -R -l ovis createdb -O ovis ovis exit systemctl stop postgresql.service su - postgres echo "# local access to ovis for all" > hba.tmp echo "local all ovis trust" >> hba.tmp mv /var/lib/pgsql/data/pg_hba.conf hba2.tmp cat hba.tmp hba2.tmp > /var/lib/pgsql/data/pg_hba.conf rm -f hba.tmp hba2.tmp # Turn off annoying informational messages that clutter real warning/error messages mv /var/lib/pgsql/data/postgresql.conf conf.tmp sed -e 's/max_connections = 100/max_connections = 500/g' \ -e 's/^#client_min_messages = notice.*/client_min_messages = warning/g' \ conf.tmp > /var/lib/pgsql/data/postgresql.conf exit # Turn up shared memory to 128 MiB (from 32 MiB) to allow more connections: sysctl -w kernel.shmmax=134217728 # ... and make the change survive reboots: echo " " >> /etc/sysctl.conf echo "# For OVIS's use of PostgreSQL, increase shared memory size" >> /etc/sysctl.conf echo "kernel.shmmax = 134217728" >> /etc/sysctl.conf # Restart postgres systemctl start postgresql.service
- Install database triggers and create a database
# PostgreSQL mkdir /usr/local/ovis chown ovis /usr/local/ovis su - ovis cd Build/ovis make install cd bin tar cf - libvtksys* libvtkCommon* libvtkFiltering* libovTriggerPSQL.so | (cd /usr/local/ovis/lib64; tar xf - ) cd /usr/local/ovis/lib64 chrpath -r /usr/local/ovis/lib64: libvtkCommon* libvtkFiltering* libvtkInfovis* libovTriggerPSQL.so exit cd /usr/local/ovis/lib64 for f in libovTriggerPSQL.so libvtksys.so.5.11.0 libvtkCommon.so.5.11.0 libvtkFiltering.so.5.11.0 libvtkInfovis.so.5.11.0; do semanage fcontext -a -t postgresql_exec_t /usr/local/ovis/lib64/$f restorecon -v /usr/local/ovis/lib64/$f done semanage fcontext -a -t lib_t '/usr/local/ovis/lib64' restorecon -v '/usr/local/ovis/lib64' su - ovis cd ~/Build/ovis ./bin/ovis-db -t 16383 -x data/test.ovdb exit
# MySQL cd ~ovis/Build/ovis/bin tar cf - libovTriggerMySQL.so | (cd /usr/lib64/mysql/plugin; tar xf - ) tar cf - libvtksys* libvtkCommon* libvtkFiltering* libvtkInfovis* libovTriggerMySQL.so | (cd /usr/lib64/mysql; tar xf - ) restorecon -v /usr/lib64/mysql/libvtk* restorecon -v /usr/lib64/mysql/plugin/libovTriggerMySQL.so cd /usr/lib64/mysql chrpath -r /usr/lib64/mysql: libvtkCommon* libvtkFiltering* libvtkInfovis* plugin/libovTriggerMySQL.so su - ovis cd ~/Build/ovis ./bin/ovis-db -t 16383 -x data/test.ovdb -u mysql://ovis@localhost/OVIS_Cluster exit
- Set any additional paths you need for OVIS libraries to be found.
echo "/usr/local/lib64" > /etc/ld.so.conf.d/ovis.conf echo "/usr/local/lib" >> /etc/ld.so.conf.d/ovis.conf ldconfig