Instalacja ze źródeł
Najnowszą wersję Zabbix można uzyskać, kompilując ją ze źródeł. Zobacz także Pobieranie kodu źródłowego Zabbix.
Tutaj znajduje się samouczek krok po kroku dotyczący instalacji Zabbix ze źródeł.
Instalowanie demonów Zabbix
1 Pobierz archiwum źródłowe
Przejdź do strony pobierania Zabbix i pobierz archiwum źródłowe. Po pobraniu rozpakuj źródła, uruchamiając:
tar -zxvf zabbix-8.0.0.tar.gz
Wprowadź w poleceniu prawidłową wersję Zabbix. Musi ona odpowiadać nazwie pobranego archiwum.
2 Utwórz konto użytkownika
Wszystkie procesy demonów Zabbix działają pod nieuprzywilejowanymi użytkownikami systemowymi. Jeśli demon Zabbix zostanie uruchomiony z nieuprzywilejowanego konta użytkownika, będzie nadal działał jako ten użytkownik.
W domyślnej konfiguracji, jeśli demon zostanie uruchomiony jako root, przełączy się na konto użytkownika zabbix, które musi istnieć.
Aby utworzyć użytkownika systemowego zabbix i grupę, uruchom poniższe polecenia.
System oparty na RedHat:
groupadd --system zabbix
useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix
System oparty na Debianie:
addgroup --system --quiet zabbix
adduser --quiet --system --disabled-login --ingroup zabbix --home /var/lib/zabbix --no-create-home zabbix
Nie ma potrzeby tworzenia osobnego konta użytkownika dla frontend Zabbix.
Zalecenie dotyczące bezpieczeństwa
Jeśli Zabbix serwer i agent działają na tej samej maszynie, zaleca się uruchamianie ich pod oddzielnymi kontami użytkowników. Uruchamianie obu pod tym samym użytkownikiem pozwala agentowi uzyskać dostęp do pliku konfiguracyjnego serwera, co może ujawnić poufne informacje — takie jak hasło do bazy danych — każdemu użytkownikowi z uprawnieniami administratora w Zabbix.
Uruchamianie Zabbix jako root, bin lub dowolnego innego konta ze specjalnymi uprawnieniami stanowi zagrożenie bezpieczeństwa.
Katalog domowy (opcjonalnie)
Procesy Zabbix nie wymagają katalogu domowego, dlatego jego tworzenie zasadniczo nie jest zalecane. Jeśli jednak potrzebujesz funkcjonalności wymagającej katalogu domowego (na przykład przechowywania poświadczeń MySQL w $HOME/.my.cnf), możesz go utworzyć za pomocą poniższych poleceń.
W systemach opartych na RedHat uruchom:
mkdir -m u=rwx,g=rwx,o= -p /usr/lib/zabbix
chown zabbix:zabbix /usr/lib/zabbix
W systemach opartych na Debianie uruchom:
mkdir -m u=rwx,g=rwx,o= -p /var/lib/zabbix
chown zabbix:zabbix /var/lib/zabbix
3 Tworzenie bazy danych Zabbix
Dla demonów Zabbix serwer i proxy, a także dla frontendu Zabbix, wymagana jest baza danych. Nie jest ona potrzebna do uruchomienia Zabbix agent.
Dostępne są skrypty SQL do utworzenia schematu bazy danych i wstawienia zestawu danych. Baza danych proxy Zabbix wymaga tylko schematu, natomiast baza danych serwera Zabbix wymaga oprócz schematu również zestawu danych.
Po utworzeniu bazy danych Zabbix przejdź do kolejnych kroków kompilacji Zabbix.
4 Konfiguracja źródeł
Do budowania Zabbix serwer, Zabbix proxy lub Zabbix agent wymagany jest standard C99 z rozszerzeniami GNU. Tę wersję można jawnie określić, ustawiając CFLAGS="-std=gnu99":
export CFLAGS="-std=gnu99"
W przypadku instalacji z repozytorium Git Zabbix należy najpierw uruchomić:\
./bootstrap.sh
Podczas konfigurowania źródeł dla Zabbix serwer lub proxy należy określić typ bazy danych, który ma zostać użyty. W danym momencie z procesem serwer lub proxy może być skompilowany tylko jeden typ bazy danych.
Aby zobaczyć wszystkie obsługiwane opcje konfiguracji, w rozpakowanym katalogu ze źródłami Zabbix uruchom:
./configure --help
Aby skonfigurować źródła dla Zabbix serwer i agent, możesz uruchomić na przykład:
./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-ares
Aby skonfigurować źródła dla Zabbix serwer (z PostgreSQL itp.), możesz uruchomić:
./configure --enable-server --with-postgresql --with-net-snmp
Aby skonfigurować źródła dla Zabbix proxy (z SQLite itp.), możesz uruchomić:
./configure --prefix=/usr --enable-proxy --with-net-snmp --with-sqlite3 --with-ssh2
Aby skonfigurować źródła dla Zabbix agent, możesz uruchomić:
./configure --enable-agent
lub, dla Zabbix agent 2:
./configure --enable-agent2
Aby zbudować Zabbix agent 2, musi być zainstalowana obsługiwana wersja Go.
Uwagi dotyczące opcji kompilacji:
--enable-agent- kompiluje Zabbix agent, a także narzędzia wiersza poleceń Zabbix get i Zabbix sender.--with-libcurl- wymagane do monitorowania maszyn wirtualnych, uwierzytelniania SMTP oraz pozycji Zabbix agentweb.page.*. Zobacz także: Wymagania (libcurl).--with-libxml2- wymagane do monitorowania maszyn wirtualnych.--with-libpcre2[=DIR]- Zabbix zawsze kompiluje się z biblioteką PCRE2; ta opcja pozwala jedynie określić niestandardową ścieżkę instalacji PCRE2.--with-mysql=/path/to/mysql_config- określa ścieżkę do konfiguracji konkretnej biblioteki klienckiej MySQL. Przydatne, gdy zainstalowanych jest wiele wersji MySQL lub MariaDB.--enable-static- statycznie linkuje biblioteki (nieobsługiwane w systemie Solaris). Użyj tej opcji, jeśli planujesz dystrybuować skompilowane pliki binarne do systemów bez wymaganych bibliotek. Nie jest zalecana podczas budowania Zabbix serwer. Aby zbudować serwer statycznie, wymagana jest statyczna wersja każdej biblioteki zewnętrznej. Skrypt configure nie sprawdza tego automatycznie.--with-stacksize=<value>- ustawia rozmiar stosu na wątek w kilobajtach (np.--with-stacksize=512). Możesz zwiększyć tę wartość, jeśli Zabbix ulega awarii lub zawiesza się z powodu przepełnienia stosu (np. podczas preprocessingu w systemach z niskimi domyślnymi limitami stosu wątków).
Jeśli ./configure zakończy się niepowodzeniem z powodu brakujących bibliotek lub innych problemów, sprawdź plik config.log, aby uzyskać szczegółowe informacje o błędzie.
Na przykład, jeśli brakuje libssl, bezpośredni komunikat o błędzie może być mylący:
checking for main in -lmysqlclient... no
configure: error: Not found mysqlclient library
W takim przypadku config.log ujawnia rzeczywistą przyczynę:
/usr/bin/ld: cannot find -lssl
/usr/bin/ld: cannot find -lcrypto
Zobacz także:
5 Skompiluj i zainstaluj wszystko
Jeśli instalujesz z repozytorium Git Zabbix, należy najpierw uruchomić:\
$ make dbschema
make install
Ten krok należy uruchomić jako użytkownik z wystarczającymi uprawnieniami (zwykle
'root' lub przy użyciu sudo).
Uruchomienie make install domyślnie zainstaluje pliki binarne demonów
(zabbix_server, zabbix_agentd, zabbix_proxy) w /usr/local/sbin oraz
pliki binarne klienta (zabbix_get, zabbix_sender) w /usr/local/bin.
Aby określić inną lokalizację niż /usr/local, użyj klucza --prefix w poprzednim kroku konfiguracji źródeł, na przykład --prefix=/home/zabbix. W takim przypadku pliki binarne demonów zostaną zainstalowane w <prefix>/sbin, a narzędzia w <prefix>/bin. Strony podręcznika man zostaną zainstalowane w <prefix>/share.
6 Przejrzyj i edytuj pliki konfiguracyjne
- edytuj plik konfiguracyjny agenta Zabbix /usr/local/etc/zabbix_agentd.conf
Musisz skonfigurować ten plik dla każdego hosta z zainstalowanym zabbix_agentd.
W pliku musisz podać adres IP serwera Zabbix. Połączenia z innych hostów będą odrzucane.
- edytuj plik konfiguracyjny serwera Zabbix /usr/local/etc/zabbix_server.conf
Musisz podać nazwę bazy danych, użytkownika i hasło (jeśli są używane).
Pozostałe parametry w przypadku małej instalacji (do dziesięciu monitorowanych hostów) mogą pozostać z wartościami domyślnymi. Jeśli jednak chcesz zmaksymalizować wydajność serwera Zabbix (lub proxy), powinieneś zmienić parametry domyślne.
- jeśli zainstalowano proxy Zabbix, edytuj plik konfiguracyjny proxy /usr/local/etc/zabbix_proxy.conf
Musisz podać adres IP serwera i nazwę hosta proxy (musi być znana serwerowi), a także nazwę bazy danych, użytkownika i hasło (jeśli są używane).
W przypadku SQLite należy podać pełną ścieżkę do pliku bazy danych; użytkownik i hasło bazy danych nie są wymagane.
7 Uruchom demony
Uruchom zabbix_server po stronie serwera.
zabbix_server
Upewnij się, że system pozwala na przydzielenie 36 MB (lub nieco więcej) pamięci współdzielonej, w przeciwnym razie serwer może się nie uruchomić i w pliku dziennika serwera zobaczysz „Cannot allocate shared memory for <type of cache>.”. Może się to zdarzyć w systemach FreeBSD i Solaris 8.\
Uruchom zabbix_agentd na wszystkich monitorowanych maszynach.
zabbix_agentd
Upewnij się, że system pozwala na przydzielenie 2 MB pamięci współdzielonej, w przeciwnym razie agent może się nie uruchomić i w pliku dziennika agenta zobaczysz „Cannot allocate shared memory for collector.”. Może się to zdarzyć w systemie Solaris 8.
Jeśli zainstalowano Zabbix proxy, uruchom zabbix_proxy.
zabbix_proxy
Instalacja interfejsu webowego Zabbix
Kopiowanie plików PHP
Frontend Zabbix jest napisany w PHP, dlatego do jego uruchomienia wymagany jest serwer WWW obsługujący PHP. Instalacja polega po prostu na skopiowaniu plików PHP z katalogu ui do katalogu dokumentów HTML serwera WWW.
Typowe lokalizacje katalogów dokumentów HTML dla serwerów WWW Apache obejmują:
- /usr/local/apache2/htdocs (domyślny katalog przy instalacji Apache ze źródeł)
- /srv/www/htdocs (OpenSUSE, SLES)
- /var/www/html (Debian, Ubuntu, Fedora, RHEL)
Zaleca się użycie podkatalogu zamiast głównego katalogu HTML. Aby utworzyć podkatalog i skopiować do niego pliki frontend Zabbix, wykonaj następujące polecenia, zastępując <htdocs> rzeczywistym katalogiem:
mkdir <htdocs>/zabbix
cd ui
cp -a . <htdocs>/zabbix
Jeśli planujesz używać innego języka niż angielski, zobacz Instalacja dodatkowych języków frontend, aby uzyskać instrukcje.
Instalacja frontend
Aby uzyskać informacje o kreatorze instalacji frontend Zabbix, zobacz stronę Instalacja interfejsu webowego.
Instalacja ładowalnych wtyczek Zabbix agent 2
Instalacja ładowalnych wtyczek Zabbix agent 2 jest wymagana tylko wtedy, gdy chcesz monitorować cele nieobsługiwane przez wbudowane wtyczki (np. serwery lub klastry MongoDB, PostgreSQL i jego forków itp.). Zobacz pełną listę ładowalnych wtyczek oraz wbudowanych wtyczek.
Przed zainstalowaniem wtyczki sprawdź jej plik README. Może on zawierać szczegółowe wymagania i instrukcje instalacji.
Aby zainstalować ze źródeł, najpierw pobierz i rozpakuj archiwum źródłowe ładowalnej wtyczki.
Aby skompilować wtyczkę, przejdź do rozpakowanego katalogu wtyczki i uruchom make:
make
Aby zbudować ładowalne wtyczki Zabbix agent 2, musi być zainstalowana obsługiwana wersja Go.
Plik wykonywalny wtyczki może zostać umieszczony w dowolnym miejscu, o ile może zostać załadowany przez Zabbix agent 2. Ścieżkę do pliku binarnego wtyczki należy określić w pliku konfiguracyjnym wtyczki, np. w pliku postgresql.conf dla wtyczki PostgreSQL:
Plugins.PostgreSQL.System.Path=/path/to/executable/zabbix-agent2-plugin-postgresql
Ścieżka do pliku konfiguracyjnego wtyczki musi zostać określona w parametrze Include pliku konfiguracyjnego Zabbix agent 2:
Include=/path/to/plugin/configuration/file/postgresql.conf
Przejdź do sekcji konfiguracja, aby uzyskać więcej informacji o konfigurowaniu wtyczek.
Ładowalne wtyczki dostarczane przez Zabbix używają prostych plików makefile z następującymi celami kompilacji:
make- zbudowanie wtyczkimake clean- usunięcie wszystkich plików utworzonych podczas budowania wtyczkimake check- uruchomienie autotestów (wymaga rzeczywistego celu monitorowania, np. bazy danych PostgreSQL)make style- sprawdzenie stylu kodu Go za pomocągolangci-lintmake format- formatowanie kodu Go za pomocągo fmtmake dist- utworzenie archiwum źródłowego zawierającego wszystkie zależności
Instalacja Java gateway
Instalacja Java gateway jest wymagana tylko wtedy, gdy chcesz monitorować aplikacje JMX. Java gateway jest lekki i nie wymaga bazy danych.
Aby zainstalować ze źródeł, najpierw pobierz i rozpakuj archiwum źródłowe.
Aby skompilować Java gateway, uruchom skrypt ./configure z opcją --enable-java. Zaleca się podanie opcji --prefix, aby wskazać ścieżkę instalacji inną niż domyślna /usr/local, ponieważ instalacja Java gateway utworzy całe drzewo katalogów, a nie tylko pojedynczy plik wykonywalny.
./configure --enable-java --prefix=$PREFIX
Aby skompilować i spakować Java gateway do pliku JAR, uruchom make. Zwróć uwagę, że na tym etapie będziesz potrzebować plików wykonywalnych javac i jar dostępnych w swojej ścieżce.
make
Teraz masz plik zabbix-java-gateway-$VERSION.jar w
src/zabbix_java/bin. Jeśli odpowiada Ci uruchamianie Java gateway z katalogu src/zabbix_java w katalogu dystrybucji, możesz przejść do instrukcji dotyczących konfiguracji i uruchamiania Java gateway. W przeciwnym razie upewnij się, że masz wystarczające uprawnienia, i uruchom make install.
make install
Przejdź do konfiguracji, aby uzyskać więcej informacji na temat konfigurowania i uruchamiania Java gateway.
Instalacja usługi internetowej Zabbix
Instalacja usługi internetowej Zabbix jest wymagana tylko wtedy, gdy chcesz używać raportów harmonogramowanych.
Aby zainstalować ze źródeł, najpierw pobierz i rozpakuj archiwum źródłowe.
Aby skompilować usługę internetową Zabbix, uruchom skrypt ./configure z
opcją --enable-webservice.
Aby zbudować usługę internetową Zabbix, musi być zainstalowana obsługiwana wersja Go.
Uruchom zabbix_web_service na maszynie, na której usługa internetowa jest zainstalowana:
zabbix_web_service
Przejdź do sekcji konfiguracji, aby uzyskać więcej informacji o konfigurowaniu generowania raportów harmonogramowanych.
Pobieranie kodu źródłowego Zabbix
Istnieje kilka sposobów pobrania kodu źródłowego Zabbix:
- Możesz pobrać wydane stabilne wersje z oficjalnej strony internetowej Zabbix
- Możesz pobrać kompilacje nightly ze strony dla deweloperów w oficjalnym serwisie Zabbix
- Możesz pobrać najnowszą wersję rozwojową z repozytorium kodu źródłowego Git:
- Główna lokalizacja pełnego repozytorium znajduje się pod adresem https://git.zabbix.com/scm/zbx/zabbix.git
- Gałąź master oraz obsługiwane wydania są również mirrorowane w Github pod adresem https://github.com/zabbix/zabbix
Aby sklonować repozytorium, musi być zainstalowany klient Git. Oficjalny pakiet klienta Git uruchamianego z wiersza poleceń jest w dystrybucjach zwykle nazywany git. Aby go zainstalować, na przykład w Debian/Ubuntu, uruchom:
sudo apt-get update
sudo apt-get install git
Aby pobrać cały kod źródłowy Zabbix, przejdź do katalogu, w którym chcesz umieścić kod, i wykonaj:
git clone https://git.zabbix.com/scm/zbx/zabbix.git
Problemy z kompilacją
Są to znane problemy dotyczące kompilacji Zabbix ze źródeł. We wszystkich pozostałych przypadkach zobacz stronę Znane problemy.
Biblioteka w niestandardowej lokalizacji
Zabbix umożliwia wskazanie biblioteki znajdującej się w niestandardowej lokalizacji. W poniższym przykładzie Zabbix uruchomi curl-config z podanej niestandardowej lokalizacji i użyje jego danych wyjściowych do określenia właściwej biblioteki libcurl.
$ ./configure --enable-server --with-mysql --with-libcurl=/usr/local/bin/curl-config
To zadziała, jeśli jest to jedyna biblioteka libcurl zainstalowana w systemie, ale może nie zadziałać, jeśli inna biblioteka libcurl jest zainstalowana w standardowej lokalizacji (na przykład przez menedżera pakietów). Taka sytuacja występuje wtedy, gdy dla Zabbix potrzebna jest nowsza wersja biblioteki, a starsza dla innych aplikacji.
Dlatego wskazanie komponentu w niestandardowej lokalizacji nie zawsze będzie działać, jeśli ten sam komponent istnieje również w standardowej lokalizacji.
Na przykład, jeśli używasz nowszej biblioteki libcurl zainstalowanej w /usr/local, podczas gdy pakiet libcurl nadal jest zainstalowany, Zabbix może wybrać niewłaściwą bibliotekę i kompilacja zakończy się niepowodzeniem:
usr/bin/ld: ../../src/libs/zbxhttp/libzbxhttp.a(http.o): in function 'zbx_http_convert_to_utf8':
/tmp/zabbix-master/src/libs/zbxhttp/http.c:957: undefined reference to 'curl_easy_header'
collect2: error: ld returned 1 exit status
Tutaj funkcja curl_easy_header() nie jest dostępna w starszej bibliotece /usr/lib/x86_64-linux-gnu/libcurl.so, ale jest dostępna w nowszej /usr/local/lib/libcurl.so.
Problem wynika z kolejności flag linkera, a jednym z rozwiązań jest podanie pełnej ścieżki do biblioteki w zmiennej LDFLAGS:
$ LDFLAGS="-Wl,--no-as-needed /usr/local/lib/libcurl.so" ./configure --enable-server --with-mysql --with-libcurl=/usr/local/bin/curl-config
Zwróć uwagę na opcję -Wl,--no-as-needed, która może być wymagana w niektórych systemach (zobacz także: domyślne opcje linkowania w systemach opartych na Debianie).
Zbyt mały rozmiar stosu w niektórych systemach
Jeśli Zabbix ulega awarii lub zawiesza się z powodu przepełnienia stosu, możesz zwiększyć rozmiar stosu na wątek za pomocą opcji --with-stacksize podczas konfigurowania źródeł.
Ten problem może występować w systemach z niskimi domyślnymi limitami rozmiaru stosu wątków, szczególnie podczas preprocessingu, gdy tworzonych jest wiele wątków.
Poniższy przykład ustawia rozmiar stosu na 512 KB na wątek:
./configure --enable-server --with-mysql --with-stacksize=512
Możesz sprawdzić limity rozmiaru stosu wątków w systemie w czasie działania za pomocą polecenia ulimit -s w systemach opartych na Linuksie.