Skip to content

feat: log poller results and show which devices were excluded from the map #97

Description

@somethingwithproof

Is your feature request related to a problem? Please describe.

The poller hook writes XML and KML and says nothing. When a device does not appear on the map there is no way to find out why without reading includes/polling/processregion.php. netniV had to walk a user through this by hand in #9 ("you don't get stats in the cacti log for this plugin"), and #13 is the same class of problem.

region() silently drops a device when any of these hold:

  • latitude or longitude is 0.000
  • gethostbyname() does not return a dotted quad
  • its device template is not in gpsmap_templates
  • it falls outside the requested subnet, so showMap is set to 0
  • the device is disabled and Enable All is off

Five different reasons, all invisible.

Describe the solution you'd like

Two parts.

  1. A poller summary line in the Cacti log, matching what other plugins emit:

    GPSMAP STATS: Devices:412 Mapped:388 Towers:6 NoCoords:19 Unresolved:5 Time:1.83
    
  2. An "Excluded Devices" view on the Maps tab listing each dropped device with its reason, so the answer to "why is this device missing" is one click rather than a support thread.

The counters are cheap: region() already visits every row and already has the branch for each exclusion.

Describe alternatives you've considered

Logging every exclusion individually. Rejected: on a large install that floods the log every poll cycle. A summary plus an on-demand view gives the same answer without the volume.

Additional context

This is worth doing early because it makes every other item on the roadmap diagnosable. It would also have shortened #9 and #13 considerably.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions