SURVIVOR: Building and Installing
Prerequisites Scheduler Platforms GCC Perl DNS Disk I/O Module Dependencies Building Installing
Prerequisites
### Scheduler Platforms The survivor scheduler requires a platform that implements POSIX threads. (However, any type of platform can be monitored by the scheduler.) The scheduler is known to build on the following platforms: AIX 5.3 (powerpc) GNU/Linux 2.4.9 (RedHat 7.2, i686) GNU/Linux 2.4.18 (Debian 3.0/woody, powerpc) GNU/Linux 2.6.9 (RedHat ES4, i686) Solaris 7 (sparc) (This version of Solaris may encounter problems with debugging information. See Known Problems for more information.) Solaris 8 (sparc) (In order to run under Solaris 8, one or more patches to the operating system are required. Additionally, this version of Solaris may encounter problems with debugging information. See Known Problems for more information.) Solaris 9 (sparc) (Later versions of Solaris have better threading implementations. For this reason, Solaris 9 is the recommended Solaris platform, especially for large deployments.) It should be easy to port the scheduler to other modern platforms. However, the scheduler is known not to build on these platforms: Darwin 6.x,7.x,8.x/MacOS 10.2.x,10.3.x,10.4.x (`sem_init` is not implemented.) Darwin 5.x/MacOS X 10.1.5 and earlier (POSIX thread function `pthread_kill` is missing.) NetBSD (Pth does not support semaphores.) Solaris 2.5.1 and earlier (POSIX thread reader/writer locks are missing.) ### GCC If compiling with GCC, versions prior to 2.95, including 2.7.2, are known not to work. An indicative error is reported while building `libcm/cmutils.C`, regarding lvalue assignment. Versions 2.95.2 and later versions of 2.x are known to work. Version 3.x and later should work (versions 3.3 and 4.1.1 have been successfully tested). Additionally, GCC (confirmed in v2.95.2) should not be used to build `-g -O2`. This will not happen by default. ### Perl Perl version 5.005 or greater is required for the scheduler host, and 5.004 or greater is recommended on any remote host. For sites with large numbers of hosts and services, it is recommended to build a multi-threaded version of Perl (using ithreads, not 5005threads) in order for the Perl based checks to run more efficiently. The multi-threaded Perl is only required on the scheduler host, and must be version 5.8.0 or greater. ### DNS Sites with large numbers of hosts and services should pay careful attention to the efficiency of their name resolution setup. It may be desirable to place a name server process on the same host as the scheduler, or to enable hostname caching in `nscd` (on Solaris and Linux), or to otherwise ensure the fast resolution of names. ### Disk I/O Sites with large numbers of hosts and services should consider disk I/O issues. The scheduler performs significant amounts of disk operations, primarily write operations. Two approaches can be used to increase the concurrency of write operations, both require the availability of multiple disks, and both are related to the instance configuration file. Form the multiple disks into a RAID, and configure the state and history directories to be located on the RAID. Depending on the hardware and software of the RAID, it will most likely be RAID 0 (stripe), which increases write concurrency but decreases reliability by having additional points of failure. Establish multiple scheduler instances, and store the data for each instance on a different disk. ### Module Dependencies Some modules require additional pieces to run. These pieces may or may not be installed by default by the host operating system, and may already be installed to support the service being checked. Perl Module Dependencies can generally be downloaded from http://www.cpan.org. For scheduler check modules and transmit modules, the dependency perl module need only be installed on the scheduler host. For remote check modules, the dependency perl module must be installed on each host being checked. See About Check Modules for a description of scheduler vs. remote check modules. To facilitate the installation of the more general perl modules, copy the bundle file from `src/modules/Bundle/Survivor.pm` to `~/.cpan/Bundle/Survivor.pm`. Then, start the CPAN shell and install the bundle.
     $ perl -MCPAN -e shell
     cpan> install Bundle::Survivor
