На странице

Известные проблемы

См. также: Проблемы компиляции.

Обновление

Настройка SQL mode для успешного обновления

В MySQL/MariaDB в параметре sql_mode должен быть установлен режим "STRICT_TRANS_TABLES". Если он отсутствует, обновление базы данных Zabbix завершится ошибкой (см. также ZBX-19435).

Обновление с MariaDB 10.2.1 и более ранними версиями

Обновление Zabbix может завершиться неудачей, если таблицы базы данных были созданы в MariaDB 10.2.1 и более ранних версиях, поскольку в этих версиях формат строк по умолчанию — compact. Это можно исправить, изменив формат строк на dynamic (см. также ZBX-17690).

Шаблоны

Совместимость шаблонов в двухстековых средах (IPv4/IPv6)

В двухстековых средах (системах, настроенных для поддержки как IPv4, так и IPv6) имя узла localhost обычно разрешается как в IPv4-, так и в IPv6-адреса. Из-за распространенного приоритета IPv6 над IPv4 во многих операционных системах и DNS-резолверах шаблоны Zabbix могут работать некорректно, если отслеживаемый сервис настроен на прослушивание только IPv4.

Сервисы, не настроенные на прослушивание IPv6-адресов, могут оказаться недоступными, что приведет к сбоям мониторинга. Пользователи могут правильно настроить доступ для IPv4, но все равно столкнуться с проблемами подключения из-за поведения по умолчанию, при котором приоритет отдается IPv6.

Один из способов обойти эту проблему — убедиться, что сервисы (Nginx, Apache, PostgreSQL и т. д.) настроены на прослушивание как IPv4-, так и IPv6-адресов, а серверу/агенту Zabbix разрешен доступ по IPv6. Кроме того, в шаблонах и конфигурациях Zabbix следует явно использовать localhost вместо 127.0.0.1, чтобы обеспечить совместимость как с IPv4, так и с IPv6.

Например, при мониторинге PostgreSQL с помощью шаблона PostgreSQL by Zabbix agent 2 может потребоваться отредактировать файл pg_hba.conf, чтобы разрешить подключения для пользователя zbx_monitor. Если в двухстековой среде приоритет отдается IPv6 (система разрешает localhost в ::1) и вы указываете localhost, но добавляете только запись IPv4 (127.0.0.1/32), подключение завершится ошибкой, поскольку не будет соответствующей записи IPv6.

Следующий пример файла pg_hba.conf гарантирует, что пользователь zbx_monitor сможет подключаться к любой базе данных с локальной машины, используя как IPv4-, так и IPv6-адреса с разными методами аутентификации:

# TYPE     DATABASE     USER            ADDRESS          METHOD
  host     all          zbx_monitor     localhost        trust
  host     all          zbx_monitor     127.0.0.1/32     md5
  host     all          zbx_monitor     ::1/128          scram-sha-256

При необходимости вы также можете использовать IPv4-адрес (127.0.0.1) напрямую при настройке макроса шаблона PostgreSQL by Zabbix agent 2 для строки подключения.

Случайная установка пакетов Zabbix из EPEL

Если репозиторий EPEL установлен и включён, при установке пакетов Zabbix могут быть установлены версии из EPEL вместо официальных пакетов Zabbix. Чтобы решить эту проблему:

1. Удалите все пакеты Zabbix, установленные из EPEL:

dnf remove zabbix-server-mysql

2. Исключите пакеты Zabbix из EPEL, добавив следующую строку в файл /etc/yum.repos.d/epel.repo:

[epel]
...
excludepkgs=zabbix*

3.\ Переустановите официальный пакет сервера Zabbix:

dnf install zabbix-server-mysql

Во время установки официальные пакеты Zabbix содержат слово release в строке версии (например, 7.0.0-release1.el8), что отличает их от пакетов EPEL.

Пакеты Zabbix для RHEL в средах Red Hat UBI

