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