$OpenBSD: README-server,v 1.3 2011/01/04 16:03:00 ajacoutot Exp $

Using Zabbix on OpenBSD
=======================

The original documentation is available as a PDF file at
    http://www.zabbix.com/

A manual is available at:
    http://www.zabbix.com/documentation/1.8/complete

On OpenBSD, Zabbix is packaged in three parts:

- the agent (in the zabbix-agent package) for installing onto a
monitored machine. To simplify installation from ports on client
machines, only this part is built by default.

- the server and proxy (in the database-dependent zabbix-server
package); this has heavier dependencies and is built by selecting
the FLAVOR for the database you use (currently mysql, pgsql or sqlite3).

- the web interface to run with the server (in the zabbix-web package).

Before doing anything, you have to adapt the configuration files under
    /etc/zabbix/
(make sure your webserver can resolve hostnames; otherwise use IP
addresses in the configuration files).

On OpenBSD, the default shared memory value is too low for the Zabbix
Server and Proxy to work properly. You should set kern.shminfo.shmall
according to your needs ("32768" is a good value for starter) -- see
sysctl(8) and sysctl.conf(5).

On a busy server, it may be advisable to put the zabbix processes into
their own login(1) class with tuned resources, such as more open file
descriptors etc.
e.g. add the following lines to login.conf(5):

zabbix_server:\
	:openfiles-cur=1024:\
	:openfiles-max=2048:\
	:tc=daemon

Next you must create the database following the relevant set of
instructions below. When this is done you can proceed to configure
through the web interface at http://<hostname>/zabbix/setup.php.
(default user is 'Admin' with password 'zabbix')

MySQL (InnoDB)
--------------

MySQL users running with chroot'ed httpd might like to take the
following steps to place the mysql socket inside the chroot:

Create a directory for the mysql socket.

    mkdir -p /var/www/var/run/mysql

Adjust /etc/my.cnf to put the mysql socket into the chroot,

    [client]
    socket = /var/www/var/run/mysql/mysql.sock

    [mysqld]
    socket = /var/www/var/run/mysql/mysql.sock

and set DBSocket in the Zabbix configuration appropriately.

Connect to MySQL, and create a user and database for Zabbix;

    $ mysql -u root -p
    mysql> create user zabbix@localhost identified by 'password';
    mysql> create database zabbix character set utf8;
    mysql> grant all privileges on zabbix.* to zabbix@localhost;
    mysql> quit

Then initialize the database from the files installed in
/usr/local/share/examples/zabbix:

    $ cd /usr/local/share/zabbix/schema
    $ mysql -uzabbix -p[password] zabbix < mysql.sql
The following steps are not required for setting up a Zabbix Proxy.
    $ cd ../data
    $ mysql -uzabbix -p[password] zabbix < data.sql
    $ mysql -uzabbix -p[password] zabbix < images_mysql.sql

PostgreSQL
----------

Assuming you have an administrative account named `postgres',
you can create the 'zabbix' user and database like this:

    createuser -U postgres --pwprompt --no-superuser \
      --createdb --no-createrole zabbix
    createdb -U zabbix zabbix

And initialize the database:

    $ cd /usr/local/share/zabbix/schema
    $ cat postgresql.sql | psql -U zabbix zabbix
The following steps are not required for setting up a Zabbix Proxy.
    $ cd ../data
    $ cat data.sql | psql -U zabbix zabbix
    $ cat images_pgsql.sql | psql -U zabbix zabbix

SQLite3
-------

The following steps are optional on a Zabbix Proxy, the database will be
automatically created and initialized if it does not exist. Note that
for obvious performance reasons, it is NOT encouraged to use the SQLite
backend for a server.

    $ cd /usr/local/share/zabbix/schema
    $ cat sqlite.sql | sudo -u _zabbix sqlite3 /var/db/zabbix/zabbix.db
The following steps are not required for setting up a Zabbix Proxy.
    $ cd ../data
    $ cat data.sql | sudo -u _zabbix sqlite3 /var/db/zabbix/zabbix.db
    $ cat images_sqlite3.sql | sudo -u _zabbix sqlite3 /var/db/zabbix/zabbix.db