При установке Zabbix из пакетов Red Hat Enterprise Linux в средах Red Hat Universal Base Image убедитесь в наличии доступа к необходимым репозиториям и зависимостям. Пакеты Zabbix зависят от библиотек libOpenIPMI.so и libOpenIPMIposix.so, которые не предоставляются ни одним пакетом в репозиториях менеджера пакетов по умолчанию, включенных в системах UBI, что приведет к ошибкам установки.

Библиотеки libOpenIPMI.so и libOpenIPMIposix.so доступны в пакете OpenIPMI-libs, который предоставляется репозиторием redhat-#-for-<arch>-appstream-rpms. Доступ к этому репозиторию регулируется подписками, которые в случае сред UBI передаются путем монтирования каталогов конфигурации репозиториев и секретов узла RHEL в пространство имен файловой системы контейнера.

Для получения дополнительной информации см. ZBX-24291.

Истёкший ключ подписи для пакетов RHEL

При обновлении Zabbix на Red Hat Enterprise Linux или его производных вы можете столкнуться с проблемой истечения срока действия ключа подписи пакетов в репозитории Zabbix. Когда срок действия ключа подписи истекает, попытки проверить подписи пакетов приводят к ошибке, указывающей на то, что сертификат или ключ больше недействителен. Например:

error: Verifying a signature using certificate D9AA84C2B617479C6E4FCF4D19F2475308EFA7DD (Zabbix LLC (Jul 2022) <[email protected]>):
  1. Certificate 19F2475308EFA7DD invalid: certificate is not alive
      because: The primary key is not live
      because: Expired on 2024-07-04T11:41:23Z
  2. Key 19F2475308EFA7DD invalid: key is not alive
      because: The primary key is not live
      because: Expired on 2024-07-04T11:41:23Z

Чтобы устранить такие проблемы, вручную переустановите последний пакет zabbix-release для вашего конкретного варианта RHEL (замените ссылку ниже на правильную из репозитория Zabbix).

Например, в RHEL 10 выполните:

rpm -Uvh https://repo.zabbix.com/zabbix/8.0/release/rhel/10/noarch/zabbix-release-latest.el10.noarch.rpm

Затем обновите информацию о репозиториях:

dnf update

Дополнительную информацию см. в ZBX-24761.

Timescale DB: высокое потребление памяти при большом количестве партиций

Версии PostgreSQL 9.6-12 используют слишком много памяти при обновлении таблиц с большим количеством партиций. Эта проблема проявляется, когда Zabbix обновляет тренды в системах с TimescaleDB, если тренды разделены на относительно небольшие чанки (например, по 1 дню). Это приводит к наличию сотен чанков в таблицах трендов при настройках housekeeper по умолчанию — в условиях, когда PostgreSQL с высокой вероятностью может исчерпать память.

Проблема была решена начиная с Zabbix 5.0.1 для новых установок с TimescaleDB, однако если TimescaleDB был настроен с Zabbix до этого, ознакомьтесь с примечаниями по миграции в ZBX-16347.

Timescale DB 2.5.0: политика сжатия может завершаться с ошибкой на таблицах, содержащих целые числа

Эта проблема проявляется при использовании TimescaleDB 2.5.0/2.5.1. Она была решена начиная с TimescaleDB 2.5.2.

Для получения дополнительной информации см. TimescaleDB Issue #3773.

TLS-подключение к базе данных с MariaDB

TLS-подключение к базе данных не поддерживается с параметром 'verify_ca' для параметра DBTLSConnect parameter, если используется MariaDB.

Возможные взаимные блокировки с MySQL/MariaDB

При работе под высокой нагрузкой и при участии более чем одного LLD worker возможно возникновение взаимной блокировки, вызванной ошибкой InnoDB, связанной со стратегией блокировки строк (см. ошибку в исходном проекте). Эта ошибка была исправлена в MySQL, начиная с версии 8.0.29, но не в MariaDB. Подробнее см. ZBX-21506.

Глобальная корреляция событий

События могут коррелироваться некорректно, если интервал времени между первым и вторым событием очень мал, то есть полсекунды и меньше.

