This is an old revision of the document!


Installing Zabbix on different systems

I am installing Zabbix server and front end using PostgreSQL.

OpenBSD 6.6

For this install, I have setup an OpenBSD vmm instace with a fresh install of OpenBSD 6.6 (amd64). I will be installing the latest (v4.4.0) release of Zabbix server and frontend. For all additional packages I will be using what comes packaged with the OpenBSD 6.6 release. Unless I find a reason for installing something different.

Prep OpenBSD System

Increase some limits

By default, a few of the system semephore and shared memory limits are too low.

doas vi /etc/sysctl.conf

kern.pool_debug=0
ddb.panic=0
kern.maxproc=16384
kern.maxthread=16384
kern.maxfiles=262144
kern.shminfo.shmall=999999999
kern.shminfo.shmmax=1999999999
kern.seminfo.semmni=256
kern.seminfo.semmns=2048
kern.somaxconn=1024

Setup the package management

Edit your .profile and add the following lines.

PKG_PATH="ftp://mirrors.syringanetworks.net/pub/OpenBSD/6.6/packages/amd64/"
export PKG_PATH

Install packages

Install utilities needed to configure and install Zabbix

doas pkg_add wget net-snmp curl libssh2 pcre

Install PostgreSQL

It would appear that when installing the PostgreSQL server, pkg_add did not create the home directory for the _postgresql user. Installing postgresql-server will set the correct owner/group of the home directory.

doas mkdir -m u=rwx,g=rwx,o= -p /var/postgresql

Install PostgreSQL and populate DB

doas pkg_add postgresql-server postgresql-client

Installize PostgreSQL server

doas su _postgresql
cd
initdb -D /var/postgresql/data/ -U postgres --auth=md5 --pwprompt --encoding=UTF-8 --locale=en_US.UTF-8

You will see something like the following:

The files belonging to this database system will be owned by user "_postgresql".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.UTF-8".
The default text search configuration will be set to "english".

Data page checksums are disabled.

Enter new superuser password: 
Enter it again: 

creating directory /var/postgresql/data ... ok
creating subdirectories ... ok
selecting default max_connections ... 30
selecting default shared_buffers ... 128MB
selecting default timezone ... America/Los_Angeles
selecting dynamic shared memory implementation ... posix
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok

Success. You can now start the database server using:

    pg_ctl -D /var/postgresql/data/ -l logfile start

openbsd$ exit

Enable and start the PostgreSQL server

openbsd$ doas rcctl enable postgresql

Zabbix Server from packages

Install Zabbix server and agent from the package tree

doas pkg_add zabbix_server zabbix_agent

Enable and start daemons

doas rcctl enable zabbix_server
doas rcctl start zabbix_server
doas rcctl enable zabbix_agent
doas rcctl start zabbix_agent

Tail log file to make sure zabbix is running and working as expected

tail -f /tmp/zabbix_server.log

Zabbix Server from source

Download the latest release:

wget -O zabbix-4.4.0.tar.gz "https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/4.4.0/zabbix-4.4.0.tar.gz/download"

Extract that thing

tar zxf zabbix-4.4.0.tar.gz

When installing from source, you are going to need to manually create the user & group for zabbix to use.

doas groupadd zabbix
doas mkdir -m u=rwx,g=rwx,o= -p /usr/lib/zabbix
doas useradd -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix
doas chown zabbix:zabbix /usr/lib/zabbix

Populate the Zabbix DB within PostgreSQL

Create Zabbix PostgreSQL user

doas -u _postgresql createuser -U postgres --pwprompt zabbix
Enter password for new role: 
Enter it again: 
Password: 

Setup the database for Zabbix with the just create Zabbix user

doas -u _postgresql createdb -U postgres -O zabbix -E Unicode -T template0 zabbix

Import the initial schema and data

cd zabbix-4.4.0/database/postgresql
cat schema.sql | doas -u zabbix psql zabbix
# stop here if you are creating database for Zabbix proxy
cat images.sql | doas -u zabbix psql zabbix
cat data.sql | doas -u zabbix psql zabbix

Configure Zabbix source

