User Tools

Site Tools


Sidebar

1.8:manual:installation

2 Installation

1 How to Get Zabbix

Check the Zabbix Home Page at http://www.zabbix.com for information about the current version and for downloading instructions.

Zabbix is distributed as a source package, however it is also included into number of OS distributions pre-compiled.

2010/02/04 09:50

2 Requirements

2.1 Hardware requirements

2.1.1 Memory Requirements

Zabbix requires both physical and disk memory. 128 MB of physical memory and 256 MB of free disk space could be a good starting point. However, the amount of required disk memory obviously depends on the number of hosts and parameters that are being monitored. If you're planning to keep a long history of monitored parameters, you should be thinking of at least a couple of gigabytes to have enough space to store the history in the database. Each Zabbix daemon process requires several connections to a database server. Amount of memory allocated for the connection depends on configuration of the database engine.

The more physical memory you have, the faster the database (and therefore Zabbix) works!

2.1.2 CPU Requirements

Zabbix and especially Zabbix database may require significant CPU resources depending on number of monitored parameters and chosen database engine.

2.1.3 Other hardware

A serial communication port and a serial GSM Modem required for using SMS notification support in Zabbix. USB-to-serial converter also will work.

2.1.4 Examples of hardware configuration

The table provides several hardware configurations:

Name Platform CPU/Memory Database Monitored hosts
Small Ubuntu LinuxPII 350MHz 256MBMySQL MyISAM20
MediumUbuntu Linux 64 bitAMD Athlon 3200+ 2GBMySQL InnoDB500
LargeUbuntu Linux 64 bitIntel Dual Core 6400 4GBRAID10 MySQL InnoDB or PostgreSQL>1000
Very largeRedHat EnterpriseIntel Xeon 2xCPU 8GBFast RAID10 MySQL InnoDB or PostgreSQL>10000

Actual configuration depends on number of active items and refresh rates very much. It is highly recommended to run the database on a separate box for large installations.

2.2 Supported Platforms

Due to security requirements and mission-critical nature of monitoring server, UNIX is the only operating system that can consistently deliver the necessary performance, fault tolerance and resilience. Zabbix operates on market leading versions.

Zabbix is tested on the following platforms:

  • AIX
  • FreeBSD
  • HP-UX
  • Linux
  • Mac OS/X
  • NetBSD
  • OpenBSD
  • SCO Open Server
  • Solaris
  • Windows 2000, 2003, XP, Vista (only Zabbix agent)

Zabbix may work on other Unix-like operating systems as well.

2.3 Software Requirements

Zabbix is built around modern Apache WEB server, leading database engines, and the PHP scripting language.

The following software is required to run Zabbix:

SoftwareVersionComments
Apache 1.3.12 or later
PHP 5.0 or later
PHP modules:
php-gd
GD 2.0 or later PHP GD module must support PNG images.
PHP TrueType support --with-ttf
PHP bc support php-bcmath, --enable-bcmath
PHP XML support php-xml or php5-dom, if provided as a separate package by the distributor
PHP session support php-session, if provided as a separate package by the distributor
PHP socket support php-net-socket, --enable-sockets. Required for user script support.
PHP multibyte support php-mbstring, --enable-mbstring
IBM DB2
ibm_db2
Required if IBM DB2 is used as Zabbix back end database.
MySQL
php-mysql
3.22 or later Required if MySQL is used as Zabbix back end database.
Oracle
oci8
Required if Oracle is used as Zabbix back-end database.
PostgreSQL
php-pgsql
7.0.2 or later if Zabbix < 1.8.9
7.4 or later if Zabbix >= 1.8.9
Required if PostgreSQL is used as Zabbix back-end database.
Consider using PostgreSQL 8.x or later for much better performance.
It is suggested to use at least PostgreSQL 8.3, which introduced much better VACUUM performance.
SQLite
php-sqlite3
3.3.5 or later Required if SQLite is used as Zabbix back-end database.

Zabbix may work on previous versions of Apache, MySQL, Oracle, and PostgreSQL as well.

For other fonts than the default DejaVu, PHP function imagerotate might be required. If it is missing, these fonts might be rendered incorrectly in Monitoring → Overview header and other locations. This function is only available if PHP is compiled with bundled GD, which is not the case in Debian and other distributions.

2.3.1 WEB browser on client side

Support for HTML and PNG images is required. Cookies and Java Script must be enabled. Latest versions of Mozilla Firefox, Microsoft Internet Explorer, Opera and Konqueror are supported. Other browsers (Google Chrome, Apple Safari) may work with Zabbix as well.

2.4 Server requirements

