1 Criando Zabbix agent no Windows

Visão Geral

Esta seção demonstra como construir binários do agente Zabbix para Windows a partir de fontes com ou sem TLS..

Compilando OpenSSL

Os passos a seguir ajudarão a compilar OpenSSL a partir de fontes em MS Windows 10 (64-bit).

  1. Para compilar OpenSSL em uma máquina com Windows, você precisará:
    1. C compilador (por exemplo, VS 2017 RC),
    2. NASM (https://www.nasm.us/),
    3. Perl (e.g. Strawberry Perl a partir de http://strawberryperl.com/),
    4. Perl module Text::Template (cpan Text::Template).
  2. Obtenha as fontes OpenSSL a partir de https://www.openssl.org/. A versão OpenSSL 1.1.1 é usada.
  3. Desempacote as fontes OpenSSL. Por exemplo, em E:\openssl-1.1.1.
  4. Abra uma linha de comando Window. Por exemplo, o x64 Native Tools Command Prompt para VS 2017 RC.
  5. Vá para o diretório de fontes do OpenSSL. Por exemplo, E:\openssl-1.1.1.
    1. Verifique que o NASM possa ser encontrado: e:\openssl-1.1.1> nasm --version NASM version 2.13.01 compiled on May 1 2017
  6. Configure OpenSSL, por exemplo: e:\openssl-1.1.1> perl E:\openssl-1.1.1\Configure VC-WIN64A no-shared no-capieng no-srp no-gost no-dgram no-dtls1-method no-dtls1_2-method --api=1.1.0 --prefix=C:\OpenSSL-Win64-111-static --openssldir=C:\OpenSSL-Win64-111-static
    • Observe a opção 'não compartilhada': se 'não compartilhada' for usada, em seguida as bibliotecas estáticas OpenSSL libcrypto.lib e libssl.lib serão 'autossuficientes' e os resultados em binários Zabbix serão incluídos. Os próprios OpenSSL não necessitam de OpenSSL DLLs externos. Vantagem: Os binários Zabbix podem ser copiados para outras máquinas com Windows, sem bibliotecas OpenSSL. Desvantagem: quando uma nova versão de correção de bugs for lançada, o Zabbix agent necessita ser recompilado e reinstalado.
    • Se 'não compartilhado' não for usado, em seguida as bibliotecas estáticas libcrypto.lib e libssl.lib serão utilizadas em OpenSSL DLLs em tempo de execução. Vantagem: quando uma nova versão de correção de bugs for lançada, provavelmente você poderá atualizar apenas OpenSSL DLLs, sem recompilar o Zabbix agent. Desvantagem: copiar o Zabbix agent para outra máquina, requer também copiar OpenSSL DLLs.
  7. Compile OpenSSL, execute os testes, instale:e:\openssl-1.1.1> nmake e:\openssl-1.1.1> nmake test ... All tests successful. Files=152, Tests=1152, 501 wallclock secs ( 0.67 usr + 0.61 sys = 1.28 CPU) Result: PASS e:\openssl-1.1.1> nmake install_sw'install_sw' instalar apenas os componentes de software (por exemplo: bibliotecas, arquivos de cabeçalho, mas não a documentação). Caso você deseje instalar tudo, utilize o "nmake install".

Compilando PCRE

  1. Baixe a biblioteca PCRE ou a PCRE2 (suportadas desde a versão Zabbix 6.0) (https://pcre.org/).
  2. Extraia para diretório E:\pcre2-10.39.
  3. Instale o CMake a partir de https://cmake.org/download/. Durante a instalação, selecione: e verifique que o cmake\bin esteja no seu atalho (versão testada 3.9.4).
  4. Crie um diretório de compilação vazio, preferencialmente um subdiretório da origem dir. Por exemplo, E:\pcre2-10.39\build.
  5. Abra um comando windows. Por exemplo, the x64 Native Tools Command Prompt para VS 2017 e naquele ambiente, execute cmake-gui. Não tente iniciar Cmake a partir do menu Widows Start, já que isso pode levar a erros.
  6. Digite E:\pcre2-10.39 e E:\pcre2-10.39\build para a origem e construa diretórios, respectivamente.
  7. Aperte o botão "Configurar".
  8. Ao especificar o gerador para este projeto, selecione "NMake Makefiles".
  9. Crie um novo diretório de instalação vazio. Por exemplo, E:\pcre2-10.39-install.
  10. Em seguida, o GUI listará múltiplas opções de configuração. Certifique-se que as seguintes opções estejam selecionadas:
    • PCRE_SUPPORT_UNICODE_PROPERTIES ON
    • PCRE_SUPPORT_UTF ON
    • CMAKE_INSTALL_PREFIX E:\pcre2-10.39-install
  11. Aperte em "Configurar" novamente. O botão adjacente "Generate" deverá estar ativo.
  12. Aperte "Generate".
  13. No evento em que ocorrer erros, é recomendável que você exclua o cache CMake antes de tentar repetir o processo de construção do CMake. No CMake GUI, o cache pode ser excluído selecionado o "File > Delete Cache".
  14. O diretório de compilação agora deve conter um sistema de de compilação utilizável - Makefile.
  15. Abra um comando Windows. Por exemplo, the x64 Native Tools Command Prompt para VS 2017 e navegue até o Makefile, mencionado acima.
  16. Execute o comando NMake: E:\pcre2-10.39\build> nmake install

Compilando Zabbix

Os seguintes passos ajudarão você a compilar o Zabbix a partir das fontes no MS Windows 10 (64-bit). Ao compilar o Zabbix com/sem suporte TLS, a única diferença significante é o passo 4.

  1. Em uma máquina Linux, verifique a fonte a partir do git:$ git clone https://git.zabbix.com/scm/zbx/zabbix.git $ cd zabbix $ ./bootstrap.sh $ ./configure --enable-agent --enable-ipv6 --prefix=`pwd` $ make dbschema $ make dist
  2. Copie e desempacote o arquivo. Por exemplo, zabbix-4.4.0.tar.gz, em uma máquina Windows.
  3. Vamos assumir que as fontes estão em e:\zabbix-4.4.0. Abra um comando no windows. Por exemplo, e.g. the x64 Native Tools Command Prompt para VS 2017 RC. Vá para E:\zabbix-4.4.0\build\win32\project.
  4. Compile zabbix_get, zabbix_sender and zabbix_agent.
    • sem TLS: E:\zabbix-4.4.0\build\win32\project> nmake /K PCREINCDIR=E:\pcre2-10.39-install\include PCRELIBDIR=E:\pcre2-10.39-install\lib
    • com TLS: E:\zabbix-4.4.0\build\win32\project> nmake /K -f Makefile_get TLS=openssl TLSINCDIR=C:\OpenSSL-Win64-111-static\include TLSLIBDIR=C:\OpenSSL-Win64-111-static\lib PCREINCDIR=E:\pcre2-10.39-install\include PCRELIBDIR=E:\pcre2-10.39-install\lib E:\zabbix-4.4.0\build\win32\project> nmake /K -f Makefile_sender TLS=openssl TLSINCDIR="C:\OpenSSL-Win64-111-static\include TLSLIBDIR="C:\OpenSSL-Win64-111-static\lib" PCREINCDIR=E:\pcre2-10.39-install\include PCRELIBDIR=E:\pcre2-10.39-install\lib E:\zabbix-4.4.0\build\win32\project> nmake /K -f Makefile_agent TLS=openssl TLSINCDIR=C:\OpenSSL-Win64-111-static\include TLSLIBDIR=C:\OpenSSL-Win64-111-static\lib PCREINCDIR=E:\pcre2-10.39-install\include PCRELIBDIR=E:\pcre2-10.39-install\lib
  5. Os binários novos estão localizados em e:\zabbix-4.4.0\bin\win64. Como o OpenSSL foi compilado com a opção 'não compartilhar', os binários do Zabbix contêm o OpenSSL internamente e podem ser copiados para outras máquina que não possuem o OpenSSL.

Compilando Zabbix com LibreSSL

O processo é similar a compilar com OpenSSL, mas agora você precisará fazer pequenas alterações nos arquivos localizados no diretório: build\win32\project:

  • No Makefile_tls exclua /DHAVE_OPENSSL_WITH_PSK, por exemplo, encontre:
CFLAGS = $(CFLAGS) /DHAVE_OPENSSL /DHAVE_OPENSSL_WITH_PSK

e substitua por

CFLAGS = $(CFLAGS) /DHAVE_OPENSSL
  • No Makefile_common.inc adicione /NODEFAULTLIB:LIBCMT por exemplo, encontre:
/MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DYNAMICBASE:NO /PDB:$(TARGETDIR)\$(TARGETNAME).pdb

e substitua por

/MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DYNAMICBASE:NO /PDB:$(TARGETDIR)\$(TARGETNAME).pdb /NODEFAULTLIB:LIBCMT