1 Windows에서 Zabbix agent 빌드하기
원본 보기1 Windows에서 Zabbix 에이전트 빌드
개요
이 페이지는 Windows 10 (64비트)에서 소스로부터 Zabbix 에이전트를 빌드하는 방법을 보여줍니다.
이 지침은 Visual Studio 2022를 지원하는 Windows 버전에 적용됩니다.
Zabbix 에이전트를 빌드하려면 다음이 필요합니다:
- C 컴파일러 (Build Tools for Visual Studio 2022에 포함)
- OpenSSL (Zabbix의 암호화 기능을 위해)
- PCRE2 (Perl Compatible Regular Expressions; Zabbix의 정규 표현식 패턴 매칭 기능을 위해)
다음 방법 중 하나를 사용하여 Zabbix 에이전트를 빌드할 수 있습니다:
- vcpkg 사용—C++ 패키지 관리자를 사용하여 종속성 관리를 단순화하는 자동화된 접근 방식입니다.
- 수동 빌드—에이전트를 컴파일하기 전에 모든 종속성을 수동으로 설치해야 하는 수동 접근 방식입니다.
모니터링 요구사항에 따라 추가 라이브러리가 필요할 수 있습니다. 자세한 정보는 요구사항을 참조하세요.
빌드 프로세스를 시작하기 전에 다음 사항을 염두에 두세요:
- 명령을 실행하려면 보호된 폴더에 쓸 수 있는 충분한 권한을 가진 사용자가 실행한 x64 Native Tools Command Prompt (Build Tools for Visual Studio 2022에 포함)를 사용하세요.
- 모든 소스 파일과 빌드 폴더를 위해
C:\Zabbix에 작업 디렉토리를 생성하는 것을 권장합니다. 그러나 컴파일된 구성 요소는C:\Program Files\Zabbix\x64에 설치되어야 합니다.
vcpkg로 Zabbix 에이전트 빌드하기
이 섹션에서는 C++ 프로젝트의 종속성 관리 및 통합을 간소화하는 패키지 매니저인 vcpkg를 사용하여 Zabbix 에이전트를 빌드하는 방법을 설명합니다.
1. Build Tools for Visual Studio 2022를 다운로드하고 설치하세요. 설치하는 동안 vcpkg로 에이전트를 빌드하는 데 필요한 도구가 포함된 Desktop development with C++ 워크로드를 선택해야 합니다:
- C compiler (Microsoft Visual C++)
- NMake command-line tool
- vcpkg package manager
- x64 Native Tools Command Prompt
2. vcpkg를 초기화하고 Zabbix 에이전트 빌드에 필요한 종속성을 설치하세요 (시간이 걸릴 수 있음):
cd C:\Zabbix
vcpkg new --application
vcpkg add port pcre2
vcpkg add port openssl
vcpkg install --triplet x64-windows-static --x-install-root="C:\Program Files\Zabbix\x64"
3. Zabbix 소스 아카이브를 다운로드하고 C:\Zabbix\zabbix-7.0.0에 압축을 해제하세요.
4. Zabbix 빌드 디렉토리(C:\Zabbix\zabbix-7.0.0\build\win32\project)로 이동하여 다음 build.bat 스크립트를 생성하세요.
OpenSSL과 PCRE2가 설치된 디렉토리를 올바르게 지정해야 합니다:
:: Set vcpkg installation path:
set vcpkg=C:\Program Files\Zabbix\x64\x64-windows-static
:: Run the build process:
nmake -f Makefile CPU=AMD64 ^
PCRE2INCDIR="%vcpkg%\include" ^
PCRE2LIBDIR="%vcpkg%\lib" ^
TLS=openssl ^
TLSINCDIR="%vcpkg%\include" ^
TLSLIBDIR="%vcpkg%\lib" ^
LIBS="$(LIBS) Crypt32.lib" ^
all
5. 스크립트를 실행하여 Zabbix 에이전트를 컴파일하세요:
build.bat
컴파일 후 Zabbix 컴포넌트 바이너리는 C:\Zabbix\zabbix-7.0.0\bin\win64에 위치하게 됩니다.
Zabbix 에이전트 구성 파일은 C:\Zabbix\zabbix-7.0.0\conf에 위치합니다.
에이전트를 실행하려면 zabbix_agent.exe와 구성 파일을 전용 폴더(예: C:\Zabbix\agent)로 복사한 후 에이전트를 실행하세요:
mkdir C:\Zabbix\agent
copy C:\Zabbix\zabbix-7.0.0\bin\win64\zabbix_agent.exe C:\Zabbix\agent\
copy C:\Zabbix\zabbix-7.0.0\conf\zabbix_agent.win.conf C:\Zabbix\agent\
C:\Zabbix\agent\zabbix_agent.exe -c C:\Zabbix\agent\zabbix_agent.win.conf
Zabbix 에이전트 수동 빌드
이 Zabbix 에이전트 빌드 방법은 빌드 환경에 대한 완전한 제어가 필요하거나 vcpkg 사용이 불가능한 제한된 환경에 있는 사용자에게 적합합니다.
이 섹션에는 Zabbix 에이전트를 수동으로 빌드하는 지침이 포함되어 있으며, 여기에는 필요한 빌드 도구와 종속성(Perl, OpenSSL, PCRE2) 설치 및 에이전트 컴파일이 포함됩니다.
빌드 도구 설치
1. Build Tools for Visual Studio 2022를 다운로드하고 설치하세요. 설치 중에 Desktop development with C++ 워크로드를 선택하세요. 이 워크로드에는 에이전트를 수동으로 빌드하는 데 필요한 도구들이 포함되어 있습니다:
- C 컴파일러 (Microsoft Visual C++)
- NMake 명령줄 도구
- x64 Native Tools Command Prompt
OpenSSL 설치
TLS 지원 없이 Zabbix agent를 컴파일하려면 PCRE2 설치 섹션으로 진행하세요.
1. Strawberry Perl을 다운로드하여 설치합니다(MSI 인스톨러로 제공됨).
설치 중에 설치 폴더로 C:\Zabbix\Strawberry를 지정해야 합니다.
2. Text::Template Perl 모듈을 설치합니다:
cpanm Text::Template
3. Strawberry Perl 설치 과정에서 Netwide Assembler (NASM; OpenSSL 컴파일에 필요)가 컴파일되었는지 확인합니다:
nasm -v
# NASM version 2.16.01 compiled on May 3 2024
NASM이 컴파일되지 않았다면 수동으로 설치하세요. 자세한 정보는 NASM 문서를 참조하세요.
4. OpenSSL 소스 아카이브를 다운로드하여 C:\Zabbix\openssl-3.5.0에 압축을 해제합니다.
5. 압축 해제된 디렉터리로 이동하여 OpenSSL을 구성합니다. 예를 들어:
cd C:\Zabbix\openssl-3.5.0
perl Configure VC-WIN64A no-shared no-capieng no-winstore no-srp no-gost no-dgram no-dtls1-method no-dtls1_2-method --api=1.1.0 --prefix="C:\Program Files\Zabbix\x64\OpenSSL" --openssldir="C:\Program Files\Zabbix\x64\OpenSSL"
Windows에서 Zabbix agent를 컴파일할 때 OpenSSL용 사용자 정의 디렉터리를 선택하는 경우(예: C:\zabbix 또는 C:\openssl-64bit), 이 디렉터리에 대한 비관리자 사용자의 쓰기 액세스를 취소해야 합니다.
그렇지 않으면 에이전트가 권한이 없는 사용자에 의해 수정될 수 있는 경로에서 SSL 설정을 로드하여 잠재적인 보안 취약점이 발생할 수 있습니다.
no-shared옵션은 libcrypto.lib 및 libssl.lib OpenSSL 정적 라이브러리를 독립적으로 만들어, Zabbix 바이너리가 외부 DLL 없이도 OpenSSL을 포함하게 합니다. 이는 Zabbix 바이너리를 OpenSSL 라이브러리 없이 다른 Windows 머신에 복사할 수 있음을 의미합니다. 하지만 새로운 OpenSSL 버그 수정 버전이 릴리스될 때 Zabbix agent를 다시 컴파일해야 합니다.no-shared옵션 없이는 Zabbix가 런타임에 OpenSSL DLL에 의존합니다. 이는 OpenSSL 업데이트가 Zabbix agent 재컴파일을 필요로 하지 않을 수 있음을 의미합니다. 하지만 다른 머신에 복사할 때 OpenSSL DLL도 함께 복사해야 합니다.
다른 OpenSSL 구성 옵션에 대한 자세한 정보는 OpenSSL 문서를 참조하세요.
6. OpenSSL을 컴파일하고 테스트를 실행합니다(시간이 오래 걸릴 수 있음):
관리자 권한 없이 테스트를 실행하세요. 그렇지 않으면 예상치 못한 결과나 보안 위험을 초래할 수 있습니다. 일부 테스트가 실패하면 문제 해결을 위해 OpenSSL 문서를 참조하세요.
nmake
nmake test
...
All tests successful.
Files=325, Tests=3101, 822 wallclock secs ( 4.81 usr + 0.81 sys = 5.62 CPU)
Result: PASS
7. OpenSSL을 설치합니다:
nmake install
소프트웨어 구성 요소만 설치하려면(라이브러리, 헤더 파일만 설치하고 문서는 제외) nmake install_sw를 사용할 수 있습니다.
PCRE2 설치
1. CMake를 다운로드하고 설치하세요 (MSI 설치 파일로 제공됩니다).
설치 중에 설치 폴더를 C:\Zabbix\CMake로 지정하고 Add CMake to the PATH environment variable 옵션을 선택하세요.
2. PCRE2 소스 아카이브를 다운로드하고 C:\Zabbix\pcre2-10.45에 압축을 해제하세요.
3. 압축 해제된 PCRE2 디렉터리에 build 디렉터리를 만들고 해당 디렉터리로 이동하세요:
mkdir C:\Zabbix\pcre2-10.45\build
cd C:\Zabbix\pcre2-10.45\build
4. PCRE2를 구성하세요:
cmake -G "NMake Makefiles" -DPCRE_SUPPORT_UNICODE_PROPERTIES=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="C:\Program Files\Zabbix\x64\PCRE2" "C:\Zabbix\pcre2-10.45"
오류가 발생할 경우, CMake 빌드 프로세스를 재시도하기 전에 CMake 캐시를 삭제하는 것이 권장됩니다.
캐시(CMakeCachecache.txt)는 압축 해제된 PCRE2 디렉터리의 build 디렉터리에 위치합니다.
5. NMake를 사용하여 PCRE2를 빌드하세요:
nmake
6. PCRE2를 설치하세요:
cmake --install .
Compiling Zabbix agent
1. Download the Zabbix source archive and extract it to C:\Zabbix\zabbix-7.0.0.
If you need to generate a source archive from the raw source repository (e.g., to apply custom patches or build from the latest source code), run the following commands on a Linux machine:
git clone https://git.zabbix.com/scm/zbx/zabbix.git
cd zabbix
./bootstrap.sh
./configure --enable-agent --enable-ipv6 --prefix=`pwd`
make dist
This will create a source archive, which can then be copied to a Windows machine.
2. Navigate to the Zabbix build directory and compile Zabbix agent (or other components); make sure to correctly specify the directories where OpenSSL and PCRE2 are installed:
cd C:\Zabbix\zabbix-7.0.0\build\win32\project
# With TLS support:
nmake /K -f Makefile_agent PCRE2INCDIR="C:\Program Files\Zabbix\x64\PCRE2\include" PCRE2LIBDIR="C:\Program Files\Zabbix\x64\PCRE2\lib" TLS=openssl TLSINCDIR="C:\Program Files\Zabbix\x64\OpenSSL\include" TLSLIBDIR="C:\Program Files\Zabbix\x64\OpenSSL\lib"
nmake /K -f Makefile_get PCRE2INCDIR="C:\Program Files\Zabbix\x64\PCRE2\include" PCRE2LIBDIR="C:\Program Files\Zabbix\x64\PCRE2\lib" TLS=openssl TLSINCDIR="C:\Program Files\Zabbix\x64\OpenSSL\include" TLSLIBDIR="C:\Program Files\Zabbix\x64\OpenSSL\lib"
nmake /K -f Makefile_sender PCRE2INCDIR="C:\Program Files\Zabbix\x64\PCRE2\include" PCRE2LIBDIR="C:\Program Files\Zabbix\x64\PCRE2\lib" TLS=openssl TLSINCDIR="C:\Program Files\Zabbix\x64\OpenSSL\include" TLSLIBDIR="C:\Program Files\Zabbix\x64\OpenSSL\lib"
# Without TLS support:
nmake /K -f Makefile_agent PCRE2INCDIR="C:\Program Files\Zabbix\x64\PCRE2\include" PCRE2LIBDIR="C:\Program Files\Zabbix\x64\PCRE2\lib"
nmake /K -f Makefile_get PCRE2INCDIR="C:\Program Files\Zabbix\x64\PCRE2\include" PCRE2LIBDIR="C:\Program Files\Zabbix\x64\PCRE2\lib"
nmake /K -f Makefile_sender PCRE2INCDIR="C:\Program Files\Zabbix\x64\PCRE2\include" PCRE2LIBDIR="C:\Program Files\Zabbix\x64\PCRE2\lib"
After compilation, Zabbix component binaries will be located in C:\Zabbix\zabbix-7.0.0\bin\win64.
Zabbix agent configuration file is located in C:\Zabbix\zabbix-7.0.0\conf.
To run the agent, copy zabbix_agent.exe and its configuration file to a dedicated folder (e.g., C:\Zabbix\agent) and then run the agent:
mkdir C:\Zabbix\agent
copy C:\Zabbix\zabbix-7.0.0\bin\win64\zabbix_agentd.exe C:\Zabbix\agent\
copy C:\Zabbix\zabbix-7.0.0\conf\zabbix_agentd.win.conf C:\Zabbix\agent\
C:\Zabbix\agent\zabbix_agentd.exe -c C:\Zabbix\agent\zabbix_agentd.win.conf -f