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.
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
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
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
tcp6 0 0 :::3306 :::* LISTEN 2220/mysqld unix 2 [ ACC ] STREAM LISTENING 40297 2220/mysqld /var/run/mysqld/mysqld.sock
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>'"
/opt/observium/config.php to point towards the master system's MySQL and RRDCached ports