[comment]: # aside: 5

[comment]: # ({22c598e9-22c598e9})
# Budowanie Zabbix agent 2 w systemie Windows

[comment]: # ({/22c598e9-22c598e9})

[comment]: # ({3f913083-84651997})
#### Przegląd

Ta strona pokazuje, jak zbudować Zabbix agent 2 ze źródeł w systemie Windows 10 (64-bitowym lub 32-bitowym).

Zarówno wersje 32-bitowe, jak i 64-bitowe można zbudować na platformie 64-bitowej, ale na platformie 32-bitowej można zbudować tylko wersję 32-bitową.

Budowanie Zabbix agent 2 wymaga:

- narzędzi build MinGW
- języka programowania Go
- OpenSSL (dla funkcji [szyfrowania](/manual/encryption) w Zabbix)
- PCRE2 (Perl Compatible Regular Expressions; dla funkcji dopasowywania wzorców wyrażeń regularnych w Zabbix)

Możesz zbudować Zabbix agent 2, korzystając z jednej z następujących metod:

- [Użycie vcpkg](#building-zabbix-agent-2-with-vcpkg) — zautomatyzowane podejście, które upraszcza zarządzanie zależnościami przy użyciu menedżera pakietów C++.
- [Budowanie ręczne](#building-zabbix-agent-2-manually) — ręczne podejście wymagające zainstalowania wszystkich zależności przed kompilacją agent.

::: noteimportant
Przed rozpoczęciem procesu budowania pamiętaj o następujących kwestiach:<br><br>

- Do wykonywania poleceń używaj Wiersza polecenia uruchomionego przez użytkownika z wystarczającymi uprawnieniami do zapisu w chronionych folderach. Jednak podczas instalacji [OpenSSL](#installing-openssl) i [PCRE2](#installing-pcre2) używaj terminala MSYS2.
- Zaleca się utworzenie katalogu roboczego `C:\Zabbix` dla wszystkich plików źródłowych i folderów build. Jednak skompilowane komponenty powinny być instalowane w `C:\Zabbix\x64` (lub `C:\Zabbix\x86` dla buildów 32-bitowych).

:::

[comment]: # ({/3f913083-84651997})

[comment]: # ({6a456e90-0c4c3de2})
#### Budowanie Zabbix agent 2 z vcpkg

Ta sekcja zawiera instrukcje dotyczące budowania Zabbix agent z użyciem [vcpkg](https://learn.microsoft.com/en-us/vcpkg/get_started/overview), menedżera pakietów, który upraszcza zarządzanie zależnościami i integrację z projektami C++.

1\. Pobierz i zainstaluj [Build Tools for Visual Studio 2022](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022).
Podczas instalacji upewnij się, że wybrano obciążenie *Desktop development with C++*, które zawiera menedżer pakietów vcpkg.

2\. Pobierz i zainstaluj [Go](https://go.dev/dl/) (dostępny jako instalator MSI).
Podczas instalacji upewnij się, że jako folder instalacyjny wskazano `C:\Zabbix\Go`.

3\. Pobierz dystrybucję [MinGW](https://github.com/niXman/mingw-builds-binaries/releases), która korzysta z biblioteki uruchomieniowej Microsoft Visual C; na przykład:

- Dla kompilacji 64-bitowych: `x86_64-15.1.0-release-win32-seh-msvcrt-rt_v12-rev0.7z`
- Dla kompilacji 32-bitowych: `i686-15.1.0-release-win32-dwarf-msvcrt-rt_v12-rev0.7z`

::: noteimportant
Wersja MinGW musi spełniać [minimalne wymagania](https://go.dev/wiki/MinimumRequirements#cgo).
:::

Następnie rozpakuj ją do `C:\Zabbix\mingw64` (lub `C:\Zabbix\mingw32` dla kompilacji 32-bitowych).

4\. Zainicjuj vcpkg i zainstaluj zależności wymagane do budowania Zabbix agent 2 (zwróć uwagę, że może to potrwać pewien czas):

```bash
cd C:\Zabbix

set PATH=%PATH%;"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\vcpkg"
vcpkg new --application
vcpkg add port pcre2
vcpkg add port libiconv
vcpkg add port openssl

# For 64-bit builds:
set PATH=C:\Zabbix\mingw64\bin;%PATH%
vcpkg install --triplet x64-mingw-static --x-install-root=x64

# For 32-bit builds:
set PATH=C:\Zabbix\mingw32\bin;%PATH%
vcpkg install --triplet x86-mingw-static --x-install-root=x86
```

5\. Pobierz [archiwum źródłowe Zabbix](https://www.zabbix.com/download_sources#pre-release) i rozpakuj je do `C:\Zabbix\zabbix-8.0.0`.

6\. Przejdź do katalogu kompilacji Zabbix (`C:\Zabbix\zabbix-8.0.0\build\mingw`) i utwórz następujący skrypt `build.bat`:

- Dla kompilacji 64-bitowych:

```bash
:: Add MinGW and Go to the system `PATH` variable for the current session:
set PATH=C:\Zabbix\mingw64\bin;%PATH%
set PATH=C:\Zabbix\Go\bin;%PATH%

:: Set vcpkg installation path:
set vcpkg="C:\Zabbix\x64\x64-mingw-static"

:: Set linker flags for Crypt32 library:
SET CGO_LDFLAGS="-lCrypt32"

:: Run the build process:
mingw32-make GOFLAGS="-buildvcs=false" ARCH=AMD64 ^
    PCRE2="%vcpkg%" ^
    OPENSSL="%vcpkg%" ^
    all
```

- Dla kompilacji 32-bitowych:

```bash
:: Add MinGW and Go to the system `PATH` variable for the current session:
set PATH=C:\Zabbix\mingw32\bin;%PATH%
set PATH=C:\Zabbix\Go\bin;%PATH%

:: Set vcpkg installation path:
set vcpkg="C:\Zabbix\x86\x86-mingw-static"

:: Set linker flags for Crypt32 library:
SET CGO_LDFLAGS="-lCrypt32"

:: Run the build process:
mingw32-make GOFLAGS="-buildvcs=false" ARCH=x86 ^
    PCRE2="%vcpkg%" ^
    OPENSSL="%vcpkg%" ^
    all
```

7\. Skompiluj Zabbix agent 2, uruchamiając skrypt:

```bash
build.bat
```

Po kompilacji plik binarny Zabbix agent 2 będzie znajdować się w `C:\Zabbix\zabbix-8.0.0\bin\win64` (dla kompilacji 64-bitowych) lub `C:\Zabbix\zabbix-8.0.0\bin\win32` (dla kompilacji 32-bitowych).
Pliki konfiguracyjne Zabbix agent 2 znajdują się w `C:\Zabbix\zabbix-8.0.0\src\go\conf`.

Aby uruchomić agenta, skopiuj `zabbix_agent2.exe` oraz jego pliki konfiguracyjne do dedykowanego folderu (np. `C:\Zabbix\agent2`), a następnie uruchom agenta:

```bash
mkdir C:\Zabbix\agent2

# For 64-bit builds:
copy C:\Zabbix\zabbix-8.0.0\bin\win64\zabbix_agent2.exe C:\Zabbix\agent2\

# For 32-bit builds:
copy C:\Zabbix\zabbix-8.0.0\bin\win32\zabbix_agent2.exe C:\Zabbix\agent2\

copy C:\Zabbix\zabbix-8.0.0\src\go\conf\zabbix_agent2.win.conf C:\Zabbix\agent2\
xcopy /E /I C:\Zabbix\zabbix-8.0.0\src\go\conf\zabbix_agent2.d C:\Zabbix\agent2\zabbix_agent2.d\

C:\Zabbix\agent2\zabbix_agent2.exe -c C:\Zabbix\agent2\zabbix_agent2.win.conf
```

W razie potrzeby przejdź dalej do kompilacji [ładowalnych wtyczek](/manual/concepts/agent2/loadable-plugins) Zabbix agent 2.

[comment]: # ({/6a456e90-0c4c3de2})

[comment]: # ({e4d7bbb2-83a3edaf})
##### Kompilowanie ładowalnych wtyczek Zabbix agent 2

1\. Pobierz [źródła wtyczki Zabbix](https://cdn.zabbix.com/zabbix-agent2-plugins/sources/) zgodne z wersją Zabbix agent 2 (np. `zabbix-agent2-plugin-postgresql-8.0.0.tar.gz`) i rozpakuj je do `C:\Zabbix`.

::: noteimportant
Przed zainstalowaniem wtyczki sprawdź plik README.
Może on zawierać szczegółowe wymagania i instrukcje instalacji.
:::

2\. Przejdź do rozpakowanego katalogu wtyczki i skompiluj wtyczkę:

```bash
cd C:\Zabbix\zabbix-agent2-plugin-ember-plus-8.0.0

# Dla kompilacji 64-bitowej:
mingw32-make ARCH=AMD64

# Dla kompilacji 32-bitowej:
mingw32-make ARCH=x86
```

Po kompilacji plik binarny wtyczki Zabbix agent 2 oraz jej plik konfiguracyjny będą znajdować się w tym samym katalogu wtyczki.

Plik wykonywalny wtyczki może znajdować się w dowolnym miejscu, o ile może być załadowany przez Zabbix agent 2.
Określ ścieżkę do pliku binarnego wtyczki w pliku konfiguracyjnym wtyczki, np. w pliku postgresql.conf dla wtyczki [PostgreSQL](/manual/concepts/agent2/agent2_params_plugin/postgresql_plugin):

```ini
Plugins.PostgreSQL.System.Path=/path/to/executable/zabbix-agent2-plugin-postgresql
```

Ścieżka do pliku konfiguracyjnego wtyczki musi być określona w parametrze [Include](/manual/concepts/agent2/agent2_params_win#include) pliku konfiguracyjnego Zabbix agent 2:

```ini
Include=/path/to/plugin/configuration/file/postgresql.conf
```

Przejdź do [konfiguracji](/manual/concepts/agent2/agent2_params_plugin#plugin-configuration-principles), aby uzyskać więcej informacji na temat konfigurowania wtyczek.

[comment]: # ({/e4d7bbb2-83a3edaf})

[comment]: # ({b486021f-87d14870})
#### Ręczne budowanie Zabbix agent 2

::: noteimportant
Ta metoda budowania Zabbix agent 2 jest odpowiednia dla użytkowników, którzy wymagają pełnej kontroli nad środowiskiem budowania lub działają w ograniczonym środowisku, w którym [użycie vcpkg](#building-zabbix-agent-with-vcpkg) nie jest możliwe.
:::

Ta sekcja zawiera instrukcje dotyczące ręcznego budowania Zabbix agent 2, co obejmuje instalację wymaganych narzędzi do budowania i zależności, a następnie kompilację agenta.

[comment]: # ({/b486021f-87d14870})

[comment]: # ({9af55055-2a4da91c})
##### Konfiguracja narzędzi do budowania

1\. Pobierz i zainstaluj [MSYS2](https://www.msys2.org/) (dostępny jako instalator MSI).
Podczas instalacji upewnij się, że jako folder instalacyjny wskazano `C:\Zabbix\msys64`.

2\. Pobierz i zainstaluj [Go](https://go.dev/dl/) (dostępny jako instalator MSI; zobacz aktualnie obsługiwane [wersje Go](/manual/installation/requirements#agent-2)).
Podczas instalacji upewnij się, że jako folder instalacyjny wskazano `C:\Zabbix\Go`.

3\. Pobierz dystrybucję [MinGW](https://github.com/niXman/mingw-builds-binaries/releases), która korzysta z biblioteki uruchomieniowej Microsoft Visual C; na przykład:

- Dla kompilacji 64-bitowych: `x86_64-15.1.0-release-win32-seh-msvcrt-rt_v12-rev0.7z`
- Dla kompilacji 32-bitowych: `i686-15.1.0-release-win32-dwarf-msvcrt-rt_v12-rev0.7z`

::: noteimportant
Wersja MinGW musi spełniać [minimalne wymagania](https://go.dev/wiki/MinimumRequirements#cgo).
:::

Następnie rozpakuj ją do `C:\Zabbix\mingw64` (lub `C:\Zabbix\mingw32` dla kompilacji 32-bitowych).

[comment]: # ({/9af55055-2a4da91c})

[comment]: # ({e5544a26-822e5b3f})
##### Instalacja OpenSSL

::: noteclassic
Aby skompilować agent Zabbix bez obsługi TLS, przejdź do sekcji [Installing PCRE2](#installing-pcre2).
:::

1\. Otwórz terminal MSYS2 MSYS z uprawnieniami administratora i uruchom następujące polecenia:

```bash
pacman -S perl-Locale-Maketext-Simple
pacman -S nasm
pacman -S make
pacman -S cmake
```

2\. Pobierz [archiwum źródłowe OpenSSL](https://openssl-library.org/source/) i rozpakuj je do `C:\Zabbix\openssl-3.5.0`.

3\. Przejdź do rozpakowanego katalogu OpenSSL i utwórz następujący skrypt `build.sh`:

- Dla kompilacji 64-bitowych:

```bash
#!/usr/bin/env bash

export PATH="/c/Zabbix/mingw64/bin:$PATH"
export d="/c/Zabbix/x64/OpenSSL-Win64-350-static"

perl Configure mingw64 no-shared no-capieng no-winstore no-srp no-gost no-dgram no-dtls1-method no-dtls1_2-method thread_scheme=winthreads --api=1.1.0 --prefix=$d --openssldir=$d

make
make install
```

- Dla kompilacji 32-bitowych:

```bash
#!/usr/bin/env bash

export PATH="/c/Zabbix/mingw32/bin:$PATH"
export d="/c/Zabbix/x86/OpenSSL-Win64-350-static"

perl Configure mingw no-shared no-capieng no-winstore no-srp no-gost no-dgram no-dtls1-method no-dtls1_2-method thread_scheme=winthreads --api=1.1.0 --prefix=$d --openssldir=$d

make
make install
```

::: noteimportant
Upewnij się, że użytkownicy niebędący administratorami nie mają uprawnień do zapisu w katalogu `C:\Zabbix\x64\OpenSSL-Win64-350-static`.
W przeciwnym razie agent będzie ładować ustawienia SSL ze ścieżki, którą mogą modyfikować użytkownicy bez uprawnień, co stwarza potencjalną lukę bezpieczeństwa.
:::

- Opcja `no-shared` powoduje, że statyczne biblioteki OpenSSL libcrypto.lib i libssl.lib są samowystarczalne, dzięki czemu pliki binarne Zabbix zawierają OpenSSL bez potrzeby używania zewnętrznych bibliotek DLL.
  Oznacza to, że pliki binarne Zabbix można kopiować na inne komputery z systemem Windows bez bibliotek OpenSSL; jednak po wydaniu nowej wersji OpenSSL zawierającej poprawki błędów agent Zabbix będzie wymagał ponownej kompilacji.
- Bez opcji `no-shared` Zabbix korzysta z bibliotek DLL OpenSSL w czasie działania.
  Oznacza to, że aktualizacje OpenSSL mogą nie wymagać ponownej kompilacji agent Zabbix; jednak podczas kopiowania go na inne komputery należy również skopiować biblioteki DLL OpenSSL.

Aby uzyskać więcej informacji o innych opcjach konfiguracji OpenSSL, zobacz [dokumentację OpenSSL](https://github.com/openssl/openssl/blob/master/INSTALL.md#configuration-options).

4\. Skonfiguruj i zainstaluj OpenSSL, wykonując skrypt (pamiętaj, że może to zająć trochę czasu):

```bash
cd /c/Zabbix/openssl-3.5.0
./build.sh
```

[comment]: # ({/e5544a26-822e5b3f})

[comment]: # ({418b9da1-bf2f316b})
##### Instalacja PCRE2

1\. Pobierz [archiwum źródłowe PCRE2](https://github.com/PCRE2Project/pcre2/releases/latest) i rozpakuj je do `C:\Zabbix\pcre2-10.45`.

2\. Otwórz terminal MSYS2 MSYS z uprawnieniami administratora.
Następnie utwórz katalog `build` w rozpakowanym katalogu PCRE2 i przejdź do niego:

```bash
mkdir /c/Zabbix/pcre2-10.45/build
cd /c/Zabbix/pcre2-10.45/build
```

3\. Skonfiguruj PCRE2:

```bash
# Dla kompilacji 64-bitowych:
export PATH="/c/Zabbix/mingw64/bin:$PATH"
cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_C_FLAGS="-O2 -g" -DCMAKE_INSTALL_PREFIX="/c/Zabbix/x64/PCRE2" ..

# Dla kompilacji 32-bitowych:
export PATH="/c/Zabbix/mingw32/bin:$PATH"
cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_C_FLAGS="-m32 -O2 -g" -DCMAKE_EXE_LINKER_FLAGS="-Wl,-mi386pe" -DCMAKE_INSTALL_PREFIX="/c/Zabbix/x86/PCRE2" ..
```

::: noteclassic
Jeśli wystąpią jakiekolwiek błędy, zaleca się usunięcie pamięci podręcznej CMake przed ponowną próbą przeprowadzenia procesu budowania CMake.
Pamięć podręczna (`CMakeCachecache.txt`) może znajdować się w katalogu build rozpakowanego katalogu PCRE2.
:::

4\. Zainstaluj PCRE2:

```bash
make install
```

[comment]: # ({/418b9da1-bf2f316b})

[comment]: # ({ffffd3cc-1d340ab8})
##### Kompilacja Zabbix agent 2

1\. Pobierz [archiwum kodu źródłowego Zabbix](https://www.zabbix.com/download_sources#pre-release) i rozpakuj je do `C:\Zabbix\zabbix-8.0.0`.

Jeśli musisz wygenerować archiwum kodu źródłowego z surowego repozytorium źródeł (np. aby zastosować własne poprawki lub zbudować z najnowszego kodu źródłowego), uruchom następujące polecenia na komputerze z systemem **Linux** z zainstalowanym [Go](https://go.dev/) (wymaganym do konfiguracji Zabbix agent 2):

```bash
git clone https://git.zabbix.com/scm/zbx/zabbix.git
cd zabbix
./bootstrap.sh
./configure --enable-agent2 --enable-ipv6 --prefix=`pwd`
make dist
```

Spowoduje to utworzenie archiwum kodu źródłowego, które następnie można skopiować na komputer z systemem Windows.

2\. Otwórz Wiersz polecenia z uprawnieniami administratora.
Następnie przejdź do katalogu kompilacji Zabbix i skompiluj agent Zabbix;
pamiętaj, aby poprawnie określić katalogi, w których zainstalowano OpenSSL i PCRE2:

- Dla kompilacji 64-bitowych:

```bash
cd C:\Zabbix\zabbix-8.0.0\build\mingw
set PATH=C:\Zabbix\mingw64\bin;%PATH%
mklink /D C:\Zabbix\x64\OpenSSL-Win64-350-static\lib C:\Zabbix\x64\OpenSSL-Win64-350-static\lib64

# With TLS support:
mingw32-make ARCH=AMD64 PCRE2="C:\Zabbix\x64\PCRE2" OPENSSL="C:\Zabbix\x64\OpenSSL-Win64-350-static"

# Without TLS support:
mingw32-make ARCH=AMD64 PCRE2="C:\Zabbix\x64\PCRE2"
```

- Dla kompilacji 32-bitowych:

```bash
cd C:\Zabbix\zabbix-8.0.0\build\mingw
set PATH=C:\Zabbix\mingw32\bin;%PATH%

# With TLS support:
mingw32-make ARCH=x86 PCRE2="C:\Zabbix\x86\PCRE2" OPENSSL="C:\Zabbix\x86\OpenSSL-Win64-350-static"

# Without TLS support:
mingw32-make ARCH=x86 PCRE2="C:\Zabbix\x86\PCRE2"
```

Po zakończeniu kompilacji plik binarny Zabbix agent 2 będzie znajdować się w `C:\Zabbix\zabbix-8.0.0\bin\win64` (lub `C:\Zabbix\zabbix-8.0.0\bin\win32` dla kompilacji 32-bitowych).
Pliki konfiguracyjne Zabbix agent 2 znajdują się w `C:\Zabbix\zabbix-8.0.0\src\go\conf`.

Aby uruchomić agent, skopiuj plik binarny `zabbix_agent2.exe` oraz jego pliki konfiguracyjne do dedykowanego folderu (np. `C:\Zabbix\agent2`), a następnie uruchom agent:

```bash
mkdir C:\Zabbix\agent2
copy C:\Zabbix\zabbix-8.0.0\bin\win64\zabbix_agent2.exe C:\Zabbix\agent2\
copy C:\Zabbix\zabbix-8.0.0\src\go\conf\zabbix_agent2.win.conf C:\Zabbix\agent2\
xcopy /E /I C:\Zabbix\zabbix-8.0.0\src\go\conf\zabbix_agent2.d C:\Zabbix\agent2\zabbix_agent2.d\

C:\Zabbix\agent2\zabbix_agent2.exe -c C:\Zabbix\agent2\zabbix_agent2.win.conf
```

W razie potrzeby przejdź dalej do sekcji [kompilacja ładowalnych wtyczek Zabbix agent 2](#compiling-zabbix-agent-2-loadable-plugins).

[comment]: # ({/ffffd3cc-1d340ab8})
