- Известные проблемы
- Обновление
- Шаблоны
- Случайная установка пакетов Zabbix из EPEL
- Пакеты Zabbix для RHEL в средах Red Hat UBI
- Истёкший ключ подписи для пакетов RHEL
- Timescale DB: высокое потребление памяти при большом количестве партиций
- Timescale DB 2.5.0: политика сжатия может завершаться с ошибкой на таблицах, содержащих целые числа
- TLS-подключение к базе данных с MariaDB
- Возможные взаимные блокировки с MySQL/MariaDB
- Глобальная корреляция событий
- NetBSD 8.0 и новее
- Ограничения регулярных выражений в Zabbix агенте 2
- Проверки IPMI
- IPMI — недоверенные узлы сети могут привести к сбою OpenIPMI
- SSH-проверки
- Проверки ODBC
- Некорректный параметр метода запроса в элементах данных
- Веб-мониторинг и HTTP агент
- Простые проверки
- Ошибки при выполнении fping в rootless-контейнерах
- SNMP-проверки
- Всплески данных SNMP
- SNMP traps
- Сбой процесса alerter в RHEL 7
- Обновление Zabbix агент 2 (6.0.5 или более ранней версии)
- Переключение локалей веб-интерфейса
- Графики
- Мониторинг лог-файлов
- Медленные запросы MySQL
- Постоянные настройки фильтра из ссылок
- Проблема с IPv6-адресом в SNMPv3 трапах
- Усечённый длинный IPv6 IP-адрес в информации о неудачном входе
- Проверки агента Zabbix в Windows
- Экспорт/импорт YAML
- Мастер настройки на SUSE с NGINX и php-fpm
- Перенаправление заголовка Authorization
- Chromium для веб-службы Zabbix в Ubuntu 20
- Пользовательские коды ошибок MySQL
- Недопустимые регулярные выражения после перехода на PCRE2
- Ошибка виджета Geomap
- Предобработка — глобальные переменные небезопасны
- Группы процессоров в Windows
- Ограничения фильтрации с сопоставлениями utf8mb4
- Доступ к элементам пользовательского интерфейса с MariaDB 10.5.1–10.5.9
- Профилирование чрезмерного использования памяти с помощью tcmalloc
- MySQL 8.0 Group Replication в режиме multi-primary
Известные проблемы
См. также: Проблемы компиляции.
Обновление
Настройка 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;
...
}
После обновления конфигурации перезапустите ваш веб-сервер.
Дополнительные сведения см. в:
- ZBX-22952
- Apache 2.4 + PHP-FPM and Authorization headers
- Директивы SetEnvIfNoCase и CGIPassAuth
- NGINX Reverse Proxy
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;]
Похоже, что эта ошибка вызвана проблемами с операциями отката, связанными с ограничениями внешних ключей.
См. также:
- ZBX-26060 для связанного отчёта о проблеме.
- MySQL Bug #96758 "Rollbacks with Foreign Keys on single node" для информации о проблеме в исходном проекте.