Você está visualizando a documentação da versão de desenvolvimento, que pode estar incompleta.
Esta página foi traduzida automaticamente. Se você notar um erro, selecione-o e pressione Ctrl+Enter para reportá-lo aos editores.

2 Compilando o Zabbix agent 2 no Windows

Visão geral

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:

  • Ferramentas de compilação MinGW
  • Linguagem de programação Go
  • OpenSSL (para recursos de criptografia no Zabbix)
  • PCRE2 (Expressões Regulares Compatíveis com Perl; para recursos de correspondência de padrões de expressões regulares no Zabbix)

Você pode compilar o agent 2 do Zabbix usando um dos seguintes métodos:

  • Usando vcpkg—uma abordagem automatizada que simplifica o gerenciamento de dependências usando um gerenciador de pacotes C++.
  • Compilação manual—uma abordagem manual que requer a instalação de todas as dependências antes de compilar o agent.

Antes de iniciar o processo de compilação, por favor, tenha em mente:

  • Para executar comandos, use o Prompt de Comando, iniciado por um usuário com permissões suficientes para gravar em pastas protegidas. No entanto, ao instalar o OpenSSL e o PCRE2, use o terminal MSYS2.
  • Recomenda-se criar um diretório de trabalho em 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).

Compilando o Zabbix agent 2 com vcpkg

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:

  • Para compilações 64-bit: x86_64-15.1.0-release-win32-seh-msvcrt-rt_v12-rev0.7z
  • Para compilações 32-bit: 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:

  • Para compilações 64-bit:
:: 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
  • Para compilações 32-bit:
:: 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:

build.bat

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.

Compilando plugins carregáveis do agent 2 do Zabbix

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+:

Plugins.EmberPlus.System.Path=/path/to/executable/zabbix-agent2-plugin-ember-plus

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:

Include=/path/to/plugin/configuration/file/ember.conf

Compilando o Zabbix agent 2 manualmente

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.

Configurando as ferramentas de compilação

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:

  • Para builds 64-bit: x86_64-15.1.0-release-win32-seh-msvcrt-rt_v12-rev0.7z
  • Para builds 32-bit: 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).

Instalando o OpenSSL

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:

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

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:

  • Para builds 64-bit:
#!/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
  • Para builds 32-bit:
#!/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.

  • A opção 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.
  • Sem a opção 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):

cd /c/Zabbix/openssl-3.5.0
       ./build.sh
Instalando o PCRE2

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:

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

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:

make install
Compilando o Zabbix agent 2

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:

  • Para builds 64-bit:
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"
  • Para builds 32-bit:
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.