NetBSD 8.0 и новее

Различные процессы Zabbix могут случайным образом аварийно завершаться при запуске в версиях NetBSD 8.X и 9.X. Это связано со слишком маленьким размером стека по умолчанию (4 МБ), который необходимо увеличить, выполнив:

ulimit -s 10240

Для получения дополнительной информации см. соответствующий отчёт о проблеме: ZBX-18275.

Ограничения регулярных выражений в Zabbix агенте 2

Агент Zabbix 2 не поддерживает просмотр вперед и назад в регулярных выражениях из-за ограничений стандартной библиотеки регулярных выражений Go.

Проверки IPMI

Проверки IPMI не будут работать со стандартным пакетом библиотеки OpenIPMI в Debian до версии 9 (stretch) и Ubuntu до версии 16.04 (xenial). Чтобы исправить это, перекомпилируйте библиотеку OpenIPMI с включенной поддержкой OpenSSL, как описано в ZBX-6139.

IPMI — недоверенные узлы сети могут привести к сбою OpenIPMI

В библиотеке OpenIPMI, используемой Zabbix для опроса данных IPMI, существует ошибка, которая может быть вызвана специально сформированными ответами от недоверенного устройства.
Недоверенное IPMI-устройство может отправить специально сформированные данные, которые приведут к сбою библиотеки OpenIPMI, что, в свою очередь, может вызвать завершение процесса сервера Zabbix, выполняющего опрос IPMI.

SSH-проверки

  • Некоторые дистрибутивы Linux, такие как Debian и Ubuntu, не поддерживают зашифрованные закрытые ключи (с парольной фразой), если библиотека libssh2 установлена из пакетов. Подробнее см. ZBX-4850.
  • При использовании libssh 0.9.x в некоторых дистрибутивах Linux с OpenSSH 8 SSH-проверки могут время от времени сообщать об ошибке "Cannot read data from SSH server". Это вызвано проблемой в libssh (более подробный отчет). Ожидается, что ошибка была исправлена в стабильном выпуске libssh 0.9.5. Подробнее см. ZBX-17756.
  • Использование символа канала "|" в SSH-скрипте может привести к ошибке "Cannot read data from SSH server". В этом случае рекомендуется обновить версию библиотеки libssh. Подробнее см. ZBX-21337.

Проверки ODBC

  • Драйвер MySQL unixODBC не следует использовать с сервером Zabbix или прокси Zabbix, скомпилированными с библиотекой коннектора MariaDB, и наоборот; по возможности также лучше избегать использования того же коннектора в качестве драйвера из-за ошибки в исходном проекте. Рекомендуемая конфигурация:

Коннектор PostgreSQL, SQLite или Oracle → драйвер MariaDB или MySQL unixODBC
Коннектор MariaDB → драйвер MariaDB unixODBC
Коннектор MySQL → драйвер MySQL unixODBC

Дополнительную информацию и доступные обходные решения смотрите в ZBX-7665.

  • XML-данные, запрашиваемые из Microsoft SQL Server, могут усекаться различными способами в системах Linux и UNIX.

  • Было замечено, что использование проверок ODBC для мониторинга баз данных Oracle с различными версиями Oracle Instant Client для Linux приводит к сбою сервера Zabbix.\ См. также: ZBX-18402, ZBX-20803.

  • При использовании драйвера FreeTDS UnixODBC необходимо добавлять оператор 'SET NOCOUNT ON' в начало SQL-запроса (например, SET NOCOUNT ON DECLARE @strsql NVARCHAR(max) SET @strsql = ....). В противном случае элемент данных монитора базы данных в Zabbix не сможет получить информацию и вернет ошибку "SQL query returned empty result".
    Дополнительную информацию смотрите в ZBX-19917.

Некорректный параметр метода запроса в элементах данных

Параметр метода запроса, используемый только в HTTP-проверках, может быть некорректно установлен в значение '1', которое является нестандартным для всех элементов данных, в результате обновления с версии Zabbix до 4.0. Подробную информацию о том, как исправить эту ситуацию, см. в ZBX-19308.