RequirementDescription
OpenIPMI Required for IPMI support
libssh2 Required for SSH support. Version 1.0 or higher.
fping Required for ICMP ping items.

2.5 Choice of database engine

Zabbix Server and Proxy support five database engines:

  • IBM DB2
  • MySQL
  • Oracle
  • PostgreSQL
  • SQLite

IBM DB2 is supported starting from Zabbix 1.8.4.

2.6 Database size

Zabbix configuration data require a fixed amount of disk space and do not grow much.

Zabbix database size mainly depends on these variables, which define the amount of stored historical data:

  • Number of processed values per second

This is the average number of new values Zabbix server receives every second. For example, if we have 3000 items for monitoring with refresh rate of 60 seconds, the number of values per second is calculated as 3000/60 = 50.

It means that 50 new values are added to Zabbix database every second.

  • Housekeeper settings for history

Zabbix keeps values for a fixed period of time, normally several weeks or months. Each new value requires a certain amount of disk space for data and index.

So, if we would like to keep 30 days of history and we receive 50 values per second, total number of values will be around (30*24*3600)* 50 = 129.600.000, or about 130M of values.

Depending on the database engine used, type of received values (floats, integers, strings, log files, etc), the disk space for keeping a single value may vary from 40 bytes to hundreds of bytes. Normally it is around 50 bytes per value. In our case, it means that 130M of values will require 130M * 50 bytes = 6.5GB of disk space.

  • Housekeeper setting for trends

Zabbix keeps a 1-hour max/min/avg/count set of values for each item in the table trends. The data is used for trending and long period graphs. The one hour period can not be customised.

Zabbix database, depending on database type, requires about 128 bytes per each total. Suppose we would like to keep trend data for 5 years. Values for 3000 items will require (3000/3600)*(24*3600*365)* 128 = 3.4GB per year, or 16.8GB for 5 years. The first value 3600 in the formula represents trend averaging period, one hour.

  • Housekeeper settings for events

Each Zabbix event requires approximately 130 bytes of disk space. It is hard to estimate the number of events generated by Zabbix daily. In the worst case scenario, we may assume that Zabbix generates one event per second.

It means that if we want to keep 3 years of events, this would require 3*365*24*3600* 130 = 12.3GB

The table contains formulas that can be used to calculate the disk space required for Zabbix system:

ParameterFormula for required disk space (in bytes)
Zabbix configuration Fixed size. Normally 10MB or less.
History days*(items/refresh rate)*24*3600*bytes
items : number of items
days : number of days to keep history
refresh rate : average refresh rate of items
bytes : number of bytes required to keep single value, depends on database engine, normally 50 bytes.
Trends days*(items/3600)*24*3600*bytes
items : number of items
days : number of days to keep history
bytes : number of bytes required to keep single trend, depends on database engine, normally 128 bytes.
Events days*events*24*3600*bytes
events : number of event per second. One (1) event per second in worst case scenario.
days : number of days to keep history
bytes : number of bytes required to keep single trend, depends on database engine, normally 130 bytes.

So, the total required disk space can be calculated as:
Configuration + History + Trends + Events
The disk space will NOT be used immediately after Zabbix installation. Database size will grow then it will stop growing at some point, which depends on hosekeeper settings.

Disk space requirements for nodes in distributed setup are calculated in a similar way, but this also depends on a total number of child nodes linked to a node.

2.7 Time synchronisation

It is very important to have precise system date on server with Zabbix running. ntpd is the most popular daemon that synchronizes the host's time with the time of other machines.

2009/08/11 10:07 · richlv

3 Components

3.1 Zabbix Components

Zabbix consists of several major software components, the responsibilities of which are outlined below.

3.2 Zabbix Server

This is the centre of the Zabbix software. The Server can remotely check networked services (such as web servers and mail servers) using simple service checks, but it is also the central component to which the Agents will report availability and integrity information and statistics. The Server is the central repository in which all configuration, statistical and operational data are stored, and it is the entity in the Zabbix software that will actively alert administrators when problems arise in any of the monitored systems.

Zabbix can also perform agent-less monitoring and also monitor network devices using SNMP agents.

3.3 Zabbix Proxy

The Proxy is an optional part of Zabbix deployment. The Proxy collects performance and availability data on behalf of Zabbix Server. All collected data is buffered locally and transferred to Zabbix Server the Proxy belongs to.

Zabbix Proxy is an ideal solution for a centralized monitoring of remote locations, branches, networks having no local administrators.

Zabbix Proxies can also be used to distribute load of a single Zabbix Server. In this case, only Proxies collect data thus making processing on the Server less CPU and disk I/O hungry.

3.4 Zabbix Agent

