Distributed Polling is not working when deices are assigned to another group

I have been using LibreNMS for about 7 years with a single VM and it’s been amazing. From soup to nuts, everything has been awesome. Now, I’m trying to set up a head node with distributed polling and although everything looks happy, I have issues. The biggest one is once a device is assigned to group 2 or 3, it stops producing data. If I add it back into the default group (aka the head node) data starts flowing.

All of my pollers can snmp-walk the devices. All of them can run daily.sh and validate.sh with no issue. Pretty sure I’m missing something simple here.

Head node (they are all muppets):

librenms@rizzo:~$ ./validate.php
===========================================
Component | Version
--------- | -------
LibreNMS  | 24.2.0-34-g05f06bafc (2024-03-27T10:23:44-07:00)
DB Schema | 2024_02_07_151845_custom_map_additions (290)
PHP       | 8.1.2-1ubuntu2.14
Python    | 3.10.12
Database  | MariaDB 10.6.16-MariaDB-0ubuntu0.22.04.1
RRDTool   | 1.7.2
SNMP      | 5.9.1
===========================================

[OK]    Composer Version: 2.7.2
[OK]    Dependencies up-to-date.
[OK]    Database connection successful
[OK]    Database Schema is current
[OK]    SQL Server meets minimum requirements
[OK]    lower_case_table_names is enabled
[OK]    MySQL engine is optimal
[OK]    Database and column collations are correct
[OK]    Database schema correct
[OK]    MySQL and PHP time match
[OK]    Distributed Polling setting is enabled globally
[OK]    Connected to rrdcached
[OK]    Active pollers found
[OK]    Dispatcher Service not detected
[OK]    Locks are functional
[OK]    Python poller wrapper is polling
[OK]    Redis is unavailable
[OK]    rrdtool version ok
[OK]    Connected to rrdcached

One of the distributed pollers:

librenms@gonzo:~$ ./validate.php
===========================================
Component | Version
--------- | -------
LibreNMS  | 24.2.0-34-g05f06bafc (2024-03-27T10:23:44-07:00)
DB Schema | 2024_02_07_151845_custom_map_additions (290)
PHP       | 8.1.2-1ubuntu2.14
Python    | 3.10.12
Database  | MariaDB 10.6.16-MariaDB-0ubuntu0.22.04.1
RRDTool   | 1.7.2
SNMP      | 5.9.1
===========================================

[OK]    Composer Version: 2.7.2
[OK]    Dependencies up-to-date.
[OK]    Database connection successful
[OK]    Database Schema is current
[OK]    SQL Server meets minimum requirements
[OK]    lower_case_table_names is enabled
[OK]    MySQL engine is optimal
[OK]    Database and column collations are correct
[OK]    Database schema correct
[OK]    MySQL and PHP time match
[OK]    Distributed Polling setting is enabled globally
[OK]    Connected to rrdcached
[OK]    Active pollers found
[OK]    Dispatcher Service not detected
[OK]    Locks are functional
[OK]    Python poller wrapper is polling
[OK]    Redis is functional
[OK]    rrdtool version ok
[OK]    Connected to rrdcached

Everyone shares the same rrd folder via NFS with proper permissions. Please let me know what else you would like to see. I’m sure it’s just an oversite on my end. Thanks in advance!!!

are the groups 2,3 assigned to any pollers?

you either need to do that via command line on the startup of the poller

/opt/librenms/librenms-service.py -g 0,1,2,3 -v

or shut down the pollers, and use the web-ui to assigne them, then start the pollers

the URL /poller will show you the ‘Groups Served’ of what groups each dispatcher thinks it is doing…

The other trick is that each machine should have a unique value in the ‘.env’ file for NODE_ID

Thanks for the response! The group numbers are specified in the config.php files and the NODE_ID on each poller is unique. Calling
/opt/librenms/librenms-service.py -v shows them being assigned to the proper group. But, after testing that, I noticed that the service wasn’t running on any of my pollers…duh!

How does my head node start the service? I can’t find a systemd file for it anywhere. I could write one, but I feel like there’s an easier approach.

Found this here and will be implementing it on the pollers. Thanks again!