Веб-мониторинг и HTTP агент

Сервер Zabbix допускает утечку памяти в некоторых дистрибутивах Linux из-за ошибки в вышестоящем проекте, когда в веб-сценариях или HTTP агенте включена опция "SSL verify peer". Дополнительную информацию и доступные обходные пути смотрите в ZBX-10486.

Простые проверки

В версиях fping ранее v3.10 присутствует ошибка, из-за которой некорректно обрабатываются дублирующиеся пакеты echo reply. Это может приводить к неожиданным результатам для элементов данных icmpping, icmppingloss, icmppingsec. Рекомендуется использовать последнюю версию fping. Дополнительные сведения см. в ZBX-11726.

Ошибки при выполнении fping в rootless-контейнерах

Когда контейнеры работают в rootless-режиме или в среде с определёнными ограничениями, при выполнении ICMP-проверок вы можете столкнуться с ошибками, связанными с выполнением fping, например fping: Operation not permitted, либо со всеми потерянными пакетами для всех ресурсов.

Чтобы исправить эту проблему, добавьте --cap-add=net_raw к командам "docker run" или "podman run".

Кроме того, выполнение fping в средах без root-прав может потребовать изменения sysctl, например:

sudo sysctl -w "net.ipv4.ping_group_range=0 1995"

где "1995" — это GID zabbix. Подробнее см. ZBX-22833.

SNMP-проверки

Если используется операционная система OpenBSD, ошибка use-after-free в библиотеке Net-SNMP до версии 5.7.3 может привести к сбою сервера Zabbix, если в файле конфигурации сервера Zabbix задан параметр SourceIP. В качестве обходного решения не задавайте параметр SourceIP. Та же проблема также относится к Linux, однако она не приводит к остановке работы сервера Zabbix. Локальный патч для пакета net-snmp в OpenBSD был применён и будет выпущен вместе с OpenBSD 6.3.

Всплески данных SNMP

Наблюдались всплески данных SNMP, которые могут быть связаны с определёнными физическими факторами, такими как скачки напряжения в электросети. Подробнее см. ZBX-14318.

SNMP traps

Пакет "net-snmp-perl", необходимый для SNMP traps, был удален в RHEL 8.0-8.2; повторно добавлен в RHEL 8.3.

Поэтому, если вы используете RHEL 8.0-8.2, наилучшим решением будет обновление до RHEL 8.3.

Дополнительную информацию см. в ZBX-17192.

Сбой процесса alerter в RHEL 7

В RHEL 7 были зафиксированы случаи сбоя процесса alerter сервера Zabbix. Подробности см. в ZBX-10461.

Обновление Zabbix агент 2 (6.0.5 или более ранней версии)

При обновлении Zabbix агент 2 (версии 6.0.5 или более ранней) из пакетов может возникнуть ошибка конфликта файлов, связанная с плагином. Чтобы исправить ошибку, создайте резервную копию конфигурации агент 2 (при необходимости), удалите агент 2 и установите его заново.

В системах на базе RHEL выполните:

dnf remove zabbix-agent2
dnf install zabbix-agent2

В системах на базе Debian выполните:

apt remove zabbix-agent2
apt install zabbix-agent2

Для получения дополнительной информации см. ZBX-23250.

Переключение локалей веб-интерфейса

Было замечено, что локали веб-интерфейса могут переключаться без видимой логики, то есть некоторые страницы (или части страниц) отображаются на одном языке, тогда как другие страницы (или части страниц) — на другом языке. Обычно проблема может возникать, когда есть несколько пользователей, часть из которых использует одну локаль, а другие — другую.

Известный обходной путь — отключить многопоточность в PHP и Apache.

Проблема связана с тем, как работает установка локали в PHP: информация о локали хранится на уровне процесса, а не потока. Поэтому в многопоточной среде, когда несколько проектов выполняются в рамках одного и того же процесса Apache, возможно, что локаль будет изменена в другом потоке, и это повлияет на обработку данных в потоке Zabbix.

