- Znane problemy
- Aktualizacja
- Szablony
- Przypadkowa instalacja pakietów Zabbix z EPEL
- Pakiety Zabbix dla RHEL w środowiskach Red Hat UBI
- Wygasły klucz podpisujący dla pakietów RHEL
- Timescale DB: wysokie użycie pamięci przy dużej liczbie partycji
- Timescale DB 2.5.0: polityka kompresji może zakończyć się niepowodzeniem w tabelach zawierających liczby całkowite
- Połączenie TLS z bazą danych przy użyciu MariaDB
- Możliwe zakleszczenia z MySQL/MariaDB
- Globalna korelacja zdarzeń
- NetBSD 8.0 i nowsze
- Ograniczenia wyrażeń regularnych w Zabbix agent 2
- Kontrole IPMI
- IPMI — niezaufane hosty mogą powodować awarię OpenIPMI
- Kontrole SSH
- Kontrole ODBC
- Nieprawidłowy parametr metody żądania w pozycjach
- Monitorowanie WWW i agent HTTP
- Proste testy
- Błędy wykonywania fping w kontenerach rootless
- Kontrole SNMP
- Skoki danych SNMP
- Pułapki SNMP
- Awaria procesu alerter w RHEL 7
- Aktualizacja Zabbix agent 2 (6.0.5 lub starszy)
- Przełączanie ustawień regionalnych frontend
- Wykresy
- Monitorowanie plików dziennika
- Wolne zapytania MySQL
- Trwałe ustawienia filtra z linków
- Problem z adresem IPv6 w pułapkach SNMPv3
- Przycięty długi adres IPv6 w informacji o nieudanym logowaniu
- Kontrole Zabbix agent w systemie Windows
- Eksport/import YAML
- Kreator konfiguracji na SUSE z NGINX i php-fpm
- Przekazywanie nagłówka Authorization
- Chromium dla usługi web Zabbix w Ubuntu 20
- Niestandardowe kody błędów MySQL
- Nieprawidłowe wyrażenia regularne po przełączeniu na PCRE2
- Błąd widżetu Geomap
- Wstępne przetwarzanie — zmienne globalne są niebezpieczne
- Grupy procesorów w systemie Windows
- Ograniczenia filtrowania przy użyciu porównań utf8mb4
- Dostęp do elementów interfejsu użytkownika przy użyciu MariaDB 10.5.1–10.5.9
- Profilowanie nadmiernego użycia pamięci za pomocą tcmalloc
- Replikacja grupowa MySQL 8.0 w trybie multi-primary
Znane problemy
Zobacz także: Problemy z kompilacją.
Aktualizacja
Ustawienie trybu SQL dla pomyślnej aktualizacji
Ustawienie sql_mode w MySQL/MariaDB musi mieć ustawiony tryb "STRICT_TRANS_TABLES".
Jeśli go brakuje, aktualizacja bazy danych Zabbix zakończy się niepowodzeniem (zobacz także ZBX-19435).
Aktualizacja z MariaDB 10.2.1 i wcześniejszą
Aktualizacja Zabbix może się nie powieść, jeśli tabele bazy danych zostały utworzone przy użyciu MariaDB 10.2.1 lub wcześniejszej, ponieważ w tych wersjach domyślny format wiersza to compact. Można to naprawić, zmieniając format wiersza na dynamic (zobacz także ZBX-17690).
Szablony
Zgodność szablonów w środowiskach dual-stack (IPv4/IPv6)
W środowiskach dual-stack (systemach skonfigurowanych do obsługi zarówno IPv4, jak i IPv6) nazwa hosta localhost zwykle jest rozwiązywana zarówno do adresów IPv4, jak i IPv6.
Ze względu na częste priorytetyzowanie IPv6 względem IPv4 przez wiele systemów operacyjnych i resolverów DNS, szablony Zabbix mogą nie działać poprawnie, jeśli monitorowana usługa jest skonfigurowana do nasłuchiwania wyłącznie na IPv4.
Usługi, które nie są skonfigurowane do nasłuchiwania na adresach IPv6, mogą stać się niedostępne, co prowadzi do niepowodzeń monitorowania. Użytkownicy mogą poprawnie skonfigurować dostęp dla IPv4, a mimo to nadal napotykać problemy z łącznością z powodu domyślnego zachowania polegającego na priorytetyzowaniu IPv6.
Obejściem tego problemu jest upewnienie się, że usługi (Nginx, Apache, PostgreSQL itp.) są skonfigurowane do nasłuchiwania zarówno na adresach IPv4, jak i IPv6, a serwer/agent Zabbix ma dozwolony dostęp przez IPv6.
Dodatkowo w szablonach i konfiguracjach Zabbix należy jawnie używać localhost zamiast 127.0.0.1, aby zapewnić zgodność zarówno z IPv4, jak i IPv6.
Na przykład, podczas monitorowania PostgreSQL za pomocą szablonu PostgreSQL by Zabbix agent 2, może być konieczna edycja pliku pg_hba.conf, aby zezwolić na połączenia dla użytkownika zbx_monitor.
Jeśli środowisko dual-stack nadaje priorytet IPv6 (system rozwiązuje localhost do ::1) i skonfigurujesz localhost, ale dodasz tylko wpis IPv4 (127.0.0.1/32), połączenie zakończy się niepowodzeniem, ponieważ nie ma pasującego wpisu IPv6.
Poniższy przykład pliku pg_hba.conf zapewnia, że użytkownik zbx_monitor może łączyć się z dowolną bazą danych z lokalnej maszyny przy użyciu zarówno adresów IPv4, jak i IPv6, z różnymi metodami uwierzytelniania:
# 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
W razie potrzeby można również użyć bezpośrednio adresu IPv4 (127.0.0.1) podczas konfigurowania makra szablonu PostgreSQL by Zabbix agent 2 dla ciągu połączenia.
Przypadkowa instalacja pakietów Zabbix z EPEL
Jeśli repozytorium EPEL jest zainstalowane i włączone, instalacja pakietów Zabbix może spowodować pobranie wersji z EPEL zamiast oficjalnych pakietów Zabbix. Aby rozwiązać ten problem:
1. Usuń wszystkie pakiety Zabbix zainstalowane z EPEL:
dnf remove zabbix-server-mysql
2. Wyklucz pakiety Zabbix z EPEL, dodając następujący wiersz do pliku /etc/yum.repos.d/epel.repo:
[epel]
...
excludepkgs=zabbix*
3.\ Zainstaluj ponownie oficjalny pakiet serwera Zabbix:
dnf install zabbix-server-mysql
Podczas instalacji oficjalne pakiety Zabbix zawierają słowo release w ciągu wersji (na przykład 7.0.0-release1.el8), co odróżnia je od pakietów EPEL.
Pakiety Zabbix dla RHEL w środowiskach Red Hat UBI
Podczas instalacji Zabbix z pakietów Red Hat Enterprise Linux w środowiskach Red Hat Universal Base Image należy zapewnić dostęp do wymaganych repozytoriów i zależności.
Pakiety Zabbix zależą od bibliotek libOpenIPMI.so i libOpenIPMIposix.so, które nie są dostarczane przez żaden pakiet w domyślnych repozytoriach menedżera pakietów włączonych w systemach UBI, co spowoduje niepowodzenie instalacji.
Biblioteki libOpenIPMI.so i libOpenIPMIposix.so są dostępne w pakiecie OpenIPMI-libs, który jest udostępniany przez repozytorium redhat-#-for-<arch>-appstream-rpms.
Dostęp do tego repozytorium jest regulowany przez subskrypcje, które w przypadku środowisk UBI są propagowane przez montowanie katalogów konfiguracji repozytoriów i sekretów hosta RHEL do przestrzeni nazw systemu plików kontenera.
Aby uzyskać więcej informacji, zobacz ZBX-24291.
Wygasły klucz podpisujący dla pakietów RHEL
Podczas aktualizacji Zabbix w systemie Red Hat Enterprise Linux lub jego pochodnych możesz napotkać problem z wygasłym kluczem podpisującym pakiety w repozytorium Zabbix. Gdy klucz podpisujący wygaśnie, próby weryfikacji podpisów pakietów zakończą się błędem wskazującym, że certyfikat lub klucz nie jest już ważny. Na przykład:
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
Aby rozwiązać taki problem, ręcznie zainstaluj ponownie najnowszy pakiet zabbix-release dla konkretnego wariantu RHEL (zastąp poniższy link właściwym linkiem z repozytorium Zabbix).
Na przykład w systemie RHEL 10 uruchom:
rpm -Uvh https://repo.zabbix.com/zabbix/8.0/release/rhel/10/noarch/zabbix-release-latest.el10.noarch.rpm
Następnie zaktualizuj informacje o repozytorium:
dnf update
Więcej informacji znajdziesz w ZBX-24761.
Timescale DB: wysokie użycie pamięci przy dużej liczbie partycji
Wersje PostgreSQL 9.6-12 zużywają zbyt dużo pamięci podczas aktualizacji tabel z dużą liczbą partycji. Problem ten ujawnia się, gdy Zabbix aktualizuje trendy w systemach z TimescaleDB, jeśli trendy są podzielone na relatywnie małe fragmenty (np. 1 dzień). Prowadzi to do obecności setek fragmentów w tabelach trendów przy domyślnych ustawieniach housekeeping — jest to sytuacja, w której PostgreSQL może najprawdopodobniej wyczerpać pamięć.
Problem został rozwiązany od Zabbix 5.0.1 dla nowych instalacji z TimescaleDB, ale jeśli TimescaleDB skonfigurowano z Zabbix wcześniej, zapoznaj się z ZBX-16347, aby sprawdzić uwagi dotyczące migracji.
Timescale DB 2.5.0: polityka kompresji może zakończyć się niepowodzeniem w tabelach zawierających liczby całkowite
Problem ten występuje podczas używania TimescaleDB 2.5.0/2.5.1. Został on rozwiązany od TimescaleDB 2.5.2.
Aby uzyskać więcej informacji, zobacz TimescaleDB Issue #3773.
Połączenie TLS z bazą danych przy użyciu MariaDB
Połączenie TLS z bazą danych nie jest obsługiwane z opcją 'verify_ca' dla parametru DBTLSConnect, jeśli używana jest MariaDB.
Możliwe zakleszczenia z MySQL/MariaDB
Podczas pracy pod dużym obciążeniem, gdy zaangażowany jest więcej niż jeden worker LLD, może dojść do zakleszczenia spowodowanego błędem InnoDB związanym ze strategią blokowania wierszy (zobacz błąd upstream). Błąd został naprawiony w MySQL od wersji 8.0.29, ale nie w MariaDB. Więcej informacji można znaleźć w ZBX-21506.
Globalna korelacja zdarzeń
Zdarzenia mogą nie zostać skorelowane poprawnie, jeśli odstęp czasu między pierwszym a drugim zdarzeniem jest bardzo mały, tj. pół sekundy lub mniej.
NetBSD 8.0 i nowsze
Różne procesy Zabbix mogą losowo ulegać awarii podczas uruchamiania w wersjach NetBSD 8.X i 9.X. Jest to spowodowane zbyt małym domyślnym rozmiarem stosu (4 MB), który należy zwiększyć, uruchamiając:
ulimit -s 10240
Aby uzyskać więcej informacji, zobacz powiązane zgłoszenie problemu: ZBX-18275.
Ograniczenia wyrażeń regularnych w Zabbix agent 2
Zabbix agent 2 nie obsługuje asercji lookahead i lookbehind w wyrażeniach regularnych ze względu na ograniczenia standardowej biblioteki Go regexp.
Kontrole IPMI
Kontrole IPMI nie będą działać ze standardowym pakietem biblioteki OpenIPMI w Debianie wcześniejszym niż 9 (stretch) oraz Ubuntu wcześniejszym niż 16.04 (xenial). Aby to naprawić, należy ponownie skompilować bibliotekę OpenIPMI z włączoną obsługą OpenSSL, jak omówiono w ZBX-6139.
IPMI — niezaufane hosty mogą powodować awarię OpenIPMI
W bibliotece OpenIPMI używanej przez Zabbix do odpytywania danych IPMI występuje błąd, który może zostać wywołany przez specjalnie spreparowane odpowiedzi z niezaufanego urządzenia.
Niezaufane urządzenie IPMI może wysyłać spreparowane dane, które powodują awarię biblioteki OpenIPMI, co z kolei może doprowadzić do zakończenia procesu serwera Zabbix wykonującego odpytywanie IPMI.
Kontrole SSH
- Niektóre dystrybucje Linuksa, takie jak Debian i Ubuntu, nie obsługują zaszyfrowanych kluczy prywatnych (z hasłem) w przypadku, gdy biblioteka libssh2 jest zainstalowana z pakietów. Więcej informacji znajduje się w ZBX-4850.
- W przypadku używania libssh 0.9.x w niektórych dystrybucjach Linuksa z OpenSSH 8, kontrole SSH mogą sporadycznie zgłaszać błąd „Cannot read data from SSH server”. Jest to spowodowane problemem w libssh (bardziej szczegółowy raport). Oczekuje się, że błąd został naprawiony w stabilnym wydaniu libssh 0.9.5. Szczegóły znajdują się także w ZBX-17756.
- Użycie znaku potoku „|” w skrypcie SSH może prowadzić do błędu „Cannot read data from SSH server”. W takim przypadku zaleca się aktualizację wersji biblioteki libssh. Szczegóły znajdują się także w ZBX-21337.
Kontrole ODBC
- Sterownik MySQL unixODBC nie powinien być używany z serwerem Zabbix ani proxy Zabbix skompilowanymi z biblioteką łącznika MariaDB i odwrotnie; jeśli to możliwe, lepiej również unikać używania tego samego łącznika co sterownika ze względu na błąd po stronie projektu upstream. Zalecana konfiguracja:
Łącznik PostgreSQL, SQLite lub Oracle → sterownik MariaDB lub MySQL unixODBC Łącznik MariaDB → sterownik MariaDB unixODBC Łącznik MySQL → sterownik MySQL unixODBC
Więcej informacji oraz dostępne obejścia można znaleźć w ZBX-7665.
-
Dane XML pobierane z Microsoft SQL Server mogą być obcinane na różne sposoby w systemach Linux i UNIX.
-
Zaobserwowano, że używanie kontroli ODBC do monitorowania baz danych Oracle przy użyciu różnych wersji Oracle Instant Client dla systemu Linux powoduje awarie serwera Zabbix.\ Zobacz także: ZBX-18402, ZBX-20803.
-
W przypadku używania sterownika FreeTDS UnixODBC należy dodać na początku zapytania SQL instrukcję 'SET NOCOUNT ON' (na przykład
SET NOCOUNT ON DECLARE @strsql NVARCHAR(max) SET @strsql = ....). W przeciwnym razie pozycja monitorowania bazy danych w Zabbix nie będzie mogła pobrać informacji i zwróci błąd "Zapytanie SQL zwróciło pusty wynik".
Więcej informacji można znaleźć w ZBX-19917.
Nieprawidłowy parametr metody żądania w pozycjach
Parametr metody żądania, używany wyłącznie w kontrolach HTTP, może być nieprawidłowo ustawiony na „1”, czyli wartość inną niż domyślna dla wszystkich pozycji, w wyniku aktualizacji z wersji Zabbix starszej niż 4.0. Szczegółowe informacje o tym, jak naprawić tę sytuację, można znaleźć w ZBX-19308.
Monitorowanie WWW i agent HTTP
Serwer Zabbix powoduje wyciek pamięci w niektórych dystrybucjach Linuksa z powodu błędu upstream, gdy opcja „SSL verify peer” jest włączona w scenariuszach WWW lub w agencie HTTP. Więcej informacji oraz dostępne obejścia problemu można znaleźć w ZBX-10486.
Proste testy
W wersjach fping wcześniejszych niż v3.10 występuje błąd powodujący nieprawidłową obsługę zduplikowanych pakietów odpowiedzi echo.
Może to powodować nieoczekiwane wyniki dla pozycji icmpping, icmppingloss, icmppingsec.
Zaleca się używanie najnowszej wersji fping.
Więcej szczegółów można znaleźć w ZBX-11726.
Błędy wykonywania fping w kontenerach rootless
Gdy kontenery działają w trybie rootless lub w środowisku z określonymi ograniczeniami, podczas wykonywania kontroli ICMP mogą wystąpić błędy związane z uruchamianiem fping, takie jak fping: Operation not permitted lub utrata wszystkich pakietów do wszystkich zasobów.
Aby rozwiązać ten problem, dodaj --cap-add=net_raw do poleceń "docker run" lub "podman run".
Dodatkowo uruchamianie fping w środowiskach bez uprawnień roota może wymagać modyfikacji sysctl, tj.:
sudo sysctl -w "net.ipv4.ping_group_range=0 1995"
gdzie "1995" to GID użytkownika zabbix. Więcej informacji można znaleźć w ZBX-22833.
Kontrole SNMP
Jeśli używany jest system operacyjny OpenBSD, błąd use-after-free w bibliotece Net-SNMP do wersji 5.7.3 może spowodować awarię serwera Zabbix, jeśli parametr SourceIP jest ustawiony w pliku konfiguracyjnym serwera Zabbix. Jako obejście problemu nie należy ustawiać parametru SourceIP. Ten sam problem dotyczy również systemu Linux, ale nie powoduje zatrzymania pracy serwera Zabbix. Lokalna poprawka dla pakietu net-snmp w OpenBSD została zastosowana i zostanie wydana wraz z OpenBSD 6.3.
Skoki danych SNMP
Zaobserwowano skoki danych SNMP, które mogą być związane z pewnymi czynnikami fizycznymi, takimi jak skoki napięcia w sieci elektrycznej. Więcej szczegółów znajduje się w ZBX-14318.
Pułapki SNMP
Pakiet "net-snmp-perl", wymagany do obsługi pułapek SNMP, został usunięty w RHEL 8.0-8.2; ponownie dodany w RHEL 8.3.
Jeśli więc używasz RHEL 8.0-8.2, najlepszym rozwiązaniem jest aktualizacja do RHEL 8.3.
Aby uzyskać więcej informacji, zobacz także ZBX-17192.
Awaria procesu alerter w RHEL 7
W RHEL 7 odnotowano przypadki awarii procesu alerter serwera Zabbix. Szczegółowe informacje znajdują się w ZBX-10461.
Aktualizacja Zabbix agent 2 (6.0.5 lub starszy)
Podczas aktualizacji Zabbix agent 2 (wersja 6.0.5 lub starsza) z pakietów może wystąpić błąd konfliktu plików związany z wtyczkami. Aby naprawić ten błąd, wykonaj kopię zapasową konfiguracji agent 2 (jeśli to konieczne), odinstaluj agent 2 i zainstaluj go ponownie.
W systemach opartych na RHEL uruchom:
dnf remove zabbix-agent2
dnf install zabbix-agent2
W systemach opartych na Debian uruchom:
apt remove zabbix-agent2
apt install zabbix-agent2
Aby uzyskać więcej informacji, zobacz ZBX-23250.
Przełączanie ustawień regionalnych frontend
Zaobserwowano, że ustawienia regionalne frontend mogą zmieniać się bez wyraźnej logiki, tzn. niektóre strony (lub części stron) są wyświetlane w jednym języku, podczas gdy inne strony (lub części stron) w innym języku. Zwykle problem może wystąpić, gdy jest kilku użytkowników, z których część używa jednych ustawień regionalnych, a pozostali innych.
Znanym obejściem tego problemu jest wyłączenie wielowątkowości w PHP i Apache.
Problem jest związany ze sposobem działania ustawiania locale w PHP: informacje o locale są utrzymywane na poziomie procesu, a nie wątku. Dlatego w środowisku wielowątkowym, gdy kilka projektów jest uruchamianych przez ten sam proces Apache, możliwe jest, że locale zostanie zmienione w innym wątku, co wpływa na sposób przetwarzania danych w wątku Zabbix.
Więcej informacji można znaleźć w powiązanych zgłoszeniach problemów:
- ZBX-10911 (Problem z przełączaniem ustawień regionalnych frontend)
- ZBX-16297 (Problem z przetwarzaniem liczb na wykresach przy użyciu funkcji
bcdivz zestawu funkcji BC Math)
Wykresy
Problemy z wykresami (klasycznymi)
Jeśli napotkasz problemy z klasycznymi wykresami, zaleca się aktualizację biblioteki GD (libgd) do wersji 2.3.3-13 lub nowszej oraz PHP do wersji 8.0.19, 8.1.33, 8.2.29, 8.3.25, 8.4.12 lub nowszej.
Czas letni
Zmiany związane z czasem letnim (DST) powodują nieprawidłowości podczas wyświetlania etykiet osi X (duplikacja dat, brak dat itp.).
Agregacja sumy
W przypadku użycia agregacji sumy na wykresie dla okresu krótszego niż jedna godzina, wykresy wyświetlają nieprawidłowe (pomnożone) wartości, gdy dane pochodzą z trendów.
Nakładanie się tekstu
W przypadku niektórych języków frontendu (np. japońskiego) lokalne czcionki mogą powodować nakładanie się tekstu w legendzie wykresu. Aby tego uniknąć, użyj PHP GD extension w wersji 2.3.0 (lub nowszej).
Monitorowanie plików dziennika
Pozycje log[] i logrt[] wielokrotnie odczytują ponownie plik dziennika od początku, jeśli system plików jest zapełniony w 100% i do pliku dziennika są dopisywane nowe dane (więcej informacji można znaleźć w ZBX-10884).
Wolne zapytania MySQL
Serwer Zabbix generuje wolne zapytania SELECT w przypadku nieistniejących wartości dla pozycji.
Ten problem występuje w wersjach MySQL 5.6/5.7 (szersze omówienie znajduje się w ZBX-10652) i w określonych przypadkach może również występować w nowszych wersjach MySQL.
Obejściem tego problemu jest wyłączenie optymalizatora index_condition_pushdown lub prefer_ordering_index w MySQL.
Należy jednak pamiętać, że to obejście może nie rozwiązać wszystkich problemów związanych z wolnymi zapytaniami.
Trwałe ustawienia filtra z linków
Po otwarciu linku do strony Zabbix frontend, który zawiera ustawienia filtra, w tym selektor czasu, filtr jest automatycznie zapisywany w bazie danych dla użytkownika, zastępując wcześniej zapisany filtr i/lub ustawienia selektora czasu dla tej strony. Ustawienia te pozostają aktywne, dopóki użytkownik nie zaktualizuje ich ręcznie lub nie zresetuje.
Problem z adresem IPv6 w pułapkach SNMPv3
Z powodu błędu net-snmp adres IPv6 może nie być poprawnie wyświetlany podczas używania SNMPv3 w pułapkach SNMP. Więcej szczegółów oraz możliwe obejście problemu można znaleźć w ZBX-14541.
Przycięty długi adres IPv6 w informacji o nieudanym logowaniu
Komunikat o nieudanej próbie logowania wyświetli tylko pierwsze 39 znaków zapisanego adresu IP, ponieważ jest to limit znaków w polu bazy danych. Oznacza to, że adresy IPv6 dłuższe niż 39 znaków będą wyświetlane niekompletnie.
Kontrole Zabbix agent w systemie Windows
Nieistniejące wpisy DNS w parametrze Server pliku konfiguracyjnego Zabbix agent (zabbix_agentd.conf) mogą wydłużyć czas odpowiedzi Zabbix agent w systemie Windows.
Dzieje się tak, ponieważ demon buforowania DNS systemu Windows nie buforuje odpowiedzi negatywnych dla adresów IPv4.
Jednak w przypadku adresów IPv6 odpowiedzi negatywne są buforowane, więc możliwym obejściem tego problemu jest wyłączenie IPv4 na hoście.
Eksport/import YAML
Istnieją pewne znane problemy z eksportem/importem:
- Komunikaty o błędach nie podlegają tłumaczeniu;
- Prawidłowy JSON z rozszerzeniem pliku .yaml czasami nie może zostać zaimportowany;
- Daty czytelne dla człowieka bez cudzysłowów są automatycznie konwertowane na znaczniki czasu Unix.
Kreator konfiguracji na SUSE z NGINX i php-fpm
Kreator konfiguracji frontendu nie może zapisać pliku konfiguracyjnego na SUSE z NGINX + php-fpm. Jest to spowodowane ustawieniem w jednostce /usr/lib/systemd/system/php-fpm.service, które uniemożliwia Zabbixowi zapis do /etc. (wprowadzone w PHP 7.4).
Dostępne są dwie opcje obejścia problemu:
- Ustaw opcję ProtectSystem na 'true' zamiast 'full' w jednostce systemd php-fpm.
- Zapisz ręcznie plik /etc/zabbix/web/zabbix.conf.php.
Przekazywanie nagłówka Authorization
W niektórych przypadkach Apache lub NGINX mogą uniemożliwiać dotarcie nagłówka Authorization w żądaniach API do Zabbix. Może to powodować problemy z uwierzytelnianiem podczas korzystania z Zabbix API lub usług jednokrotnego logowania (SSO), takich jak SAML z Okta.
Aby rozwiązać ten problem, zaktualizuj konfigurację swojego serwera WWW.
W przypadku Apache, jeśli używasz go jako reverse proxy (konfiguracja bez CGI), dodaj następującą dyrektywę do /etc/httpd/conf/httpd.conf (w systemach opartych na RHEL) lub /etc/apache2/apache2.conf (w Debian/Ubuntu):
SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
Jeśli Apache bezpośrednio wykonuje skrypty obsługujące żądania (np. przy użyciu mod_cgi), zamiast tego dodaj następującą dyrektywę:
CGIPassAuth On
Natomiast NGINX obsługuje nagłówek Authorization automatycznie.
Jeśli jednak NGINX działa jako reverse proxy, możesz jawnie przekazywać nagłówek Authorization, dodając następujące dyrektywy do /etc/nginx/nginx.conf (dla lokalizacji twojego frontend Zabbix):
...
location / {
...
proxy_set_header Authorization $http_authorization;
proxy_pass http://backend_server;
...
}
Po zaktualizowaniu konfiguracji uruchom ponownie swój serwer WWW.
Więcej informacji znajdziesz tutaj:
- ZBX-22952
- Apache 2.4 + PHP-FPM and Authorization headers
- Dyrektywy SetEnvIfNoCase i CGIPassAuth
- NGINX Reverse Proxy
Chromium dla usługi web Zabbix w Ubuntu 20
Chociaż w większości przypadków usługa web Zabbix może działać z Chromium, w Ubuntu 20.04 użycie Chromium powoduje następujący błąd:
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.
Ten błąd występuje, ponieważ /var/lib/zabbix jest używany jako katalog domowy użytkownika „zabbix”.
Niestandardowe kody błędów MySQL
Gdy Zabbix wykryje, że baza danych backend jest niedostępna, wysyła powiadomienie i nadal próbuje się połączyć. Dla niektórych silników baz danych rozpoznawane są określone kody błędów. W MySQL do rozpoznawanych kodów błędów należą:
- 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
Dodatkowo podczas używania Zabbix z instalacją MySQL na platformie Azure w logach Zabbix może pojawić się ogólny komunikat o błędzie [9002] Some errors occurred. Ten komunikat jest wysyłany przez bazę danych do serwera lub proxy Zabbix. Aby ustalić przyczynę błędu, sprawdź logi Azure.
Nieprawidłowe wyrażenia regularne po przełączeniu na PCRE2
W Zabbix 6.0 dodano obsługę PCRE2. Mimo że PCRE jest nadal obsługiwane, pakiety instalacyjne Zabbix dla RHEL 7 i nowszych, SLES (wszystkie wersje), Debian 9 i nowszych, Ubuntu 16.04 i nowszych zostały zaktualizowane tak, aby używać PCRE2. Chociaż zmiana na PCRE2 przynosi wiele korzyści, może spowodować, że niektóre istniejące wzorce regexp PCRE staną się nieprawidłowe lub będą działać inaczej. W szczególności dotyczy to wzorca \^[\w-\.]. Aby ponownie uczynić to wyrażenie regularne prawidłowym bez wpływu na jego semantykę, zmień wyrażenie na \^[-\w\.] . Dzieje się tak dlatego, że PCRE2 traktuje znak myślnika jako separator, tworząc zakres wewnątrz klasy znaków.
Błąd widżetu Geomap
Mapy w widżecie Geomap mogą nie ładować się poprawnie, jeśli przeprowadzono aktualizację ze starszej wersji Zabbix z NGINX i podczas aktualizacji nie przełączono się na nowy plik konfiguracyjny NGINX.
Aby rozwiązać ten problem, można odrzucić stary plik konfiguracyjny, użyć pliku konfiguracyjnego z pakietu bieżącej wersji i ponownie go skonfigurować zgodnie z opisem w instrukcjach pobierania w sekcji e. Configure PHP for Zabbix frontend.
Alternatywnie można ręcznie edytować istniejący plik konfiguracyjny NGINX (zwykle /etc/zabbix/nginx.conf). Aby to zrobić, otwórz plik i znajdź następujący blok:
location ~ /(api\/|conf[^\.]|include|locale|vendor) {
deny all;
return 404;
}
Następnie zastąp ten blok następującym:
location ~ /(api\/|conf[^\.]|include|locale) {
deny all;
return 404;
}
location /vendor {
deny all;
return 404;
}
Wstępne przetwarzanie — zmienne globalne są niebezpieczne
JavaScript we wstępnym przetwarzaniu jest uruchamiany dla każdego żądania, ale przypisania do niezadeklarowanych identyfikatorów (na przykład secret = value) tworzą niejawne zmienne globalne, które mogą utrzymywać się poza bieżącym wykonaniem.
Przechowywanie danych wrażliwych (tokenów, haseł itp.) w niejawnych zmiennych globalnych zwiększa ryzyko przypadkowego ujawnienia lub ponownego użycia przez kolejne uruchomienia wstępnego przetwarzania albo inne integracje wykonywane w tym samym środowisku.
Nie polegaj na niejawnych zmiennych globalnych.
Zawsze deklaruj zmienne za pomocą var lub const i unikaj dołączania sekretów do obiektów globalnych (na przykład globalThis lub window).
Nie ma obsługiwanego sposobu zastępowania wbudowanych obiektów globalnych z poziomu wstępnego przetwarzania.
Bezpieczny przykład:
var apiToken = payload.token;
var count = 1;
return JSON.stringify({ token: apiToken, calls: count });
Grupy procesorów w systemie Windows
Dokumentacja firmy Microsoft stwierdza, że systemy z mniej niż 64 procesorami logicznymi zawsze mają jedną grupę procesorów, Grupę 0. Jednak użytkownicy Zabbix zgłosili rzadki błąd ZBX-20260, gdy w systemach z 64 lub mniejszą liczbą procesorów logicznych występowały dwie grupy procesorów. Skutkowało to dostępnością liczników wydajności "\Processor(n)" tylko dla jednej z dwóch grup procesorów. Rzeczywista przyczyna źródłowa tego błędu nie jest znana. Jednak podobny przypadek opisano na stackoverflow.com, a jego przyczyną była współpraca między BIOS-em a systemem Windows.
Ograniczenia filtrowania przy użyciu porównań utf8mb4
Filtry (np. w Data collection > Maintenance) mogą nie działać poprawnie, gdy są stosowane do encji zawierających określone znaki Unicode (np. ȼ, ɇ). Problem ten wynika ze sposobu, w jaki domyślne porównanie utf8mb4_bin w bazach danych MySQL lub MariaDB obsługuje sortowanie i porównywanie znaków Unicode.
Aby obejść to ograniczenie, użytkownicy mogą zmienić porównanie kolumn bazy danych na alternatywne, takie jak utf8mb4_0900_bin, utf8mb4_0900_ai_ci lub utf8mb4_unicode_520_ci. Należy jednak pamiętać, że zmiana porównania może powodować nieoczekiwane zachowanie przy obsłudze pustych znaków, a także podczas sortowania i filtrowania innych znaków.
Więcej informacji o zmianie porównań można znaleźć w dokumentacji MySQL lub dokumentacji MariaDB. Szczegółowe informacje o różnicach między porównaniami znajdują się w sekcji Unicode Character Sets w dokumentacji MySQL.
Dostęp do elementów interfejsu użytkownika przy użyciu MariaDB 10.5.1–10.5.9
Uzyskiwanie dostępu do frontend Zabbix z rolą inną niż Super Admin może skutkować wyświetleniem komunikatu: „Wystąpił błąd systemowy. Skontaktuj się z administratorem Zabbix.”. Ten problem dotyczy instalacji korzystających z wersji MariaDB od 10.5.1 do 10.5.9.
Aby uniknąć tego problemu, zaktualizuj MariaDB do wersji nowszej niż 10.5.9. Więcej informacji znajduje się w ZBX-25746.
Profilowanie nadmiernego użycia pamięci za pomocą tcmalloc
Jeśli podejrzewasz, że Twoja instalacja Zabbix używa zbyt dużo pamięci, możesz skorzystać z funkcji profilowania pamięci tcmalloc, aby zbadać zużycie pamięci przez serwer/proxy Zabbix.
1. Podczas instalacji Zabbix ze źródeł skonfiguruj dodatkowe flagi:
export CFLAGS="-std=gnu99 -g -O0"
Flaga -std=gnu99 jest wymagana do budowania serwera Zabbix, proxy Zabbix lub agenta Zabbix.
Flaga -g dodaje dodatkowe informacje debugowania, natomiast -O0 wyłącza optymalizacje, które mogą zakłócać profilowanie przez tcmalloc.
2. Ustaw następujące zmienne środowiskowe przed uruchomieniem serwera Zabbix. Zmienne te informują tcmalloc, jak śledzić i raportować użycie pamięci:
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. Wyzwól zrzut profilu, wysyłając sygnał 5 do procesu docelowego. Zastąp 1234 rzeczywistym identyfikatorem procesu (PID):
kill -5 1234
4. Wyświetl wygenerowany profil:
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
W tym przykładzie zbx_malloc2 odpowiada za prawie wszystkie alokacje pamięci.
Zobacz także:
- ZBX-25050 i ZBX-25584 — powiązane zgłoszenia problemów.
- GCC Option Summary — informacje o opcjach kompilacji (
-std=gnu99,-g,-O0itd.). - Dokumentacja Gperftools Heap Profiler dotycząca zmiennych środowiskowych używanych do profilowania tcmalloc.
Replikacja grupowa MySQL 8.0 w trybie multi-primary
Podczas korzystania z replikacji grupowej MySQL 8.0 w trybie multi-primary możesz napotkać błąd podczas zatwierdzania transakcji podobny do następującego:
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;]
Wygląda na to, że ten błąd jest wywoływany przez problemy z operacjami wycofywania transakcji obejmującymi ograniczenia kluczy obcych.
Zobacz także:
- ZBX-26060 — powiązane zgłoszenie problemu.
- MySQL Bug #96758 "Rollbacks with Foreign Keys on single node" — nadrzędny problem.