In order to actively monitor local resources and applications (such as harddrives, memory, processor statistics etc.) on networked systems, those systems must run the Zabbix Agent. The Agent will gather operational information from the system on which it is running, and report these data to the Zabbix for further processing. In case of failures (such as a harddisk running full, or a crashed service process), the Zabbix Server can actively alert the administrators of the particular machine that reported the failure.

The Zabbix Agents are extremely efficient because of use of native system calls for gathering statistical information.

3.5 The WEB Interface

In order to allow easy access to the monitoring data and the configuration of Zabbix from anywhere and from any platform, the Web-based Interface is provided. The Interface is a part of the Zabbix Server, and is usually (but not necessarily) run on the same physical machine as the one running the Zabbix Server.

Zabbix front-end must run on the same physical machine if SQLite is used.

2009/08/11 10:59 · richlv

4 Installation from Source

4.1 Software requirements

Building of Zabbix server or agents from sources requires additional software.

The following software is required to compile Zabbix (required versions):

One of the following database engines:

  • IBM DB2 Headers and Libraries - CLI headers and libraries are required.
  • MySQL Headers and Libraries.
  • Oracle Headers and Libraries - OCI headers and libraries are required.
  • PostgreSQL Headers and Libraries.
  • SQLite Headers and Libraries.

Usually provided as part of mysql-dev, postgresql-dev, sqlite3-dev packages.

NET-SNMP (or UCD-SNMP) library and header files. Required for SNMP support. Optional.

Iksemel library and header files. Required to enable Jabber messaging. Optional.

Libcurl library and header files. Required for WEB monitoring module. Optional.

C Compiler. GNU C compiler is the best choice for open platforms. Other (HP, IBM) C compilers may be used as well.

GNU Make. GNU Make is required to process Zabbix Makefiles.

4.2 Structure of Zabbix distribution

  • src

The directory contains sources for all Zabbix processes except frontends.

  • src/zabbix_server

The directory contains Makefile and sources for zabbix_server.

  • src/zabbix_agent

The directory contains Makefile and sources for zabbix_agent and zabbix_agentd.

  • src/zabbix_get

The directory contains Makefile and sources for zabbix_get.

  • src/zabbix_sender

The directory contains Makefile and sources for zabbix_sender.

  • include

The directory contains Zabbix include files.

  • misc
    • misc/init.d

The directory contains start-up scripts for different platforms.

  • frontends
    • frontends/php

The directory contains files of PHP frontend.

  • create

The directory contains SQL script for initial database creation.

  • create/schema

Database creation schemas.

  • create/data

Data for initial database creation.

  • upgrades

The directory contains upgrade procedures for different versions of Zabbix.

4.3 Zabbix Server

Server side

Step 1

Create the Zabbix superuser account

This is the user the server will run as. For production use you should create a dedicated unprivileged account ('zabbix' is commonly used). Running Zabbix as 'root','bin', or any other account with special rights is a security risk. Do not do it!

Zabbix server process (zabbix_server) is protected from being run under root account.

If Zabbix server and agent are run on the same machine it is recommended to use a different user for running the server than for running the agent. Otherwise, if both are run as the same user, the agent can access the server configuration file and any Admin level user in Zabbix can quite easily retrieve, for example, the database password.

Step 2

Extract Zabbix sources

shell> tar -zxf zabbix-1.8.tar.gz
Step 3

Create the Zabbix database

Zabbix comes with SQL scripts used to create the required database schema and also to insert a default configuration. There are separate scripts for IBM DB2, MySQL, Oracle, PostgreSQL and SQLite.

For IBM DB2:

shell> db2 "create database zabbix using codeset utf-8 territory us pagesize 32768"
shell> cd create/schema
shell> db2batch -d zabbix -f ibm_db2.sql
shell> cd ../data
shell> db2batch -d zabbix -f data.sql
shell> db2batch -d zabbix -f images_ibm_db2.sql

Zabbix frontend uses OFFSET and LIMIT clauses in SQL queries. For this to work, IBM DB2 server must have DB2_COMPATIBILITY_VECTOR variable be set to 3. Run the following command before starting the database server:

shell> db2set DB2_COMPATIBILITY_VECTOR=3

For MySQL:

shell> mysql -u<username> -p<password>
mysql> create database zabbix character set utf8;
mysql> quit;
shell> cd create/schema
shell> cat mysql.sql | mysql -u<username> -p<password> zabbix
shell> cd ../data
shell> cat data.sql | mysql -u<username> -p<password> zabbix
shell> cat images_mysql.sql | mysql -u<username> -p<password> zabbix

For Oracle (we assume that user zabbix with password password exists and has permissions to create database objects in service ORCL):