cd zabbix-4.4.0/
./configure --enable-server --enable-agent --with-postgresql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-ssh2 --with-openipmi --with-zlib --with-openssl

You will see a lot of output as it processes this command. Sit back and have a drink of your favorite beverage.

Install Zabbix

doas make install

Zabbix frontend system prep

Install Apache and PHP

doas pkg_add php-7.3.10 php-pgsql-7.3.10 php-gd-7.3.10 php-ldap-7.3.10

Enable the PgSQL entension for PHP

doas ln -sf /etc/php-7.3.sample/pgsql.ini /etc/php-7.3/
doas ln -sf /etc/php-7.3.sample/gd.ini /etc/php-7.3/
doas ln -sf /etc/php-7.3.sample/ldap.ini /etc/php-7.3/

Change various php-*.ini configuration options

doas vi /etc/php-7.3.ini

post_max_size = 16M
max_execution_time = 300
max_input_time = 300

Configure /etc/httpd.conf

Modify your /etc/httpd.conf file to resemble something like this:

doas vi /etc/httpd.conf

types {
	include "/usr/share/misc/mime.types"
}

server "default" {
	listen on * port 80

	root "/htdocs"
	directory index index.php

	location "*.php*" {
		fastcgi socket "/run/php-fpm.sock"
	}
}

Enable and start the bundled httpd daemon

doas rcctl enable httpd
doas rcctl start httpd

Zabbix frontend from packages

Install package(s)

doas pkg_add zabbix_web

Update the zabbix.conf.php with the following

$DB['TYPE']                     = 'POSTGRESQL';
$DB['SERVER']                   = '127.0.0.1';
$DB['PORT']                     = '5432';
$DB['DATABASE']                 = 'zabbix';
$DB['USER']                     = 'zabbix';
$DB['PASSWORD']                 = '<YOUR_PASSWORD>';
// Schema name. Used for IBM DB2 and PostgreSQL.
$DB['SCHEMA']                   = '';

$ZBX_SERVER                     = '127.0.0.1';
$ZBX_SERVER_PORT                = '10051';
$ZBX_SERVER_NAME                = '';

To complete the setup, browse to http:<SERVER_IP>/ to view the control panel. ====Zabbix frontend from source==== We will use the bundled httpd OpenBSD web server with PHP enable with PgSQL support. Copy Zabbix front-end web files to the correct location for httpd to serve them up. doas cp -rp /home/jlucas/zabbix-4.4.0/frontends/php/* /var/www/htdocs/ =====Debian 9===== Using the packages available in the OEM package tree, you will be installing Zabbix 3.0. If you want the latest Zabbix version go here and follow the instructions. Install Packages apt install zabbix-server-pgsql zabbix-frontend-php php-pgsql zabbix-agent Create DB user and DB sudo -u postgres createuser –pwprompt zabbix sudo -u postgres createdb -O zabbix zabbix Create DB schema, insert initial data. The order is important! zcat /usr/share/zabbix-server-pgsql/schema.sql.gz | sudo -u zabbix psql zabbix zcat /usr/share/zabbix-server-pgsql/images.sql.gz | sudo -u zabbix psql zabbix zcat /usr/share/zabbix-server-pgsql/data.sql.gz | sudo -u zabbix psql zabbix Edit file /etc/zabbix/zabbix_server.conf and set DB password DBPassword=password Enable the Zabbix Apache configuration sudo a2enconf zabbix-frontend-php Uncomment and set the correct Time zone value for php_value date.timezone within the above Apache configuration file. See here for a complete list of allowed values. sudo vi /etc/apache2/conf-available/zabbix-frontend-php.conf Start Zabbix server and agent processes and make it start at system boot: systemctl restart zabbix-server zabbix-agent apache2 systemctl enable zabbix-server zabbix-agent apache2 Create and set permissions on front end configuration file sudo touch /etc/zabbix/zabbix.conf.php sudo chmod 0665 /etc/zabbix/zabbix.conf.php sudo chgrp www-data /etc/zabbix/zabbix.conf.php Connect to your newly installed Zabbix frontend: http://server_ip_or_name/zabbix Follow steps described in Zabbix documentation: Installing frontend