Для получения дополнительной информации см. связанные отчёты о проблемах:

  • ZBX-10911 (Проблема с переключением локалей веб-интерфейса)
  • ZBX-16297 (Проблема с обработкой чисел на графиках при использовании функции bcdiv из набора математических функций BC Math)

Графики

Проблемы с графиками (classic)

Если вы сталкиваетесь с проблемами в классических графиках, рекомендуется обновить библиотеку GD (libgd) до версии 2.3.3-13 или выше, а PHP — до версии 8.0.19, 8.1.33, 8.2.29, 8.3.25, 8.4.12 или выше.

Переход на летнее время

Изменения, связанные с переходом на летнее время (DST), приводят к некорректному отображению подписей оси X (дублирование дат, отсутствие дат и т. д.).

Агрегация sum

При использовании агрегации sum в графике для периода менее одного часа графики отображают некорректные (умноженные) значения, когда данные поступают из trends.

Наложение текста

Для некоторых языков веб-интерфейса (например, японского) локальные шрифты могут вызывать наложение текста в легенде графика. Чтобы избежать этого, используйте PHP GD extension версии 2.3.0 (или более поздней).

Мониторинг лог-файлов

Элементы данных log[] и logrt[] повторно перечитывают лог-файл с начала, если файловая система заполнена на 100% и в лог-файл продолжается запись (подробнее см. ZBX-10884).

Медленные запросы MySQL

Сервер Zabbix генерирует медленные запросы SELECT в случае отсутствия значений для элементов данных. Эта проблема известна для версий MySQL 5.6/5.7 (подробное обсуждение см. в ZBX-10652) и в некоторых случаях может также возникать в более поздних версиях MySQL. В качестве обходного решения можно отключить оптимизатор index_condition_pushdown или prefer_ordering_index в MySQL. Однако обратите внимание, что это обходное решение может не устранить все проблемы, связанные с медленными запросами.

Постоянные настройки фильтра из ссылок

При открытии ссылки на страницу веб-интерфейса Zabbix, содержащей настройки фильтра, включая селектор времени, фильтр автоматически сохраняется в базе данных для пользователя, заменяя ранее сохранённый фильтр и/или настройки селектора времени для этой страницы. Эти настройки остаются активными, пока пользователь не обновит или не сбросит их вручную.

Проблема с IPv6-адресом в SNMPv3 трапах

Из-за ошибки в net-snmp IPv6-адрес может отображаться некорректно при использовании SNMPv3 в SNMP трапах. Для получения более подробной информации и возможного обходного решения см. ZBX-14541.

Усечённый длинный IPv6 IP-адрес в информации о неудачном входе

Сообщение о неудачной попытке входа будет отображать только первые 39 символов сохранённого IP-адреса, так как это ограничение количества символов в поле базы данных. Это означает, что IPv6 IP-адреса длиннее 39 символов будут показаны не полностью.

Проверки агента Zabbix в Windows

Несуществующие DNS-записи в параметре Server файла конфигурации агента Zabbix (zabbix_agentd.conf) могут увеличить время отклика агента Zabbix в Windows. Это происходит потому, что служба кэширования DNS в Windows не кэширует отрицательные ответы для IPv4-адресов. Однако для IPv6-адресов отрицательные ответы кэшируются, поэтому возможным обходным решением является отключение IPv4 на узле сети.

Экспорт/импорт YAML

Существует несколько известных проблем с экспортом/импортом YAML:

  • Сообщения об ошибках не переводятся;
  • Корректный JSON с расширением файла .yaml иногда не удаётся импортировать;
  • Даты в удобочитаемом формате без кавычек автоматически преобразуются в метки времени Unix.

Мастер настройки на SUSE с NGINX и php-fpm

