Poller Partitioning

Poller partitioning allows the distribution of polling and discovery functions to across servers to fit with topology and other requirements. This is similar to distributed polling, but more used for more complex scenarios.

A partitioned poller is a poller server that has a distinct identity and can have devices assigned to it, and will automatically have any devices added or discovered by it assigned to it. This is useful if your central Observium poller doesn't have connectivity to the devices to be monitored.

Each partitioned poller requires access to the MySQL database and RRD files on the main Observium system. Access to RRDs can be achieved either by using remote filesystem mounting or by using remote rrdcached. MySQL access is achieved by allowing the partitioned poller access to the primary Observium database.

Setup Steps

Master RRDCached

This assumes that rrdcached has already been set up on the master system following the RRDCached guide.

Verify this is the case by making sure RRDCached is listening on an external interface

netstat -anp | grep rrdcached

You should see at least tcp socket on 0.0.0.0:42217 and sometimes also a tcp6 socket on :::42217

tcp        0      0 0.0.0.0:42217           0.0.0.0:*               LISTEN      926/rrdcached
tcp6       0      0 :::42217                :::*                    LISTEN      926/rrdcached
unix  2      [ ACC ]     STREAM     LISTENING     27976    926/rrdcached        /var/run/rrdcached.sock

Master MySQL

On the master system, configure the MySQL server to listen for connections externally by changing the bind-address entry in the MySQL config

On Ubuntu 18.04 this is in /etc/mysql/mysql.conf.d/mysqld.cnf

You can either comment the entry out to listen on all interfaces

#bind-address            = 127.0.0.1

Or change the setting to a specific IP address to listen on only that interface

bind-address            = 192.168.1.253

Restart the MySQL server

service mysql restart

Verify that the MySQL server is now listening on either all interfaces or the IP specified

netstat -anp | grep mysql

Output should show a listening socket on :::3306, 0.0.0.0:3306 or :3306

tcp6       0      0 :::3306                 :::*                    LISTEN      2220/mysqld
unix  2      [ ACC ]     STREAM     LISTENING     40297    2220/mysqld          /var/run/mysqld/mysqld.sock

Slave Configuration

Create a MySQL username on master to permit the slave access to the database

Run the following command on the master system to grant the slave access to the MySQL database

mysql -uroot -p"<MYSQL_ROOT_PASSWORD>" -e "GRANT ALL PRIVILEGES ON observium.* TO 'observium'@'<SLAVE_IP>' IDENTIFIED BY '<SLAVE_MYSQL_PASSWORD>'"

Modify the /opt/observium/config.php to point towards the master system's MySQL and RRDCached ports