Esta página demonstra como compilar o agent 2 do Zabbix a partir do código-fonte no Windows 10 (64 bits ou 32 bits).
As versões de 32 bits e 64 bits podem ser compiladas em uma plataforma de 64 bits, mas apenas a versão de 32 bits pode ser compilada em uma plataforma de 32 bits.
A compilação do agent 2 do Zabbix requer:
Você pode compilar o agent 2 do Zabbix usando um dos seguintes métodos:
Antes de iniciar o processo de compilação, por favor, tenha em mente:
C:\Zabbix
para todos os arquivos-fonte e pastas de compilação. No entanto, os componentes compilados devem ser instalados em C:\Zabbix\x64
(ou C:\Zabbix\x86
para compilações de 32 bits).Esta seção contém instruções para compilar o Zabbix agent com o vcpkg, um gerenciador de pacotes que simplifica o gerenciamento de dependências e a integração com projetos C++.
1. Baixe e instale o Build Tools for Visual Studio 2022. Durante a instalação, certifique-se de selecionar a carga de trabalho Desenvolvimento para desktop com C++, que inclui o gerenciador de pacotes vcpkg.
2. Baixe e instale o Go (disponível como instalador MSI). Durante a instalação, certifique-se de especificar C:\Zabbix\Go
como a pasta de instalação.
3. Baixe a distribuição MinGW que utiliza a biblioteca de tempo de execução Microsoft Visual C; por exemplo:
x86_64-15.1.0-release-win32-seh-msvcrt-rt_v12-rev0.7z
i686-15.1.0-release-win32-dwarf-msvcrt-rt_v12-rev0.7z
Em seguida, extraia para C:\Zabbix\mingw64
(ou C:\Zabbix\mingw32
para compilações 32-bit).
4. Inicialize o vcpkg e instale as dependências necessárias para compilar o Zabbix agent 2 (observe que isso pode levar algum tempo):
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
# Para compilações 64-bit:
set PATH=C:\Zabbix\mingw64\bin;%PATH%
vcpkg install --triplet x64-mingw-static --x-install-root=x64
# Para compilações 32-bit:
set PATH=C:\Zabbix\mingw32\bin;%PATH%
vcpkg install --triplet x86-mingw-static --x-install-root=x86
5. Baixe o arquivo fonte do Zabbix e extraia para C:\Zabbix\zabbix-8.0.0
.
6. Navegue até o diretório de build do Zabbix (C:\Zabbix\zabbix-8.0.0\build\mingw
) e crie o seguinte script build.bat
:
:: Adicione o MinGW e o Go à variável de ambiente `PATH` para a sessão atual:
set PATH=C:\Zabbix\mingw64\bin;%PATH%
set PATH=C:\Zabbix\Go\bin;%PATH%
:: Defina o caminho de instalação do vcpkg:
set vcpkg="C:\Zabbix\x64\x64-mingw-static"
:: Defina flags do linker para a biblioteca Crypt32:
SET CGO_LDFLAGS="-lCrypt32"
:: Execute o processo de compilação:
mingw32-make GOFLAGS="-buildvcs=false" ARCH=AMD64 ^
PCRE2="%vcpkg%" ^
OPENSSL="%vcpkg%" ^
all
:: Adicione o MinGW e o Go à variável de ambiente `PATH` para a sessão atual:
set PATH=C:\Zabbix\mingw32\bin;%PATH%
set PATH=C:\Zabbix\Go\bin;%PATH%
:: Defina o caminho de instalação do vcpkg:
set vcpkg="C:\Zabbix\x86\x86-mingw-static"
:: Defina flags do linker para a biblioteca Crypt32:
SET CGO_LDFLAGS="-lCrypt32"
:: Execute o processo de compilação:
mingw32-make GOFLAGS="-buildvcs=false" ARCH=x86 ^
PCRE2="%vcpkg%" ^
OPENSSL="%vcpkg%" ^
all
7. Compile o Zabbix agent 2 executando o script:
Após a compilação, o binário do Zabbix agent 2 estará localizado em C:\Zabbix\zabbix-8.0.0\bin\win64
(para compilações 64-bit) ou C:\Zabbix\zabbix-8.0.0\bin\win32
(para compilações 32-bit). Os arquivos de configuração do Zabbix agent 2 estão localizados em C:\Zabbix\zabbix-8.0.0\src\go\conf
.
Para executar o agent, copie o zabbix_agent2.exe
e seus arquivos de configuração para uma pasta dedicada (por exemplo, C:\Zabbix\agent2
) e então execute o agent:
mkdir C:\Zabbix\agent2
# Para compilações 64-bit:
copy C:\Zabbix\zabbix-8.0.0\bin\win64\zabbix_agent2.exe C:\Zabbix\agent2\
# Para compilações 32-bit:
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
Se necessário, continue compilando os plugins carregáveis do Zabbix agent 2.
1. Baixe o código-fonte do plugin do Zabbix que corresponda à sua versão do agent 2 do Zabbix (por exemplo, zabbix-agent2-plugin-ember-plus-8.0.0.tar.gz
) e extraia-o para C:\Zabbix
.
2. Navegue até o diretório do plugin extraído e compile o plugin:
cd C:\Zabbix\zabbix-agent2-plugin-ember-plus-8.0.0
# Para builds 64-bit:
mingw32-make ARCH=AMD64
# Para builds 32-bit:
mingw32-make ARCH=x86
Após a compilação, o binário do plugin do agent 2 do Zabbix e seu arquivo de configuração estarão localizados no mesmo diretório do plugin.
O executável do plugin pode ser colocado em qualquer lugar, desde que seja carregável pelo agent 2 do Zabbix. Especifique o caminho para o binário do plugin no arquivo de configuração do plugin, por exemplo, em ember.conf para o plugin Ember+:
O caminho para o arquivo de configuração do plugin deve ser especificado no parâmetro Include do arquivo de configuração do agent 2 do Zabbix:
Este método de compilação do Zabbix agent 2 é adequado para usuários que precisam de controle total sobre o ambiente de compilação ou estão em um ambiente restrito onde usar o vcpkg não é possível.
Esta seção contém instruções para compilar o Zabbix agent 2 manualmente, incluindo a instalação das ferramentas de compilação e dependências necessárias e, em seguida, a compilação do agent.
1. Baixe e instale o MSYS2 (disponível como instalador MSI). Durante a instalação, certifique-se de especificar C:\Zabbix\msys64
como a pasta de instalação.
2. Baixe e instale o Go (disponível como instalador MSI; veja as versões Go atualmente suportadas). Durante a instalação, certifique-se de especificar C:\Zabbix\Go
como a pasta de instalação.
3. Baixe a distribuição MinGW que utiliza a biblioteca de tempo de execução Microsoft Visual C; por exemplo:
x86_64-15.1.0-release-win32-seh-msvcrt-rt_v12-rev0.7z
i686-15.1.0-release-win32-dwarf-msvcrt-rt_v12-rev0.7z
Em seguida, extraia para C:\Zabbix\mingw64
(ou C:\Zabbix\mingw32
para builds 32-bit).
Para compilar o agent do Zabbix sem suporte a TLS, prossiga para a seção Instalando o PCRE2.
1. Abra o terminal MSYS2 MSYS com privilégios de administrador e execute os seguintes comandos:
2. Baixe o arquivo de origem do OpenSSL e extraia-o para C:\Zabbix\openssl-3.5.0
.
3. Navegue até o diretório extraído do OpenSSL e crie o seguinte script build.sh
:
#!/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
#!/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
Certifique-se de revogar o acesso de gravação de usuários não administradores ao diretório C:\Zabbix\x64\OpenSSL-Win64-350-static
. Caso contrário, o agent carregará as configurações SSL de um caminho que pode ser modificado por usuários sem privilégios, resultando em uma possível vulnerabilidade de segurança.
no-shared
faz com que as bibliotecas estáticas libcrypto.lib e libssl.lib do OpenSSL sejam autossuficientes, de modo que os binários do Zabbix incluam o OpenSSL sem precisar de DLLs externas. Isso significa que os binários do Zabbix podem ser copiados para outras máquinas Windows sem as bibliotecas do OpenSSL; no entanto, quando uma nova versão de correção de bugs do OpenSSL for lançada, o agent do Zabbix precisará ser recompilado.no-shared
, o Zabbix depende das DLLs do OpenSSL em tempo de execução. Isso significa que as atualizações do OpenSSL podem não exigir a recompilação do agent do Zabbix; no entanto, ao copiá-lo para outras máquinas, as DLLs do OpenSSL também devem ser copiadas.Para mais informações sobre outras opções de configuração do OpenSSL, consulte a documentação do OpenSSL.
4. Configure e instale o OpenSSL executando o script (observe que isso pode levar algum tempo):
1. Baixe o arquivo de origem do PCRE2 e extraia-o para C:\Zabbix\pcre2-10.45
.
2. Abra o terminal MSYS2 MSYS com privilégios de administrador. Em seguida, crie um diretório build
no diretório extraído do PCRE2 e navegue até ele:
3. Configure o PCRE2:
# Para builds 64-bit:
export PATH="/c/Zabbix/mingw64/bin:$PATH"
cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_C_FLAGS="-O2 -g" -DCMAKE_INSTALL_PREFIX="/c/Zabbix/x64/PCRE2" ..
# Para builds 32-bit:
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" ..
Se ocorrerem erros, recomenda-se excluir o cache do CMake antes de tentar repetir o processo de build do CMake. O cache (CMakeCachecache.txt
) pode ser localizado no diretório de build do diretório extraído do PCRE2.
4. Instale o PCRE2:
1. Baixe o arquivo fonte do Zabbix e extraia-o para C:\Zabbix\zabbix-8.0.0
.
Se você precisar gerar um arquivo fonte a partir do repositório de código-fonte bruto (por exemplo, para aplicar patches personalizados ou compilar a partir do código-fonte mais recente), execute os seguintes comandos em uma máquina Linux com Go instalado (necessário para configurar o Zabbix agent 2):
git clone https://git.zabbix.com/scm/zbx/zabbix.git
cd zabbix
./bootstrap.sh
./configure --enable-agent2 --enable-ipv6 --prefix=`pwd`
make dist
Isso criará um arquivo fonte, que pode então ser copiado para uma máquina Windows.
2. Abra o Prompt de Comando com privilégios de administrador. Em seguida, navegue até o diretório de build do Zabbix e compile o Zabbix agent; certifique-se de especificar corretamente os diretórios onde o OpenSSL e o PCRE2 estão instalados:
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
# Com suporte a TLS:
mingw32-make ARCH=AMD64 PCRE2="C:\Zabbix\x64\PCRE2" OPENSSL="C:\Zabbix\x64\OpenSSL-Win64-350-static"
# Sem suporte a TLS:
mingw32-make ARCH=AMD64 PCRE2="C:\Zabbix\x64\PCRE2"
cd C:\Zabbix\zabbix-8.0.0\build\mingw
set PATH=C:\Zabbix\mingw32\bin;%PATH%
# Com suporte a TLS:
mingw32-make ARCH=x86 PCRE2="C:\Zabbix\x86\PCRE2" OPENSSL="C:\Zabbix\x86\OpenSSL-Win64-350-static"
# Sem suporte a TLS:
mingw32-make ARCH=x86 PCRE2="C:\Zabbix\x86\PCRE2"
Após a compilação, o binário do Zabbix agent 2 estará localizado em C:\Zabbix\zabbix-8.0.0\bin\win64
(ou C:\Zabbix\zabbix-8.0.0\bin\win32
para builds 32-bit). Os arquivos de configuração do Zabbix agent 2 estão localizados em C:\Zabbix\zabbix-8.0.0\src\go\conf
.
Para executar o agent, copie o binário zabbix_agent2.exe
e seus arquivos de configuração para uma pasta dedicada (por exemplo, C:\Zabbix\agent2
) e então execute o agent:
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
Se necessário, continue com a compilação dos plugins carregáveis do Zabbix agent 2.