Мастер настройки веб-интерфейса не может сохранить файл конфигурации на SUSE с NGINX + php-fpm. Это вызвано настройкой в юните /usr/lib/systemd/system/php-fpm.service, которая не позволяет Zabbix записывать данные в /etc. (введено в PHP 7.4).

Доступны два варианта обходного решения:

  • Установите для параметра ProtectSystem значение 'true' вместо 'full' в systemd-юните php-fpm.
  • Сохраните файл /etc/zabbix/web/zabbix.conf.php вручную.

Перенаправление заголовка Authorization

В некоторых случаях Apache или NGINX могут препятствовать тому, чтобы заголовок Authorization в API-запросах достигал Zabbix. Это может вызывать проблемы с аутентификацией при использовании Zabbix API или служб единого входа (SSO), таких как SAML с Okta.

Чтобы решить эту проблему, обновите конфигурацию вашего веб-сервера.

Для Apache, если вы используете его как обратный прокси (настройка без CGI), добавьте следующую директиву в /etc/httpd/conf/httpd.conf (в системах на базе RHEL) или /etc/apache2/apache2.conf (в Debian/Ubuntu):

SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1

Если Apache напрямую выполняет скрипты для обработки запросов (например, с использованием mod_cgi), вместо этого добавьте следующую директиву:

CGIPassAuth On

В отличие от этого, NGINX обрабатывает заголовок Authorization автоматически. Однако, если NGINX работает как обратный прокси, вы можете явно перенаправить заголовок Authorization, добавив следующие директивы в /etc/nginx/nginx.conf (для расположения веб-интерфейса Zabbix):

...
location / {
...
    proxy_set_header Authorization $http_authorization;
    proxy_pass http://backend_server;
...
}

После обновления конфигурации перезапустите ваш веб-сервер.

Дополнительные сведения см. в:

Chromium для веб-службы Zabbix в Ubuntu 20

Хотя в большинстве случаев веб-служба Zabbix может работать с Chromium, в Ubuntu 20.04 использование Chromium вызывает следующую ошибку:

Cannot fetch data: chrome failed to start:cmd_run.go:994:
WARNING: cannot create user data directory: cannot create 
"/var/lib/zabbix/snap/chromium/1564": mkdir /var/lib/zabbix: permission denied
Sorry, home directories outside of /home are not currently supported. See https://forum.snapcraft.io/t/11209 for details.

Эта ошибка возникает, потому что /var/lib/zabbix используется как домашний каталог пользователя 'zabbix'.

Пользовательские коды ошибок MySQL

Когда Zabbix обнаруживает, что внутренняя база данных недоступна, он отправляет уведомление и продолжает попытки подключения. Для некоторых СУБД распознаются определённые коды ошибок. В MySQL к таким распознаваемым кодам ошибок относятся:

  • CR_CONN_HOST_ERROR
  • CR_SERVER_GONE_ERROR
  • CR_CONNECTION_ERROR
  • CR_SERVER_LOST
  • CR_UNKNOWN_HOST
  • ER_SERVER_SHUTDOWN
  • ER_ACCESS_DENIED_ERROR
  • ER_ILLEGAL_GRANT_FOR_TABLE
  • ER_TABLEACCESS_DENIED_ERROR
  • ER_UNKNOWN_ERROR

Кроме того, при использовании Zabbix с установленной в Azure MySQL в журналах Zabbix может появляться общее сообщение об ошибке [9002] Some errors occurred. Это сообщение отправляется базой данных на сервер или прокси Zabbix. Чтобы определить причину ошибки, обратитесь к журналам Azure.

Недопустимые регулярные выражения после перехода на PCRE2

В Zabbix 6.0 была добавлена поддержка PCRE2. Хотя PCRE по-прежнему поддерживается, установочные пакеты Zabbix для RHEL 7 и новее, SLES (всех версий), Debian 9 и новее, Ubuntu 16.04 и новее были обновлены для использования PCRE2. Несмотря на множество преимуществ, переход на PCRE2 может привести к тому, что некоторые существующие шаблоны регулярных выражений PCRE станут недопустимыми или будут работать иначе. В частности, это затрагивает шаблон \^[\w-\.]. Чтобы снова сделать это регулярное выражение допустимым без изменения семантики, измените выражение на \^[-\w\.] . Это происходит потому, что PCRE2 рассматривает знак дефиса как разделитель, создавая диапазон внутри символьного класса.

