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 agent web.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 wtyczki
  • make clean - usunięcie wszystkich plików utworzonych podczas budowania wtyczki
  • make check - uruchomienie autotestów (wymaga rzeczywistego celu monitorowania, np. bazy danych PostgreSQL)
  • make style - sprawdzenie stylu kodu Go za pomocą golangci-lint
  • make format - formatowanie kodu Go za pomocą go fmt
  • make 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:

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.