Follow FREE product releases now. If you later buy a PRO product using the same email, the licence will appear in this account automatically.
Enhanced Problems
FREE PROConfigurable Problems table widget with flexible columns and actions Displays Zabbix problems in a configurable dashboard widget providing a table view with flexible columns, per-severity summary row, and in-place acknowledge and action controls. Widget settings include column selection and widths (including tag columns), presets, font and colour controls for wall displays, filtering and three-level sorting, and action buttons or webhooks that can run per problem or for a selection. Intended for NOC screens, wall displays and teams that require tailored problem views and integrated ticketing or automation workflows.
Screenshots
How to install
Install via your OS package manager. Using the initMAX repository (apt / dnf / zypper) is the recommended way - you get GPG-signed updates automatically.
PRO repositories are protected with HTTP basic auth. You need one personal repo token, then you point your package manager at the authenticated URL. A single token unlocks every product your account is entitled to - you do not need a token per widget.
wget https://repo.initmax.com/zabbix/release/initmax-release-latest_all.deb
dpkg -i initmax-release-latest_all.deb
apt update && apt install zabbix-module-enhancedproblems
rpm -Uvh https://repo.initmax.com/zabbix/release/initmax-release-latest.noarch.rpm
dnf clean all && dnf install -y zabbix-module-enhancedproblems
rpm -Uvh https://repo.initmax.com/zabbix/release/initmax-release-latest.noarch.rpm
zypper --gpg-auto-import-keys refresh && zypper install -y zabbix-module-enhancedproblems
wget https://repo.initmax.com/zabbix/release/initmax-release-latest_all.deb
dpkg -i initmax-release-latest_all.deb
printf 'machine repo.initmax.com login token password %s\n' 'TOKEN_VALUE' > /etc/apt/auth.conf.d/initmax.conf
chmod 600 /etc/apt/auth.conf.d/initmax.conf
sed -i -e '/^# Types: deb/,$ s/^# //' -e 's|USER:TOKEN@||' /etc/apt/sources.list.d/initmax.sources
apt update && apt install zabbix-module-enhancedproblems
rpm -Uvh https://repo.initmax.com/zabbix/release/initmax-release-latest.noarch.rpm
sed -i -e '/#\[initmax-zabbix-pro\]/,$ s/^#//' -e 's|USER:TOKEN|token:TOKEN|' /etc/yum.repos.d/initmax.repo
chmod 600 /etc/yum.repos.d/initmax.repo
dnf clean all && dnf install -y zabbix-module-enhancedproblems
rpm -Uvh https://repo.initmax.com/zabbix/release/initmax-release-latest.noarch.rpm
sed -i -e '/#\[initmax-zabbix-pro\]/,$ s/^#//' -e 's|USER:TOKEN|token:TOKEN|' /etc/zypp/repos.d/initmax.repo
chmod 600 /etc/zypp/repos.d/initmax.repo
zypper --gpg-auto-import-keys refresh && zypper install -y zabbix-module-enhancedproblems
One token unlocks every PRO product on your account. If you cancel one product, the same token keeps working for the rest. Rotate or revoke tokens any time from the Portal.
Step 4 · Edit your Dockerfile
Paste the block after FROM in the final Zabbix frontend stage.
# initMAX enhancedproblems - Alpine (apk) package install
USER root
RUN apk add --no-cache ca-certificates curl \
&& curl -fsSL https://repo.initmax.com/zabbix/release/setup-alpine.sh -o /tmp/initmax-repo.sh \
&& sh /tmp/initmax-repo.sh --edition free \
-- apk add --no-cache zabbix-module-enhancedproblems \
&& rm -f /tmp/initmax-repo.sh
USER 1997
On the last line, keep the USER from your original image.
The block installs the newest available version when the installation step runs. Docker may reuse a cached layer. To keep a fixed version, use zabbix-module-enhancedproblems=2.6.0_p1-r3
Step 5 · Build your image
Run the command in a terminal in the Dockerfile directory.
# initMAX enhancedproblems - Alpine (apk) package install
docker build -t zabbix-web-custom .
In Compose, use image zabbix-web-custom and recreate the frontend. In Zabbix, open Administration / General / Modules, Scan directory and enable the module.
More options
No manual APK downloads or file copying.
Buying another product later? Add its install block to the same Dockerfile; keep the existing blocks and products.
Step 4 · Edit your Dockerfile
Paste the block after FROM in the final Zabbix frontend stage.
# initMAX enhancedproblems - Alpine (apk) package install
USER root
RUN --mount=type=secret,id=initmax_repo_token,required=true \
apk add --no-cache ca-certificates curl \
&& curl -fsSL https://repo.initmax.com/zabbix/release/setup-alpine.sh -o /tmp/initmax-repo.sh \
&& sh /tmp/initmax-repo.sh --edition pro \
--token-file /run/secrets/initmax_repo_token \
-- apk add --no-cache zabbix-module-enhancedproblems \
&& rm -f /tmp/initmax-repo.sh
USER 1997
On the last line, keep the USER from your original image.
The block installs the newest available version when the installation step runs. Docker may reuse a cached layer. To keep a fixed version, use zabbix-module-enhancedproblems=2.6.0_p2-r3
Step 5 · Build your image
Reveal or create a repo token above. Run the filled command in a terminal in the Dockerfile directory; do not save it to a file.
# initMAX enhancedproblems - Alpine (apk) package install
INITMAX_REPO_TOKEN='TOKEN_VALUE' \
docker build --secret id=initmax_repo_token,env=INITMAX_REPO_TOKEN \
-t zabbix-web-custom .
In Compose, use image zabbix-web-custom and recreate the frontend. In Zabbix, open Administration / General / Modules, Scan directory and enable the module.
More options
PRO uses your existing repo token as a Docker build secret. Do not put the token in Dockerfile instructions or ARG/ENV.
Buying another product later? Add its install block to the same Dockerfile; keep the existing blocks and products.
Step 4 · Edit your Dockerfile
For Ubuntu / Debian frontend images. Add after FROM. Keep installed modules in the image; a volume over modules/ would hide package updates.
USER root
RUN apt-get update \
&& apt-get install -y --no-install-recommends ca-certificates curl \
&& curl -fsSL https://repo.initmax.com/zabbix/release/initmax-release-latest_all.deb -o /tmp/initmax-release.deb \
&& dpkg -i /tmp/initmax-release.deb \
&& apt-get update \
&& apt-get install -y --no-install-recommends zabbix-module-enhancedproblems \
&& rm -f /tmp/initmax-release.deb \
&& rm -rf /var/lib/apt/lists/*
USER 1997
On the last line, keep the USER from your original image.
Step 5 · Build your image
Run the command in a terminal in the Dockerfile directory.
docker build -t zabbix-web-custom .
In Compose, use image zabbix-web-custom and recreate the frontend. In Zabbix, open Administration / General / Modules, Scan directory and enable the module.
Step 4 · Edit your Dockerfile
For Ubuntu / Debian frontend images. Add after FROM. Keep installed modules in the image; a volume over modules/ would hide package updates.
USER root
RUN --mount=type=secret,id=initmax_repo_token,required=true \
apt-get update \
&& apt-get install -y --no-install-recommends ca-certificates curl \
&& curl -fsSL https://repo.initmax.com/zabbix/release/initmax-release-latest_all.deb -o /tmp/initmax-release.deb \
&& dpkg -i /tmp/initmax-release.deb \
&& cp /etc/apt/sources.list.d/initmax.sources /tmp/initmax.sources \
&& printf 'machine repo.initmax.com login token password %s\n' "$(cat /run/secrets/initmax_repo_token)" > /etc/apt/auth.conf.d/initmax.conf \
&& chmod 600 /etc/apt/auth.conf.d/initmax.conf \
&& sed -i -e '/^# Types: deb/,$ s/^# //' /etc/apt/sources.list.d/initmax.sources \
&& apt-get update \
&& apt-get install -y --no-install-recommends zabbix-module-enhancedproblems \
&& mv /tmp/initmax.sources /etc/apt/sources.list.d/initmax.sources \
&& rm -f /tmp/initmax-release.deb /etc/apt/auth.conf.d/initmax.conf \
&& rm -rf /var/lib/apt/lists/*
USER 1997
On the last line, keep the USER from your original image.
Step 5 · Build your image
Reveal or create a repo token above. Run the filled command in a terminal in the Dockerfile directory; do not save it to a file.
INITMAX_REPO_TOKEN='TOKEN_VALUE' \
docker build --secret id=initmax_repo_token,env=INITMAX_REPO_TOKEN \
-t zabbix-web-custom .
In Compose, use image zabbix-web-custom and recreate the frontend. In Zabbix, open Administration / General / Modules, Scan directory and enable the module.
PRO uses your existing repo token as a Docker build secret. Do not put the token in Dockerfile instructions or ARG/ENV.
Step 4 · Edit your Dockerfile
For CentOS Stream / Oracle Linux frontend images. Add after FROM. DNF installs the RPM package; keep installed modules in the image, not a volume over modules/.
USER root
RUN if ! command -v dnf >/dev/null; then microdnf install -y dnf; fi \
&& { rpm -q initmax-release >/dev/null 2>&1 || rpm -Uvh https://repo.initmax.com/zabbix/release/initmax-release-latest.noarch.rpm; } \
&& dnf install -y zabbix-module-enhancedproblems \
&& dnf clean all
USER 1997
On the last line, keep the USER from your original image.
Step 5 · Build your image
Run the command in a terminal in the Dockerfile directory.
docker build -t zabbix-web-custom .
In Compose, use image zabbix-web-custom and recreate the frontend. In Zabbix, open Administration / General / Modules, Scan directory and enable the module.
Step 4 · Edit your Dockerfile
For CentOS Stream / Oracle Linux frontend images. Add after FROM. DNF installs the RPM package; keep installed modules in the image, not a volume over modules/.
USER root
RUN --mount=type=secret,id=initmax_repo_token,required=true \
if ! command -v dnf >/dev/null; then microdnf install -y dnf; fi \
&& { rpm -q initmax-release >/dev/null 2>&1 || rpm -Uvh https://repo.initmax.com/zabbix/release/initmax-release-latest.noarch.rpm; } \
&& cp /etc/yum.repos.d/initmax.repo /tmp/initmax.repo \
&& sed -i -e '/#\[initmax-zabbix-pro\]/,$ s/^#//' -e 's|USER:TOKEN@||' /etc/yum.repos.d/initmax.repo \
&& printf '\nusername=token\npassword=$initmax_repo_token\n' >> /etc/yum.repos.d/initmax.repo \
&& DNF_VAR_initmax_repo_token="$(cat /run/secrets/initmax_repo_token)" dnf install -y zabbix-module-enhancedproblems \
&& mv /tmp/initmax.repo /etc/yum.repos.d/initmax.repo \
&& dnf clean all
USER 1997
On the last line, keep the USER from your original image.
Step 5 · Build your image
Reveal or create a repo token above. Run the filled command in a terminal in the Dockerfile directory; do not save it to a file.
INITMAX_REPO_TOKEN='TOKEN_VALUE' \
docker build --secret id=initmax_repo_token,env=INITMAX_REPO_TOKEN \
-t zabbix-web-custom .
In Compose, use image zabbix-web-custom and recreate the frontend. In Zabbix, open Administration / General / Modules, Scan directory and enable the module.
PRO uses your existing repo token as a Docker build secret. Do not put the token in Dockerfile instructions or ARG/ENV.
ZIP modules in a persistent volume. You manage updates manually.
1 · Download and extract the ZIP
Save the ZIP for your version and edition as module.zip on the Docker host. Unzip it into a new directory as shown below, then read the included INSTALL.md.
WORKDIR=$(mktemp -d)
unzip module.zip -d "$WORKDIR" && cd "$WORKDIR/enhancedproblems"
2 · Mount the modules volume
Keep your existing modules volume. For a new one, merge this Zabbix 8.0 example into Compose and recreate the frontend. Preserve other settings and transfer existing modules before switching. For images with a ui/ directory, mount /usr/share/zabbix/ui/modules. Do not share a volume between different Zabbix versions.
services:
zabbix-web:
volumes:
- zabbix-web-modules-8.0:/usr/share/zabbix/modules
volumes:
zabbix-web-modules-8.0:
docker compose up -d --no-deps zabbix-web
3 · Copy the module into the volume
Replace zabbix-web with your actual frontend container name. Select legacy/ for Zabbix 6.0–6.2, otherwise modern/.
When updating, back up this module and its settings first. Only its own directory is replaced, never the whole modules/ directory.
Show copy commands
(
set -eu
ZABBIX_WEB_CONTAINER=zabbix-web
ZABBIX_FRONTEND=$(docker exec "$ZABBIX_WEB_CONTAINER" sh -c '
for root in /usr/share/zabbix/ui /usr/share/zabbix /usr/share/zabbix/php; do
[ -f "$root/include/defines.inc.php" ] && echo "$root" && break
done')
test -n "$ZABBIX_FRONTEND" || { echo "Zabbix frontend not found in container" >&2; exit 1; }
ZBXVER=$(docker exec "$ZABBIX_WEB_CONTAINER" grep -m1 ZABBIX_VERSION "$ZABBIX_FRONTEND/include/defines.inc.php" | grep -oE "[0-9]+\.[0-9]+" | head -1)
case "$ZBXVER" in
6.0|6.2) PAYLOAD=legacy ;;
6.4|7.0|7.2|7.4|8.0) PAYLOAD=modern ;;
*) echo "Unsupported Zabbix frontend: $ZBXVER" >&2; exit 1 ;;
esac
test -f "$PAYLOAD/manifest.json" || { echo "Run from the extracted enhancedproblems ZIP directory" >&2; exit 1; }
if grep -q '"supported_versions"[[:space:]]*:' "$PAYLOAD/manifest.json"; then
SUPPORTED=$(awk 'BEGIN { RS="]" } /"supported_versions"[[:space:]]*:/ {
sub(/^.*"supported_versions"[[:space:]]*:[[:space:]]*\[/, ""); print; exit
}' "$PAYLOAD/manifest.json")
printf '%s\n' "$SUPPORTED" | grep -Fq "\"$ZBXVER\"" \
|| { echo "Module does not support Zabbix $ZBXVER" >&2; exit 1; }
fi
ZABBIX_MODULES_VOLUME=$(docker inspect --format '{{range .Mounts}}{{println .Type .Destination .RW .Name}}{{end}}' "$ZABBIX_WEB_CONTAINER" \
| awk -v target="$ZABBIX_FRONTEND/modules" '$1 == "volume" && $2 == target && $3 == "true" { print $4 }')
test -n "$ZABBIX_MODULES_VOLUME" || { echo "Mount a writable modules volume in Compose first" >&2; exit 1; }
echo "Zabbix $ZBXVER · $PAYLOAD · $ZABBIX_MODULES_VOLUME"
if docker exec "$ZABBIX_WEB_CONTAINER" test -d "$ZABBIX_FRONTEND/modules/enhancedproblems"; then
BACKUP=$(mktemp -d)
docker cp "$ZABBIX_WEB_CONTAINER:$ZABBIX_FRONTEND/modules/enhancedproblems" "$BACKUP/"
echo "Backup: $BACKUP/enhancedproblems"
docker exec -u root "$ZABBIX_WEB_CONTAINER" rm -rf "$ZABBIX_FRONTEND/modules/enhancedproblems"
fi
docker exec -u root "$ZABBIX_WEB_CONTAINER" mkdir -p "$ZABBIX_FRONTEND/modules/enhancedproblems"
docker cp "$PAYLOAD/." "$ZABBIX_WEB_CONTAINER:$ZABBIX_FRONTEND/modules/enhancedproblems/"
docker exec -u root -e ZABBIX_FRONTEND="$ZABBIX_FRONTEND" "$ZABBIX_WEB_CONTAINER" sh -c '
chown -R "$(stat -c "%u:%g" "$ZABBIX_FRONTEND/include/defines.inc.php")" "$ZABBIX_FRONTEND/modules/enhancedproblems"
'
docker restart "$ZABBIX_WEB_CONTAINER"
)
4 · Enable the module in Zabbix
Administration / General / Modules / Scan directory. Enable the single entry for this product. For an earlier or renamed copy, follow Earlier copies in the included INSTALL.md before scanning to retain its settings.
Manual copying does not run package pre/post-install or upgrade scripts. If required, follow INSTALL.md. After changing the Zabbix version, use a separate volume with compatible modules and scan again.
These are displayed instructions only. Nothing is executed against your Docker environment.
Releases
122.6.0 Latest 2026-11-06
-
Publish the Alpine (apk) package for Docker based Zabbix frontends (repo.initmax.com Alpine channel).
2.5.0 2026-11-02
-
Keep the Last occurrence checkbox help beside its wrapped caption on narrow windows instead of leaving the question mark alone below the text.
-
Reserve the full height of wrapped source and link-target switches on narrow windows, so their second line cannot cover the next custom column's Name or help button.
-
Keep custom-column captions and their help buttons together on legacy frontends, including the Regular expression caption.
-
Restore the native sidebar layer when opening widget configuration after pinning a compact menu open, so the menu cannot cover dialog controls on older frontends.
-
Preserve disabled legacy Count and First occurrence tag columns, including their stored label, width and position, when upgrading FREE widgets and presets.
-
Keep the original First occurrence tag ordering for missing and empty values, literal Tag keys and whitespace in plain Problem filters.
-
Rebuild custom-column edition states when loading a preset, so Count remains editable in FREE and new message/link options stay locked regardless of row order.
-
Copy selected problem rows when column headings are hidden.
-
Clicking a group caption no longer activates its nested help button. Presets, Custom columns / Link target, administration field groups and Test / Send from keep independent help controls and accessible group names.
-
On older Zabbix frontends, administration Test, Read from response and confirmation dialogs restore the native sidebar layer when an expanded sidebar retains its stale floating-menu layer, so the menu cannot cover dialog controls.
-
Keep locked Widget title and Subtitle fields inside their panels on narrow windows; their grid content and padlocks no longer force horizontal form overflow.
-
Let locked custom-column text fields use the available row width beside their padlocks, matching the usable PRO field width instead of falling back to the native 150 px input width.
-
Wrap long Custom columns captions beside a centred help button, keeping their text and question marks clear of the adjacent controls in both editions.
-
Keep administration help clear of wrapper scrollbars and both sidebar modes, including Test / Send from; centre question marks on older frontends while retaining native help scrolling, Close and focus.
-
Localise administration examples, no-macro test messages and close confirmations in all supported languages.
-
Clarify five help hints: Test distinguishes real requests and script execution from note/follow-up previews; Required status codes and Response distinguish server response bodies from browser status/network errors; Once for the whole selection limits note writing to frontend-server calls; regex candidate limits use the greater of the frontend search limit and Maximum displayed alarms.
-
Preserve the published FREE 2.4.1 contract per option: unlimited Tag columns, original Count extraction and timestamp behavior, First occurrence tag sorting, URL-tag menu link, literal Problem filters, manual host filters, fonts, colours and presets. New capabilities require PRO, in both adapters and on the server, even when stored configurations contain PRO values.
-
Retain editable fixed source controls even when their columns are hidden; keep an explicitly empty old URL tag disabled. Preserve the original default font.
-
Keep the native source selector aligned when only Update message is locked, and preserve saved PRO list styles during a FREE form submission.
-
Keep per-column URL link templates, Select dashboard and Link target in PRO. FREE retains its published single URL-tag context-menu link, tag columns and value extraction; loading a PRO configuration cannot enable extra links in FREE. Dynamic rows show native disabled controls and shared upgrade hints.
-
Keep configuration hintboxes outside the clipping dashboard wrapper, so section and column help remains fully visible with an expanded sidebar.
-
Show the latest accepted suppression or unsuppression in the time acknowledge dialog while the server processes it; retain active maintenance suppression.
-
Apply display limits after sorting; combine included/excluded host groups and explicit hosts by their IDs.
-
Keep Greyed ACK text readable on dark custom backgrounds and on hover, and select the severity cell with its row.
-
Preserve unsaved action-button cards on validation errors and show full tooltips for truncated custom-column links.
-
Translate stored built-in column names for the viewing user while preserving custom labels; correct stale sorting and Czech help text.
-
Align FREE controls and per-option PRO locks, use the native preset picker, keep the width total below preset columns, and place upgrade links beside Apply/Cancel.
-
Run the action-button, severity-colour and timed-ACK suites through the shared interaction-test entry point; add regression checks for these cases.
-
The help hints of the configuration dialog say what the fields do now. Fields with choices list each choice with what it does (Tags, Display mode, Acknowledge problem style, the subtitle's Alignment and counters, Presets, column Width). Host based filtering, Host groups, Exclude host groups and Hosts describe the host filter as it works, Show suppressed problems includes problems suppressed by hand, Maximum displayed alarms explains the limit after configured sorting, while regex filtering first checks the newest candidates up to the greater of the frontend search limit and Maximum displayed alarms, and the hints mention custom columns in sorting, Inherit from Zabbix fonts and the title alignment. On Zabbix 6.0 and 6.2, Host groups, Exclude host groups and Hosts get the same hints as on 6.4 and newer. The title's Text and URL link, the problem list's Font size and, on Zabbix 6.0 and 6.2, Maximum displayed alarms are not marked as required any more, like the other fields that have a default or may stay empty. On the action buttons page, Type, Run, Send from, Authentication and Response list their choices the same way, Note on the problem points to custom columns, and Test explains itself on hover.
-
Column widths are honoured. They were only a hint the browser dropped as soon as a value did not fit, so a long tag value pushed its column wide and the others narrow, whatever was set. A column is now as wide as it is set, in percent of the widget: widths adding up to more than 100 make the table wider than the widget, scrolled sideways, and text that does not fit ends with "…" and shows in full on hover. A column set to 0 is as wide as its longest value. In the configuration the width total is green up to 100 and red above, where it says that the list scrolls sideways or, with the horizontal scrollbar off, warns that it will never show in full; an orange note says when columns set to 0 make the list wider. Under the two scrollbar switches, a note says what switching one off costs, with the width total when the columns are wider than the widget.
-
On Zabbix 6.2, Add under a list of the configuration dialog, such as the Tags filter, adds one row instead of two: the dialog ran its scripts twice, which also set up the host and host group pickers twice.
-
On Zabbix 7.2, Apply saves a widget whose configuration was opened with the title or the subtitle shown and a font style ticked. The dialog sent that font style both as ticked and as empty, the frontend could not read the form, and Apply did nothing.
-
In the configuration, the tag list starts where the fields of the other groups do, and the Columns group is as wide as the others.
-
Presets leave the texts and links of the title and the subtitle alone: saving a preset does not take them, and loading one keeps the ones the dialog has. A preset saved earlier with them loads without them.
-
A row with action icons is as tall as one without: the icons sit in the line of text, at the size core draws them in its own tables. Acknowledged problems, which nearly always have them, no longer stand out by their height.
-
Pointing at or focusing a linked title or subtitle no longer moves the problem list down by a pixel. The links of the action button dialog and of the module settings keep their height the same way.
-
The help hint of the Columns section explains Enabled, the one heading of the column list without a hint of its own: it shows the column in the problem list, and a row is dragged by its handle to change the order.
-
Extend regression coverage for clipboard, legacy disabled layouts and cross-edition preset loading; keep edition detection from navigating away from a test's active form and wait for the final module-list document after native Scan/Enable auto-posts or reloads before continuing.
-
Check administration fields, native help paint, text scrolling, Close and focus in independent viewport/sidebar cases; preserve the full configuration lifecycle without repeating it for every layout.
-
Custom columns unifies the original sources in one editor. FREE retains unlimited Tag columns, the original Count source from Tag or Update message with its Regular expression and Last occurrence date option, First occurrence tag and its original sorting criterion, and the single configurable URL-tag context-menu link. Existing widgets and presets preserve source settings, disabled rows, labels, widths and order. The original fixed controls remain available even when their columns are hidden.
-
The widget form now follows this order: Filtering, Widget title, Subtitle, Custom columns, Columns, Problems sorting (formerly Sorting), Acknowledged problems, Severity colours and Display options, with Presets still above them.
-
PRO: The summary row is now named Subtitle. It has text, URL link with Select dashboard, Font family, Font size, Font style, Font color, Background color and Alignment, plus the per-severity counters. Font family defaults to Inherit from Zabbix, preserving the published inherited typeface; the text remains 12 px by default and Counters font size is independently 12 px. The title gets the same Alignment setting, centered by default. Existing saved appearance values are retained.
-
The Tag list section is gone: a column for a tag is a custom column with source Tag. Every tag of a saved widget's or preset's tag list becomes such a custom column, named like the tag, with its place, visibility, width and label in Columns kept.
-
Problems sorting is a list of sorting rows, edited like the custom columns: each row is a column (a built-in one or a custom column) and ASC or DESC, the top row first, each one ordering the problems that tie on the rows above it. FREE has one row; PRO adds rows with Add, up to ten, and takes them out with Remove, one row always staying. Saved widgets and presets keep their order without being opened: the first sorting level becomes the first row, and the second and the third level, when switched on, the rows after it, custom columns included; saving the widget stores the rows. A widget saved in PRO with several rows sorts by its first row in FREE.
-
Problems sorting rows move by a drag handle, like the rows of Columns, and a column sorts once: a column chosen in one row is not offered in the others, and Add stops when every column has a row. A row of a saved widget that repeats a column of a row above it is dropped; it did not change the order.
-
Loading a preset keeps a title or a subtitle the dialog has switched on: the whole section, its switch, texts, links, font, colours, alignment and counters, stays as it is. A title or subtitle that is off takes the preset's settings, as before.
-
All tags display offers Zabbix popup first, and a newly added widget uses it. Widgets saved earlier keep List until it is changed in their configuration.
-
The whole text of a cut cell shows in a tip of the widget's own instead of the browser's tooltip: in the cell's font and size, at least 14px, dark with white text, so a long problem name reads at a glance over any severity colour.
-
In the link of a custom column, {RESPONSE.id}, {RESPONSE1} and the other forms of an action button's answer are the column's value, like {RESPONSE}: a button that writes ticket:{RESPONSE.id} into the note and a column link ending in /ticket/{RESPONSE.id} open the same ticket. Before, they were empty there and the link ended without the number.
-
PRO adds independent additional Update message columns and per-column URL link templates, Select dashboard and Link target: Column or Context menu. These new controls are locked individually in FREE; the original Count extraction and URL-tag menu link remain available. URL macros use the column value as {RESPONSE} and honor the frontend URI-scheme policy.
-
PRO: A Severity icon column: a narrow column with the problem's severity as a glyph in a cell of the severity's colour as tall as the row, the icons navigatorMAX, matrixMAX and servicesMAX use, with the warning triangle a little smaller so it is no larger than the others, named on hover. Set to 0 %, the column is as narrow as its widest glyph. It has no heading unless it is given a label, and it keeps the severity readable on acknowledged and selected rows, so with the column shown an acknowledged row has no stripe on the left. A newly added PRO widget shows it first; widgets saved earlier get it switched off at the end of their column list.
-
PRO: Operational data and Duration columns. Operational data shows what Monitoring > Problems shows: the trigger's operational data with its macros resolved, or, for a trigger without any, the latest values of the items in its expression. Duration shows how long the problem has lasted. A newly added PRO widget shows the Severity icon (3 %), Last occurrence (15 %), Host (10 %), Problem (40 %), Operational data (15 %), Duration (5 %), Action icons (7 %) and Tags (5 %), together the widget's full width; widgets saved earlier keep their columns and get the two new ones switched off at the end of their column list.
-
PRO: Sort by any custom column, with natural case-insensitive ordering (9 before 10). New custom sort criteria place missing values last in either direction. The converted original First occurrence tag remains a FREE criterion and keeps its published missing-value ordering. Removing a custom column used for sorting falls back to First occurrence.
-
PRO: The Subtitle URL link has the same Select dashboard picker as the title's, for a dashboard and optionally one of its pages, and opens in a new tab like the title; an address the frontend's URI scheme rules refuse is drawn as plain text.
-
PRO: The font of the problem list and of the widget title can be Inherit from Zabbix: the text is drawn in the frontend's own font, the one the theme in use sets. This is a PRO option; the original default font remains unchanged for configurations without an explicit font.
-
PRO: Oxanium joins the fonts of the problem list, the title and the subtitle. It ships with the module, under the SIL Open Font License, so it shows on a frontend without internet access, Czech and other Latin accents included.
-
PRO: The title, the subtitle and the column header stay at the top of the widget while the problems scroll under them; the title and the subtitle also stay in view when a wide table scrolls sideways. All three take less height: their padding is cut to a few pixels, so the first problem starts about a third higher.
-
PRO: The Problem filter takes * patterns and regular expressions: plain text is still found anywhere in the name, text with * is a pattern over the whole name (Disk*, *disk*full*), and regex: followed by an expression is a regular expression, checked against the newest problems up to the greater of the frontend search limit and Maximum displayed alarms.
-
PRO: Acknowledged problems can have a background colour of their own with the Color acknowledge style: the text turns black or white, whichever reads better, and the severity stays as a stripe on the left, or in the Severity icon column when it is shown. Left empty, the rows keep the theme's background as before.
-
PRO: The Greyed acknowledge style mixes each severity background with grey and automatically chooses black or white text for readable contrast, including hover and custom severity colours. The Severity icon cell follows the same contrast rules.
-
PRO: Acknowledged problems have a section of their own in the configuration, before the visual settings: the style, the Acknowledged row color, Greyed by (%) - how much grey goes into the severity colour with the Greyed style, 65 % by default - and a Font style of acknowledged rows with every acknowledge style - bold, italic, underline, strikethrough. The ticked styles are added to the font style of the problem list; Override list font style gives acknowledged rows the ticked styles only, so a bold list can have acknowledged rows that are not bold. A fourth style, None, keeps the severity colour, so only the font style marks acknowledged problems; it is the first choice and the style of a newly added widget, widgets saved earlier keep Color, and FREE draws acknowledged rows with Color as before. Display options adds a PRO Font style for the whole problem list: bold, italic, underline. The original FREE acknowledged-row rendering stays unchanged.
-
PRO: Action buttons: a webhook has an Authentication setting - None, Basic (username and password, sent as an Authorization: Basic header with the two base64-encoded) or Bearer token. The frontend server adds the header to every call it sends: a click, once per problem or once for the selection, a follow-up and Test on the settings page. The credentials never reach the dashboard or the operator's browser, so authentication needs Send from: Frontend server. A button saved without the setting keeps working as None; saving refuses Basic without a username, Bearer without a token, a method together with an Authorization header of the card's own, and a URL whose scheme, host or port comes from a macro.
-
PRO: Action buttons: user macros in webhook fields. {$NAME} and {$NAME:"context"} work in the query fields, the headers, the body and the authentication fields, read from the problem's host, its templates (nested) and Administration - Macros, also for an operator without template permissions. Once for the whole selection, the host value is used when every selected problem gives the same one, otherwise the global value. A macro not found is sent as typed; a Secret text or Vault secret macro, which the frontend cannot read, fails the call with a message. Test asks for a host to read them from. They work with Send from: Frontend server, where their values never reach the operator's browser; the URL takes none, and neither do Browser and Open in a dialog buttons.
-
PRO: On Zabbix 7.0 and newer, Host groups and Hosts can take their value from another widget, e.g. a Host navigator, and Hosts also from the host chosen at the top of the dashboard, through Select - Widget and Select - Dashboard, as in Zabbix's own Problems widget. The list follows the choice. Host based filtering has to be on, as for hosts picked by hand.
-
PRO: Action buttons have permissions, the three a Zabbix script has, in a Permissions section of their card: User groups (who sees the button and may press it), Host groups (on which problems it is offered: those whose every host is in one of the groups or in a group nested under one) and Required host permissions (Read, or Write to every host of the problem). The menu offers a button only where the user may press it, and the server checks the same again. Buttons saved earlier add no new user-group or host-group restriction; the existing role and problem-access checks still apply.
-
Action buttons: what a button puts into its URL cannot choose where the request goes. Problem values, the operator's input and the values read from an answer are URL-encoded in the path and the query; the URL takes no user macro; and with Basic or Bearer authentication its scheme, host and port have to be written out, so the credentials never go to a server a host's configuration names. Saving a button that breaks either rule says which.
-
The Update problem dialog a double click on a row opens shows only problems the user can read: asked for a problem they cannot see, it refuses. Any role still opens it on its own problems, one that may change nothing to read the history.
2.4.0 2026-10-23
No changelog items were registered for this release.
Older versions (9)
2.4.1 2026-10-23
-
Remove a misleading PRO implementation marker from the shared configuration view so FREE packages pass the publication scan. Check reserved markers in the built FREE tree before publication.
2.3.0 2026-10-16
-
Action buttons can run a Zabbix script. A button is a webhook or a manual host/event action script picked from Alerts - Scripts; the script runs as the operator pressing it, once per host or once per problem by its scope, with the operator's input handed over as the script's manual input (Zabbix 7.0+). The output goes through the same "After the answer" a webhook has: values read out of it, a sentence for the operator, a note on every selected problem, a follow-up.
-
One ticket for a whole selection. A webhook can fire once per problem or once for the whole selection; in the second case one call carries {SELECTION.COUNT}, {SELECTION.EVENT.IDS}, {SELECTION.HOST.NAMES}, {SELECTION.TEXT} and {SELECTION.JSON}, and the note lands on every selected problem - so ten problems become one ticket whose number shows on all ten.
-
"Skip problems already handled": a button names the note it writes, and a problem that already carries it is left alone and reported as such - the second press of "Create ticket" does not open a second ticket.
-
Presets of the widget configuration. The dialog has a Presets row: save the whole setup (filters, groups and hosts, tags, columns in their order, sorting, appearance) under a name, load it on any dashboard, update or remove it. Shared by every Enhanced Problems widget on the frontend.
-
Clone an action button from its card; Test on a script button runs the script on a named host, for its newest open problem (or a given event id), and previews what the operator would see and what would be noted.
-
The script card reads for what it is: its own section titles, a Create-or-edit-scripts link (or who to ask) under the picker, a warning when the button's input and the script's disagree, and one-click copying of the script's own input settings and confirmation. "Build and test" on a script card takes the script's output pasted in, with no HTTP call and no headers. Every preview fills {MANUALINPUT} with the button's default input.
-
"Update message dates Last occurrence" (Columns): off, a ticket number read into the Count column no longer moves Last occurrence to the time of the note.
-
The latest matching update message wins in the Count column and in {EVENT.COUNT}/{EVENT.LAST} on every Zabbix version. The API returns the update log newest-first on 8.0 and oldest-first on 6.0, and the column took the last one in that order - so on 8.0 it showed the oldest ticket.
-
A script picker with nothing to offer is greyed with an explanation instead of an empty list; a button and its script that disagree on user input fail at the press with a message instead of silently.
2.2.0 2026-10-15
-
Add Zabbix 8.0 support for the widget.
2.1.5 2026-09-30
-
Tag column labels, widths and visibility stay with their own tag after a tag is removed or a tag row is left empty. A widget saved before this fix keeps every tag column it had: a column that stores no tag name, or a stale one, stays on the tag at its position.
2.1.4 2026-09-04
-
refresh .readme/screen from the release capture (capture-screenshots)
2.1.3 2026-09-01
-
polish Enhanced Problems widget form layout
2.1.2 2026-08-31
-
the showcase renders the action buttons and the Administration page
2.1.1 2026-08-29
-
the FREE package carries no reserved PRO marker
2.1.0 2026-08-29
-
FREE/PRO split, HTTP action buttons, time acknowledge and severity colours