Ошибка виджета Geomap

Карты в виджете Geomap могут загружаться некорректно, если вы обновились со старой версии Zabbix с NGINX и во время обновления не переключились на новый файл конфигурации NGINX.

Чтобы устранить проблему, вы можете удалить старый файл конфигурации, использовать файл конфигурации из пакета текущей версии и заново настроить его, как описано в инструкциях по загрузке в разделе e. Configure PHP for Zabbix frontend.

Кроме того, вы можете вручную отредактировать существующий файл конфигурации NGINX (обычно /etc/zabbix/nginx.conf). Для этого откройте файл и найдите следующий блок:

location ~ /(api\/|conf[^\.]|include|locale|vendor) {
        deny            all;
        return          404;
}

Затем замените этот блок на:

location ~ /(api\/|conf[^\.]|include|locale) {
        deny            all;
        return          404;
}

location /vendor {
        deny            all;
        return          404;
}

Предобработка — глобальные переменные небезопасны

JavaScript в предобработке выполняется для каждого запроса, однако присваивания необъявленным идентификаторам (например, secret = value) создают неявные глобальные переменные, которые могут сохраняться после завершения текущего выполнения. Хранение конфиденциальных данных (токенов, паролей и т. д.) в неявных глобальных переменных повышает риск их случайного раскрытия или повторного использования при последующих запусках предобработки либо другими интеграциями, выполняющимися в той же среде.

Не полагайтесь на неявные глобальные переменные. Всегда объявляйте переменные с помощью var или const и не привязывайте секретные данные к глобальным объектам (например, globalThis или window). Поддерживаемого способа переопределить встроенные глобальные объекты из предобработки не существует.

Безопасный пример:

var apiToken = payload.token;
var count = 1;
return JSON.stringify({ token: apiToken, calls: count });

Группы процессоров в Windows

Согласно документации Microsoft, системы с менее чем 64 логическими процессорами всегда имеют одну группу процессоров — Group 0. Однако пользователи Zabbix сообщали о редкой ошибке ZBX-20260, когда в системах с 64 или менее логическими процессорами присутствуют две группы процессоров. Это приводило к тому, что счётчики производительности "\Processor(n)" были доступны только для одной из двух групп процессоров. Фактическая первопричина этой ошибки неизвестна. Однако похожий случай описан на stackoverflow.com, и его первопричина заключалась во взаимодействии между BIOS и Windows.

Ограничения фильтрации с сопоставлениями utf8mb4

Фильтры (например, в Сбор данных > Обслуживание) могут работать некорректно при применении к сущностям, содержащим определенные символы Unicode (например, ȼ, ɇ). Эта проблема возникает из-за того, как сопоставление utf8mb4_bin по умолчанию для баз данных MySQL или MariaDB обрабатывает сортировку и сравнение символов Unicode.

Чтобы устранить это ограничение, пользователи могут изменить сопоставление столбцов базы данных на альтернативные варианты, такие как utf8mb4_0900_bin, utf8mb4_0900_ai_ci или utf8mb4_unicode_520_ci. Однако обратите внимание, что изменение сопоставления может вызвать неожиданное поведение при обработке пробелов, а также при сортировке и фильтрации других символов.

Дополнительную информацию об изменении сопоставлений см. в документации MySQL или документации MariaDB. Подробные сведения о различиях между сопоставлениями см. в разделе Unicode Character Sets документации MySQL.

Доступ к элементам пользовательского интерфейса с MariaDB 10.5.1–10.5.9

При доступе к веб-интерфейсу Zabbix с ролью, отличной от Super Admin, может появиться сообщение: «Произошла системная ошибка. Пожалуйста, свяжитесь с администратором Zabbix.». Эта проблема затрагивает установки, использующие версии MariaDB с 10.5.1 по 10.5.9.