shell> cd create

Copy directory data/images somewhere on oracle server, e. g. /home/oracle:

shell> scp -r data/images user@host:/home/oracle

Edit file data/images_oracle.sql and set images_dir variable to ”/home/oracle/images”:

CREATE OR REPLACE DIRECTORY image_dir AS '/home/oracle/images'

Proceed with importing data:

shell> sqlplus zabbix/password@host/ORCL
sqlplus> set def off
sqlplus> @schema/oracle.sql
sqlplus> @data/data.sql
sqlplus> @data/images_oracle.sql
sqlplus> exit

Zabbix requires UTF8 database character set. If database is not UTF8 it can be converted by running: ALTER DATABASE NATIONAL CHARACTER SET UTF8;

For PostgreSQL:

shell> psql -U <username>
psql> create database zabbix; 
psql> \q 
shell> cd create/schema 
shell> cat postgresql.sql | psql -U <username> zabbix 
shell> cd ../data 
shell> cat data.sql | psql -U <username> zabbix
shell> cat images_pgsql.sql | psql -U <username> zabbix

For SQLite:

shell> cd create/schema
shell> cat sqlite.sql | sqlite3 /var/lib/sqlite/zabbix.db 
shell> cd ../data 
shell> cat data.sql | sqlite3 /var/lib/sqlite/zabbix.db
shell> cat images_sqlite3.sql | sqlite3 /var/lib/sqlite/zabbix.db
Step 4

Configure and compile the source code for your system

The sources must be compiled for both the server (monitoring machine) as well as the clients (monitored machines). To configure the source for the server, you must specify which database will be used.

shell> ./configure --enable-server --with-ibm-db2 --with-net-snmp --with-jabber --with-libcurl # for IBM DB2 + Jabber + WEB monitoring

or

shell> ./configure --enable-server --with-mysql --with-net-snmp --with-jabber --with-libcurl # for MySQL + Jabber + WEB monitoring

or

shell> ./configure --enable-server --with-oracle --with-net-snmp --with-jabber --with-libcurl # for Oracle + Jabber + WEB monitoring

or

shell> ./configure --enable-server --with-pgsql --with-net-snmp --with-jabber --with-libcurl # for PostgreSQL + Jabber + WEB monitoring

or

shell> ./configure --enable-server --with-sqlite3 --with-net-snmp --with-jabber --with-libcurl # for SQLite3 + Jabber + WEB monitoring

Use flag --with-ibm-db2 to specify location of the CLI API.
Use flag --with-oracle to specify location of the OCI API.

Flag --with-ucd-snmp can be used instead of --with-net-snmp. If no SNMP support is required, both --with-net-snmp and --with-ucd-snmp may be skipped.

However, if you want to compile client binaries along with server binaries, run:

shell> ./configure --enable-server --enable-agent --with-mysql --with-net-snmp --with-jabber --with-libcurl

Use flag --enable-static to statically link libraries. If you plan to distribute compiled binaries among different servers, you must use this flag to make these binaries work without required libraries. Note that --enable-static does not work under Solaris.

Step 5

Make and install everything

shell> make install

By default, make install will install all the files in /usr/local/sbin, /usr/local/lib etc. Make sure that you have enough permissions.

You can specify an installation prefix other than /usr/local using --prefix, for example --prefix=/home/zabbix. In this case daemon binaries will be installed under <prefix>/sbin, while utilities under <prefix>/bin. Man pages will be installed under <prefix>/share.

Step 6

Configure /etc/services

The step is optional. However, it is recommended. On the client (monitored) machines, add the following lines to /etc/services:

zabbix-agent    10050/tcp  Zabbix Agent
zabbix-agent    10050/udp  Zabbix Agent
zabbix-trapper  10051/tcp  Zabbix Trapper
zabbix-trapper  10051/udp  Zabbix Trapper 

Note that the port numbers are official Zabbix ports registered in IANA.

Step 7

Configure /etc/inetd.conf

If you plan to use zabbix_agent instead of the recommended zabbix_agentd, the following line must be added:

zabbix_agent stream tcp nowait.3600 zabbix /opt/zabbix/bin/zabbix_agent

Restart inetd

shell> killall -HUP inetd

Modify default settings in configuration files

Step 8

Create a location to hold configuration files:

mkdir /etc/zabbix
Step 9

Configure /etc/zabbix/zabbix_agentd.conf

You need to configure this file for every host with zabbix_agentd installed. The file should contain the IP address of the Zabbix server. Connections from other hosts will be denied. You may take misc/conf/zabbix_agentd.conf as example.

Step 10

Configure /etc/zabbix/zabbix_server.conf