Executable Module Dependencies must be found in the default module `$PATH`, which is defined in `INSTDIR/mod/common/Survivor.pm`. For scheduler check modules and transmit modules, the dependency executable need only be installed on the scheduler host. For remote check modules, the dependency executable must be installed on each host being checked. See About Check Modules for a description of scheduler vs. remote check modules.
Check Module | Perl Module Dependencies | Executable Module Dependencies
--- | --- | ---
conserver | - | `console`
cyrusstuckmailbox | - | `ctl_mboxlist`
cyrussync | `Net::SSH::Perl` | cyr_quota
database | `DBI` For DB2: `DBD::DB2` For Ingres: `DBD::Ingres` For mSQL: `DBD::msql` For MySQL: `DBD::mysql` For Oracle: `DBD::Oracle` For Postgres: `DBD::Pg` For Sybase: `DBD::Sybase` | -
daytime | `Net::Time` (>=2.10) `Time::ParseDate` | -
dblocks | `DBI` | -
dhcp | - | dhcping
filetest | `File::stat` | -
flexlm | - | lmstat
ftpd | `Net::FTP` | -
hplj | `SNMP` | -
httpurl | `HTTP::Request::Common` `LWP::UserAgent` `URI` | -
imap | `Mail::IMAPClient` Version 2.2.7 is known to work. | -
krb5 | - | kinit and kdestroy
ldap | `Net::LDAP` See known problems for issues related to this module For monitoring LDAPS hosts, `IO::Socket::SSL` is required For LDAPS hosts that do not support starttls, `Net::LDAPS` is also required. | -
load | - | Linux distributions lacking the `rup` command may need to install the `rup` (or `rstat-client`) package. Failing that, this module may still be used as a remote module.
mailbe | `Mail::IMAPClent` `Mail::Send` | -
mailboxcreate | `Mail::IMAPClent` | -
mailfe | `Mail::IMAPClent` `Mail::Send` | -
mon | `Mon::Client` | -
monfail | `Mon::Client` | -
nadisk | `SNMP` | -
named | `Net::DNS` | -
namedSerial | `Net::DNS` | -
ntpc | - | ntpq
ph | `Net::PH` | -
ping | - | fping is required for full functionality
radius | - | radtest
raidbox | `SNMP` | -
rtsp | `URI`(>=1.20) | -
sasl | - | `testsaslauthd`
smbd | - | smbclient
snmp | `SNMP` | -
storedge | `SNMP` | -
telnet | `Net::Telnet` | -
tftpd | `Net::TFTP` | -
time | `Net::Time`(>=2.10) | -
tty | `POSIX` | -
ups | `SNMP` | -
wins | - | nmblookup
Transmit Module | Perl Module Dependencies | Executable Module Dependencies
mail | `Mail::Mailer` | -
WebAuth Module | Perl Module Dependencies | Executable Module Dependencies
wind | `HTTP::Request::Common` `LWP::UserAgent` `URI` `URI::Escape` | -
Modules not listed above should run out of the box. However, it is still important to read each module's documentation to properly configure it to check as desired.
Building
3. First, determine the user and group that the package will be installed as. The default user is `survivor`. By default, the selected user will own the files that the package generates. No special system level services are required, so privileged users such as root should not be used. The default group is `staff`. Only users in the selected group will be able to run the command line interface. Note that any member of the selected group will have permission to edit the history files. If this is not desirable, then access to the system should not be provided via that command line interface (and those users should not be able to login to the scheduler host). This may be corrected in a future release. Important: The selected user must be a member of the selected group in order to properly set group ownership of files and directories. Select an installation directory. By default, the package will install in `/usr/local`, but for ease of maintenance it may be desirable to use a name like `/opt/survivor` or `/usr/local/survivor`. Various subdirectories will be created (if they don't already exist) under the selected directory. Run `configure`. By default, `configure` will attempt to build with OpenSSL. If OpenSSL is unavailable, or not in one of the compiler's default include directory, it may be necessary to tell `configure`. If building with SSL results in errors about `openssl/des.h` declarations, try adding `-DNO_DES` to `$CXXFLAGS` before invoking `configure`. A working version of `g++` is required, other compilers may work. (Sun Workshop CC v6 did not previously test successfully.) A working version of `lex` is also required. `flex` and Solaris `/usr/ccs/bin/lex` are both known to work. On AIX, it may be necessary to configure `--enable-shared=no` in order to avoid errors about `Cannot load program` and `Cannot load module libparsexml.a(libexpat.so.0)` when starting the scheduler. On AIX, it is recommended that GNU tools such as `make`, `install`, and `flex` be used. An example using the default user and group but with OpenSSL in a non-default location:
            % ./configure --with-openssl=/opt/openssl
   Using a separate build directory, a custom installation directory, and a different username:
            % mkdir obj
            % cd obj
            % ../configure --prefix=/opt/survivor --enable-user=monitor
   Configure Option | Default | Description
   --- | --- | ---
   `--enable-debug` | yes | Compile in debugging.
   `--enable-group=x` | staff | Set the group that the package will be installed as to x.
   `--enable-module-serialization` | yes | Force module to start one at a time to avoid a race condition. (If disabled, an alternate workaround is implemented.)
   `--enable-remote-only` | no | If set, configure a build suitable only for remote installation. (No compiled programs will be built.) This is suitable for working with the remote gateway.
   `--enable-shared` | yes | If set, build subcomponents (eg: libexpat) using shared libraries. On some platforms (AIX), it may be necessary to disable shared libraries.
   `--enable-user=x` | survivor | Set the user that the package will be installed as to x.
   `--prefix=x` | `/usr/local` | Set installation location to x. If set, configure a build suitable only for remote installation. (No compiled programs will be built.) This is suitable for working with the remote gateway.
   `--with-openssl[=x]` | Yes, found in `$PATH` | Build with OpenSSL, for components that use SSL. If set, x indicates where to find the OpenSSL installation.
After `configure` runs successfully, type `make`.
Installing
In the top level directory, as root, type `make install`. The following will be installed: `INSTDIR/sbin/ss`: The survivor scheduler. `INSTDIR/sbin/sg`: The survivor mail gateway. `INSTDIR/sbin/sr`: The survivor remote daemon, used by transport modules for certain types of monitoring. `INSTDIR/sbin/sw`: The survivor CGI (web) interface. `INSTDIR/bin/sc`: The survivor command line interface. `INSTDIR/mod`: Various modules distributed with the package. SURVIVOR does not depend on the names of the executables. If desired, they may be renamed. `sg` and `sw` are installed setgid `$INSTGROUP` by default. This is because they are usually run by other unprivileged users (such as `www` or `sendmail`). If these users are members of `$INSTGROUP`, or if these interfaces will not be used, the setgid bit may be removed. By default, the high performance pingx module is not installed because it must be installed setuid root. Instructions for installing the module are included in the module's documentation. It may be advisable to install the watcher utility. Some types of checks must be executed directly on the server being monitored, as explained in the transport module documentation. The documentation for the remote gateway discusses installation and configuration. $Date: 2006/11/19 02:58:18 $ $Revision: 0.56 $ | keywords