Чтобы избежать этой проблемы, обновите MariaDB до версии выше 10.5.9. Подробнее см. ZBX-25746.

Профилирование чрезмерного использования памяти с помощью tcmalloc

Если вы подозреваете, что ваша установка Zabbix использует слишком много памяти, вы можете воспользоваться функцией профилирования памяти tcmalloc, чтобы исследовать потребление памяти сервером/прокси Zabbix.

1. При установке Zabbix из исходного кода укажите дополнительные флаги:

export CFLAGS="-std=gnu99 -g -O0"

Флаг -std=gnu99 требуется для сборки сервера Zabbix, прокси Zabbix или агента Zabbix. Флаг -g добавляет дополнительную отладочную информацию, а -O0 отключает оптимизации, которые могут мешать профилированию tcmalloc.

2. Перед запуском сервера Zabbix задайте следующие переменные окружения. Эти переменные указывают tcmalloc, как отслеживать использование памяти и формировать отчёты:

LD_PRELOAD="/usr/lib/aarch64-linux-gnu/libtcmalloc.so" \
HEAPPROFILE=./heap_profile \
HEAP_PROFILE_ALLOCATION_INTERVAL=0 \
HEAP_PROFILE_INUSE_INTERVAL=4294967296 \
HEAPPROFILESIGNAL=5 \
MALLOCSTATS=1 \
./sbin/zabbix_server -f -c /etc/zabbix/zabbix_server.conf

3. Вызовите дамп профиля, отправив сигнал 5 целевому процессу. Замените 1234 на фактический идентификатор процесса (PID):

kill -5 1234

4. Выведите созданный профиль:

pprof-symbolize -text ./sbin/zabbix_server ./heap_profile.0001.heap

Using local file ./sbin/zabbix_server.
Using local file ./heap_profile.0001.heap.
Total: 1078.1 MB
  1076.8  99.9%  99.9%   1076.8  99.9% zbx_malloc2
     1.0   0.1% 100.0%      1.0   0.1% __GI___strdup
     0.2   0.0% 100.0%      0.2   0.0% CRYPTO_zalloc@@OPENSSL_3.0.0
     0.1   0.0% 100.0%      0.1   0.0% OPENSSL_LH_insert@@OPENSSL_3.0.0
     0.0   0.0% 100.0%      0.0   0.0% zbx_realloc2
     0.0   0.0% 100.0%      0.1   0.0% PKCS7_decrypt@@OPENSSL_3.0.0
     0.0   0.0% 100.0%      0.0   0.0% find_best_tree_node
     0.0   0.0% 100.0%      0.0   0.0% CRYPTO_strndup@@OPENSSL_3.0.0
     ...
     0.0   0.0% 100.0%      0.0   0.0% preprocessing_flush_value
     0.0   0.0% 100.0%   1074.0  99.6% preprocessor_add_request

В этом примере zbx_malloc2 отвечает почти за все выделения памяти.

См. также:

  • ZBX-25050 и ZBX-25584 для связанных отчётов о проблемах.
  • GCC Option Summary о параметрах компиляции (-std=gnu99, -g, -O0 и т. д.).
  • Документацию Gperftools Heap Profiler о переменных окружения для профилирования tcmalloc.

MySQL 8.0 Group Replication в режиме multi-primary

При использовании MySQL 8.0 Group Replication в режиме multi-primary вы можете столкнуться с ошибкой во время фиксации транзакций, похожей на следующую:

1531697:20250128:064734.697 query [txnlev:1] [update alerts set status=1,retries=0,error='' where alertid=154618;
1531697:20250128:064734.713 query [txnlev:1] [commit;]
1531697:20250128:064734.753 [Z3005] query failed: [3101] Plugin instructed the server to rollback the current transaction. [commit;]

Похоже, что эта ошибка вызвана проблемами с операциями отката, связанными с ограничениями внешних ключей.

См. также: