Zabbix

Zabbix
is a full-featured monitoring solution for larger networks. It can discover all kind of networking devices using different methods, check machine states and applications, sending pre-defined alarm messages and visualize complex data correlations.
Server setup
Installation
Server Installation
Install the
zabbix-server
package. This includes the necessary scripts for use with MariaDB or PostgreSQL.
Database Installation
Install either the
mariadb
package or the
postgresql
package.
Frontend Installation
Install the
zabbix-frontend-php
package. You should choose a web server with PHP support, e.g.:
Apache HTTP Server
Lighttpd
nginx
You can also choose one of the servers found in
Category:Web server
.
Configuration
Symlink the Zabbix web application directory to your http document root, e.g.:
$ ln -s /usr/share/webapps/zabbix /srv/http/zabbix
To get Apache working out-of-the-box, you need to enable PHP integration:
see
Using php-fpm and mod_proxy_fcgi
Adjust following variables in
/etc/php/php.ini
:
extension=bcmath
extension=gd
extension=gettext
extension=ldap
extension=mysqli
extension=sockets
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
date.timezone = "UTC"
Tip
If using
php-fpm and mod_proxy_fcgi
, you may need to
restart
php-fpm.service
.
Database Initialization
MariaDB
In this example, we create on localhost a MariaDB database called
zabbix
for the user
zabbix
identified by the password
test
and then import the database templates. This connection will be later used by the Zabbix server and web application.
Note
On a production system, the password should be changed to something more secure.
If your MariaDB installation uses a
root
account with a password, use the following:
$ mariadb -u root -p -e "create database zabbix character set utf8 collate utf8_bin"
$ mariadb -u root -p -e "grant all on zabbix.* to zabbix@localhost identified by 'test'"
If your MariaDB installation uses a
root
account without a password, use the following:
# mariadb -e "create database zabbix character set utf8 collate utf8_bin"
# mariadb -e "grant all on zabbix.* to zabbix@localhost identified by 'test'"
Use the following to import the database templates:
$ mariadb -u zabbix -p -D zabbix < /usr/share/zabbix-server/mysql/schema.sql
$ mariadb -u zabbix -p -D zabbix < /usr/share/zabbix-server/mysql/images.sql
$ mariadb -u zabbix -p -D zabbix < /usr/share/zabbix-server/mysql/data.sql
PostgreSQL
For PostgreSQL, these commands will create a database
zabbix
for user
zabbix
, which are the default settings in
zabbix_server.conf
, then import the schema and initial data:
$ createuser zabbix
$ createdb zabbix -O zabbix
$ cat /usr/share/zabbix-server/postgresql/{schema,images,data}.sql | psql -U zabbix -d zabbix
Database Configuration
Now edit
/etc/zabbix/zabbix_server.conf
with the database settings:
/etc/zabbix/zabbix_server.conf
DBName=zabbix
DBUser=zabbix
DBPassword=test
LogType=system
ICMP/ping discovery
To use ICMP discovery (e.g. ping) in Zabbix,
install
the
fping
package.
Starting
If you are using MariaDB,
enable
and
start
the
zabbix-server-mysql.service
unit, or if you are using PostgreSQL, the
zabbix-server-pgsql.service
unit.
Access Zabbix via your local web server, e.g.:
http://localhost/zabbix/
, and start the installation wizard.
The default username is
Admin
and password
zabbix
.
See appendix for a link to the official documentation, which explains all further steps in using it.
Agent setup
Installation
Install
zabbix-agent
for each monitoring target, including your monitoring server where
zabbix-server
is installed.
zabbix-server
no longer includes
zabbix-agent
.
Configuration
Simply edit the
zabbix_agentd.conf
and replace the server variable with the IP of your monitoring server. Only servers from this/these IP will be allowed to access the agent.
/etc/zabbix/zabbix_agentd.conf
Server=<IP of Zabbix server>
 ServerActive=<IP of Zabbix server>
Further make sure the port
10050
on your device being monitored is not blocked and is properly forwarded.
Starting
Enable
and
start
the
zabbix-agent.service
unit.
Tips and tricks
Debugging a Zabbix agent
On the client site, you can check the state of an item like this:
$ zabbix_agentd -t hdd.smart[sda,Temperature_Celsius]
On the server/monitoring site, try this:
$ zabbix_get -s
host
-k hdd.smart[sda,Temperature_Celsius]
Monitor Arch Linux system updates
Here is an approach on how to monitor your Arch Linux clients for available system update using a custom
UserParameter
:
/etc/zabbix/zabbix_agentd.conf
Include=/etc/zabbix/zabbix_agentd.conf.d/*.conf
/etc/zabbix/zabbix_agentd.conf.d/archlinuxupdates.conf
UserParameter=archlinuxupdates,checkupdates | wc -l
You have to restart
zabbix-agentd
to apply the new configuration. The keyword for the item you later use in the web frontend is
archlinuxupdates
. It returns an integer representing the count of available updates. (the
checkupdates
utility comes from the
pacman-contrib
package)
Troubleshooting
Error "Specified key was too long; max key length is 767 bytes"
While importing the databases, you might get this error message. In order to solve this, you will have to change the code page configuration for your MariaDB database:
MariaDB#Using UTF8MB4
.
Unable to start Zabbix server due to unsupported MariaDB database version
Database version can easily exceeds the maximum alloved version. To bypass this add the following to the configuration file:
/etc/zabbix/zabbix_server.conf
AllowUnsupportedDBVersions=1
See also
Official manual
Zabbix Share
– Zabbix templates, modules & more