Zabbix - ArchWiki

# Zabbix

From ArchWiki

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

#### Zabbix-server installation

Install the zabbix-server package. This includes the necessary scripts for use with MariaDB or PostgreSQL. The rest of this guide will assume that you will be using MariaDB.

#### Zabbix-frontend installation

Install the zabbix-frontend-php package. You also have to choose a web server with PHP support, e.g.:

- Apache HTTP Server
- Lighttpd
- nginx

Or one of the other 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

Make sure to adjust following variables to these minimal values in your `/etc/php/php.ini`:

    extension=bcmath
    extension=gd
    extension=sockets
    extension=mysqli
    extension=gettext
    post_max_size = 16M
    max_execution_time = 300
    max_input_time = 300
    date.timezone = "UTC"

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:

    $ mysql -u root -p -e "create database zabbix character set utf8"
    $ mysql -u root -p -e "grant all on zabbix.* to zabbix@localhost identified by 'test'"
    $ mysql -u zabbix -p zabbix < /usr/share/zabbix-server/mysql/schema.sql
    $ mysql -u zabbix -p zabbix < /usr/share/zabbix-server/mysql/images.sql
    $ mysql -u zabbix -p zabbix < /usr/share/zabbix-server/mysql/data.sql

Now edit `/etc/zabbix/zabbix_server.conf` with the database settings:

    /etc/zabbix/zabbix_server.conf

    DBName=zabbix
    DBUser=zabbix
    DBPassword=test

### ICMP/ping discovery

To use ICMP discovery (e.g. ping) in Zabbix, install the fping package.

### Starting

Enable and start the `zabbix-server-mysql.service` unit, if you are using MariaDB.

Finally you can access Zabbix via your local web server, e.g.: http://localhost/zabbix/, finish the installation wizard and access the frontend the first time. 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 does no longer include `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.

    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.

## 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 ArchLinux system updates

Here is an approach on how to monitor your ArchLinux 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.

## Troubleshooting

While importing the databases, you might get an eror "Specified key was too long; max key length is 767 bytes". In order to solve this, you will have to change the codepage configuration for your MariaDB database: MySQL#Using UTF8MB4.

## See also

- Official manual

Category:

- Network monitoring