Problems Pages is a custom Zabbix dashboard widget based on the built-in Problems widget.
It adds simpler page navigation for time-descending problem lists while avoiding the expensive behavior of loading the full problem result set up to search_limit on every page change.
- Shows open problems in a dashboard widget.
- Keeps the standard Problems widget filters and display options.
- Adds page navigation to the widget footer.
- Optimizes
sort by time descendingpaging so page 2, page 3, and later pages only fetch a bounded result window instead of the entire list.
The standard widget logic is fine for many use cases, but when the list is sorted by newest problems first, paging can become inefficient because the backend may prepare a much larger result set than the current page actually needs.
This custom widget changes that behavior:
- Page 1 loads only the first page window plus a small look-ahead buffer.
- Page 2 and later pages also load only a bounded window.
- The widget still performs the normal follow-up Zabbix queries needed to render the visible rows, such as trigger, tag, alert, host, and symptom lookups.
In practice, this means the main problems query is bounded with LIMIT n instead of loading the whole widget result set.
manifest.json: module manifestWidget.php: widget entry pointactions/WidgetView.php: backend data loading and paging logicincludes/WidgetProblems.php: widget table and pager renderingassets/js/class.widget.js: frontend widget behaviorviews/: widget edit and display views
- Copy the
problems-pagesdirectory into your Zabbix modules location. - Make sure the final folder name remains
problems-pages. - Ensure the web server user can read the files.
- Open Zabbix.
- Go to
Administration -> General -> Modulesif needed and make sure custom modules are enabled in your environment. - Open or create a dashboard.
- Add the widget named
Problems Pages.
If your Zabbix installation stores custom widgets in a project-specific modules path, place this folder there instead of replacing any core Zabbix files.
- Add the
Problems Pageswidget to a dashboard. - Configure filters the same way you would for the built-in Problems widget.
- Set
Sort entries byto time descending if you want the optimized paging behavior. - Use the footer pager to move between pages.
For time-descending lists, the backend in actions/WidgetView.php uses bounded page fetches:
- It calculates the rows needed for the requested page.
- It requests a small extra buffer to determine whether a next page exists.
- It slices the final page in PHP after Zabbix finishes its normal trigger filtering.
This is important because some raw problem rows can be excluded later by Zabbix internals, so the widget requests a small amount of extra data to keep paging accurate.
When the widget is working correctly, the main problem list query should look like this pattern in the Zabbix script profiler:
SELECT ... FROM problem ... ORDER BY p.eventid DESC LIMIT <small bounded number>You should not see it loading the full search_limit result set just to render page 2 or page 3.
Follow-up queries for the currently fetched or visible rows are still expected. Those include:
- trigger lookups
- host lookups
- alert counters
- tags
- acknowledges
- symptom checks
- Built for Zabbix 7.x style widget modules.
- Developed against a Zabbix 7.0.x environment.
- It is a custom widget, not an official core Zabbix component.
- Based on the Zabbix Problems widget structure.