For small installations (up to ten monitored hosts), default parameters are sufficient. However, you should change default parameters to maximize performance of Zabbix. See section [Performance tuning] for more details. You may take misc/conf/zabbix_server.conf as example.

Step 11

Run server processes

Run zabbix_server on server side.

shell> cd sbin
shell> ./zabbix_server
Step 12

Run agents

Run zabbix_agentd where necessary.

shell> cd sbin
shell> ./zabbix_agentd

4.4 Zabbix Proxy

Zabbix Proxy is a special process. It is not required to run Zabbix.

Step 1

Create the Zabbix superuser account

This is the user the Proxy will run as. For production use you should create a dedicated unprivileged account ('zabbix' is commonly used). Running Zabbix Proxy as 'root', 'bin', or any other account with special rights is a security risk. Do not do it!

Zabbix Proxy process (zabbix_proxy) is protected from being run under root account.

Step 2

Extract Zabbix sources

shell> tar -zxf zabbix-1.8.tar.gz
Step 3

Create the Zabbix database. Optional.

Zabbix Proxy process will create database automatically on the first run if it does not exist. It will use existing database otherwise. Database auto-creation is supported for SQLite only.

Zabbix comes with SQL scripts used to create the required database schema. There are separate scripts for IBM DB2, MySQL, Oracle, PostgreSQL and SQLite.

For IBM DB2:

shell> db2 "create database zabbix using codeset utf-8 territory us pagesize 32768"
shell> cd create/schema
shell> db2batch -d zabbix -f ibm_db2.sql

For MySQL:

shell> mysql -u<username> -p<password>
mysql> create database zabbix character set utf8; 
mysql> quit; 
shell> cd create/schema
shell> cat mysql.sql | mysql -u<username> -p<password> zabbix

For Oracle (we assume that user 'zabbix' with password 'password' exists and has permissions to create database objects):

shell> cd create/schema 
shell> cat oracle.sql | sqlplus zabbix/password >out.log

Check file out.log for any error messages. Zabbix requires UTF8 database character set. If database is not UTF8 it can be converted by running: ALTER DATABASE NATIONAL CHARACTER SET UTF8;

For PostgreSQL:

shell> psql -U <username>
psql> create database zabbix; 
psql> \q 
shell> cd create/schema 
shell> cat postgresql.sql | psql -U <username> zabbix 

For SQLite:

shell> cd create/schema
shell> cat sqlite.sql | sqlite3 /var/lib/sqlite/zabbix.db 

The database will be automatically created if it does not exist.

Step 4

Configure and compile the source code for your system

The sources must be compiled to enable compilation of Zabbix Proxy process. To configure the source for the Proxy, you must specify which database will be used.

shell> ./configure --enable-proxy --with-ibm-db2 --with-net-snmp # for IBM DB2 + SNMP monitoring

or

shell> ./configure --enable-proxy --with-mysql --with-net-snmp # for MySQL + SNMP monitoring

or

shell> ./configure --enable-proxy --with-oracle --with-net-snmp # for Oracle + SNMP monitoring

or

shell> ./configure --enable-proxy --with-pgsql --with-net-snmp # for PostgreSQL + SNMP monitoring

or

shell> ./configure --enable-proxy --with-sqlite3 --with-net-snmp # for SQLite3 + SNMP monitoring

Use flag --with-ibm-db2 to specify location of the CLI API.
Use flag --with-oracle to specify location of the OCI API.

Use flag --enable-static to statically link libraries. If you plan to distribute compiled binaries among different hosts, you must use this flag to make these binaries work without required libraries. --enable-static does not work under Solaris. Flag --with-ucd-snmp can be used instead of --with-net-snmp. If no SNMP support required, both --with-net-snmp and --with-ucd-snmp may be skipped.

However, if you want to compile client binaries along with proxy binaries, run:

shell> ./configure --enable-proxy --enable-agent --with-mysql --with-net-snmp

Parameter --enable-static may be used to force static linkage.

Step 5

Make and install everything

shell> make install

By default, make install will install all the files in /usr/local/sbin, /usr/local/lib etc. You can specify an installation prefix other than /usr/local using --prefix

Step 6

Configure /etc/services

The step is optional. However, it is recommended. On the client (monitored) machines, add the following lines to /etc/services:

zabbix_agent 10050/tcp
zabbix_trap 10051/tcp
Step 7

Configure /etc/inetd.conf

If you plan to use zabbix_agent instead of the recommended zabbix_agentd, the following line must be added:

zabbix_agent stream tcp nowait.3600 zabbix /opt/zabbix/bin/zabbix_agent

Restart inetd

shell> killall -HUP inetd
Step 8

Create a location to hold configuration files:

mkdir /etc/zabbix

Configure /etc/zabbix/zabbix_proxy.conf

For small installations (up to ten monitored hosts), default parameters are sufficient. However, you should change default parameters to maximize performance of Zabbix Proxy. Make sure you have correct Hostname and Server parameters set. You may take misc/conf/zabbix_proxy.conf as example.

Step 9

Run Proxy processes

Run zabbix_proxy:

shell> cd sbin
shell> ./zabbix_proxy

4.5 Zabbix Agent

Client side

Step 1

Create the Zabbix account

This is the user the agent will run as. For production use you should create a dedicated unprivileged account (“zabbix” is commonly used). Zabbix agents have protection against running under root account.

Step 2

Extract Zabbix sources

shell> tar -zxf zabbix-1.8.tar.gz
Step 3

Configure and compile the source code for your system

The sources must be compiled for the client only.

To configure the source for the client:

shell> ./configure --enable-agent

Use flag --enable-static to statically link libraries. If you plan to distribute compiled binaries among different hosts, you must use this flag to make these binaries work without required libraries.

Step 4

Build agent

shell> make

Copy created binaries from bin/ to /opt/zabbix/bin or any other directory. Other common directories are /usr/local/bin or /usr/local/zabbix/bin.

Step 5

Configure /etc/services

The step is not real requirement. However, it is recommended.

On the client (monitored) machines, add the following lines to /etc/services:

zabbix_agent 10050/tcp 
zabbix_trap 10051/tcp 
Step 6

Configure /etc/inetd.conf

If you plan to use zabbix_agent instead of the recommended zabbix_agentd, the following line must be added:

zabbix_agent stream tcp nowait.3600 zabbix /opt/zabbix/bin/zabbix_agent

Restart inetd

shell> killall -HUP inetd
Step 7

Create a location to hold configuration files:

mkdir /etc/zabbix
Step 8

Configure /etc/zabbix/zabbix_agentd.conf

You need to configure this file for every host with zabbix_agentd installed. The file should contain IP address of Zabbix server. Connections from other hosts will be denied. You may take misc/conf/zabbix_agentd.conf as example.

Step 9

Run zabbix_agentd on all monitored machines

shell> /opt/zabbix/bin/zabbix_agentd

You should not run zabbix_agentd if you have chosen to use zabbix_agent!

Make sure that your system allows allocation of 2MB of shared memory, otherwise the agent may not start and you will see “Can't allocate shared memory for collector.” in agent's log file. This may happen on Solaris 8.

4.6 Zabbix WEB Interface

Step 0

Zabbix frontend is written in PHP, so to run it a PHP supported webserver is needed. Installation is done by simply copying the PHP files into the webserver HTML documents directory. It is suggested to use a subdirectory instead of HTML root.

Common locations of the HTML documents directory for Apache web server include:

  • /usr/local/apache2/htdocs (default directory when installing Apache from source)
  • /srv/www/htdocs (OpenSUSE, SLES)
  • /var/www/html (Fedora, RHEL, CentOS)
  • /var/www (Debian, Ubuntu)

To create a subdirectory and copy Zabbix frontend files into it, execute the following commands, replacing <htdocs> with the correct path in your case:

mkdir <htdocs>/zabbix
cd frontends/php
cp -a . <htdocs>/zabbix

When upgrading you simply replace the content of <htdocs>/zabbix with the new files copied over from frontends/php, in this step.

Step 1

Point your browser to Zabbix URL.

Step 2

Read and accept GPL v2.

Step 3

Make sure that all software pre-requisites are met.

Pre-requisiteMinimum valueDescription
PHP version 5.0
PHP Memory limit 8MB In php.ini:
memory_limit = 128M
PHP post max size 8MB In php.ini:
post_max_size = 16M
PHP max execution time 300 seconds In php.ini:
max_execution_time = 300
PHP max input time 300 seconds In php.ini:
max_input_time = 300
PHP database support One of: IBM DB2, MySQL, Oracle, PostgreSQL, SQLite One of the following modules must be installed:
ibm_db2, php-mysql, oci8, php-pgsql, php-sqlite3
PHP BC math Any Compiled in or separate module php-bcmath.
PHP multibyte support AnyCompiled in or separate module php-mbstring.
GD Version 2.0 or higher Module php-gd.
Image formats At least PNG Module php-gd.
Step 4

Configure database settings. Zabbix database must already be created.

Step 5

Enter Zabbix Server details.

Step 6

See summary of settings.

Step 7

Download configuration file and place it under conf/.

Step 8

Finishing installation.

Step 9

For distributed monitoring only!

If used in a distributed environment you have to run only once:

shell> ./zabbix_server -n <nodeid>

where Node ID is an unique Node identificator. For example:

shell> ./zabbix_server -n 1

This will convert database data for use with Node ID '1' and also adds a local node.

Step 10

Zabbix frontend is ready! Default user name is Admin, password zabbix.

2009/08/11 11:00 · richlv

5 Upgrading

5.1 Change level releases

For change level releases only upgrading of server binary and frontend is required. If mentioned in release notes, optional indexes may be added to the database to improve performance. Upgrading can be easily performed over several versions, for example, upgrading from 1.8.1 to 1.8.3 can be performed in single step.

See installation and upgrade notes for more information.

2009/08/11 12:13 · richlv

6 Using Zabbix appliance

As an alternative to setting up manually or reusing existing server for Zabbix, users may download Zabbix appliance.

To get started, boot the appliance and point your browser at the IP it has received over DHCP.

Booting Zabbix appliance

Zabbix appliance versions are based upon the following OpenSUSE versions:

Zabbix appliance versionOpenSUSE version
1.8.211.2
1.8.3
1.8.411.3
1.8.5
1.8.6
1.8.711.4
1.8.8
1.8.9
1.8.10
1.8.11
1.8.12

It is available in the following formats:

  • vmdk (VMWare/Virtualbox);
  • OVF (Open Virtualisation Format);
  • CD iso;
  • HDD/flash image;
  • Xen guest.

It has Zabbix server configured and running on MySQL, as well as frontend available.

The appliance has been built using SUSE Studio.

6.1 Changes to SUSE configuration

There are some changed applied to the base OpenSUSE configuration.

6.1.1 MySQL configuration changes
  • Binary log is disabled;
  • InnoDB is configured to store data for each table in a separate file.
6.1.2 Using a static IP address

By default the appliance uses DHCP to obtain IP address. To specify a static IP address:

  • Log in as root user;
  • Open file /etc/sysconfig/network/ifcfg-eth0 in your favourite editor;
  • Set BOOTPROTO variable to static;
  • Set IPADDR, NETMASK and any other parameters as required for your network;
  • Create file /etc/sysconfig/network/routes. For the default route, use default 192.168.1.1 - - (replacing with your gateway address).
  • Run the command rcnetwork restart.

To configure DNS, add nameserver entries in /etc/resolv.conf, specifying each nameserver on its own line: nameserver 192.168.1.2.

Alternatively, just use yast configuration utility to update network settings.

6.1.3 Changing time zone

By default the appliance uses UTC for the system clock. To change the time zone, copy appropriate file from /usr/share/zoneinfo to /etc/localtime, for example:

cp /usr/share/zoneinfo/Europe/Riga /etc/localtime
6.1.4 Other changes
  • Network is configured to use DHCP to obtain IP address;
  • Utility fping is set to have permissions 4710 and is owned by group zabbix - suid and only alowed to be used by zabbix group;
  • ntpd configured to synchronise to the public pool servers;
  • Various basic utilities have been added that could make working with Zabbix and monitoring in general easier.

6.2 Zabbix configuration

Appliance Zabbix setup has the following passwords and other configuration changes:

6.2.1 Passwords

System:

  • root:zabbix
  • zabbix:zabbix

Database:

  • root:zabbix
  • zabbix:zabbix

Zabbix frontend:

  • admin:zabbix

If you change frontend password, do not forget to update password setting web monitoring (Configuration → WEB).

To change the database user password it has to be changed in the following locations:

  • MySQL;
  • zabbix_server.conf;
  • zabbix.conf.php.
6.2.2 File locations
  • Configuration files are placed in /etc/zabbix.
  • Zabbix logfiles are placed in /var/log/zabbix.
  • Zabbix frontend is placed in /usr/share/zabbix.
  • Home directory for user zabbix is /var/lib/zabbix.
6.2.3 Changes to Zabbix configuration
  • Some items and triggers in the default Linux template are disabled (mostly those who did not correspond to appliance setup);
  • Server name for Zabbix frontend set to “Zabbix 1.8 Appliance”;
  • Frontend timezone is set to Europe/Riga, Zabbix home (this can be modified in /etc/php5/apache2/php.ini);
  • Disabled triggers and web scenarios are shown by default to reduce confusion.
6.2.4 Preserving configuration

If you are running live CD version of the appliance or for some other reason can't have persistent storage, you can create a backup of whole database, including all configuration and gathered data.

To create the backup, run:

mysqldump zabbix | bzip2 -9 > dbdump.bz2

Now you can transfer file dbdump.bz2 to another machine.

To restore from the backup, transfer it to the appliance and execute:

bzcat dbdump.bz2 | mysql zabbix

Make sure that Zabbix server is stopped while performing the restore.

6.3 Frontend access

Access to frontend by default is allowed from:

  • 127.0.0.1
  • 192.168.0.0/16
  • 10.0.0.0/8
  • ::1

Root (/) is redirected to /zabbix on the webserver, thus frontend can be accessed both as http://<host> and http://<host>/zabbix.

This can be customised in /etc/apache2/conf.d/zabbix.conf. You have to restart webserver after modifying this file. To do so, log in using SSH as root user and execute:

service apache2 restart

6.4 Firewall

By default, only two ports are open - 22 (SSH) and 80 (HTTP). To open additional ports - for example, Zabbix server and agent ports - modify iptables rules with SuSEfirewall2 utility:

SuSEfirewall2 open EXT TCP zabbix-trapper zabbix-agent

Then reload the firewall rules:

SuSEfirewall2 stop
SuSEfirewall2 start

6.5 Monitoring capabilities

Zabbix server is compiled with support for the following:

  • SNMP;
  • IPMI;
  • Web monitoring;
  • SSH2;
  • IPv6.

In the provided configuration Zabbix server itself is monitored with the help of locally installed agent for some base parameters, additionally Zabbix frontend is monitored as well using web monitoring.

Zabbix appliance monitoring own web frontend

Note that web frontend monitoring logs in - this can add lots of entries to the audit log.

6.6 Naming, init and other scripts

Zabbix daemons have their names changed from standard with underscore to dash to conform to SUSE guidelines. They are called:

  • zabbix-agentd
  • zabbix-server

In a similar fashion, configuration files are:

  • /etc/zabbix/zabbix-server.conf
  • /etc/zabbix/zabbix-agentd.conf

Appropriate init scripts are provided. To control Zabbix server, use any of these:

service zabbix-server status
rczabbix-server status
/etc/init.d/zabbix-server status

Replace server with agentd for Zabbix agent daemon.

6.6.1 Scheduled scripts

There is a scheduled script, run from the crontab every 10 minutes that restarts Zabbix server if it is not running, /var/lib/zabbix/bin. It logs timestamped problems and starting attempts at /var/log/zabbix/server_problems.log. This script is available since Zabbix Appliance version 1.8.3.

Make sure to disable this crontab entry if stopping of Zabbix server is desired.

6.6.2 Increasing available diskspace

Create a backup of all data before attempting any of the steps.

Available diskspace on the appliance might not be sufficient. In that case it is possible to expand the disk. To do so, first expand the block device in your virtualisation environment, then follow these steps.

Start fdisk to change the partition size. As root, execute:

fdisk /dev/sda

This will start fdisk on disk sda. Next, switch to sectors by issuing:

u

Don't disable DOS compatibility mode by entering c. Proceeding with it disabled will damage the partition.

Then delete the existing partition and create new one with desired size. In majority of cases you will accept the available maximum, which will expand the filesystem to whatever size you made available for the virtual disk. To do so, enter the following sequence in fdisk prompt:

d
n
p
1
(accept default 63)
(accept default max)

If you wish to leave some space for additional partitions (swap etc), you can enter another value for last sector. When done, save the changes by issuing:

w

Reboot the virtual machine (as the partition we modified is in use currently). After reboot, filesystem resizing can take place.

resize2fs /dev/sda1

That's it, filesystem should be grown to the partition size now.

6.7 Format-specific notes

6.7.1 Xen

To use images in Xen server, run:

xm create -c file-with-suffix.xenconfig

See the following pages for more information on using Xen images:

Converting image for XenServer

To use Xen images with Citrix Xenserver you have to convert the disk image. To do so:

  • Create a virtual disk which is at least as large as the image
  • Find out the UUID for this disk
xe vdi-list params=all
  • If there are lots of disks, they can be filtered by name parameter name-label, as assigned when creating the virtual disk
  • Import the image
xe vdi-import filename="image.raw" uuid="<UUID>"

Instructions from Brian Radford blog.

6.7.2 VMWare

The images in vmdk format are usable directly in VMWare Player, Server and Workstation products. For use in ESX, ESXi and vSphere they must be converted using VMWare converter.

6.7.3 HDD/flash image (raw)

See http://en.opensuse.org/openSUSE:SUSE_Studio_Disc_Image_Howtos for more information on disk images.

6.8 Known issues

6.8.1 For appliance 1.8.8

Zabbix appliance 1.8.8 reports itself as being based on 1.8.7 in the boot messages. This is incorrect, actual appliance contains Zabbix 1.8.8.

2010/04/12 13:31 · richlv