Windows 에이전트 빌드
개요
이 페이지에서는 Windows 10(64비트)에서 소스 코드를 사용하여 Zabbix 에이전트를 빌드하는 방법을 설명합니다.
이 지침은 Visual Studio 2022를 지원하는 Windows 버전에 적용됩니다.
Zabbix 에이전트를 빌드하려면 다음이 필요합니다:
- C 컴파일러(Build Tools for Visual Studio 2022에 포함)
- OpenSSL(Zabbix의 암호화 기능용)
- PCRE2(Perl 호환 정규 표현식; Zabbix의 정규 표현식 패턴 매칭 기능용)
다음 방법 중 하나로 Zabbix 에이전트를 빌드할 수 있습니다:
모니터링 요구 사항에 따라 추가 라이브러리가 필요할 수 있습니다. 자세한 내용은 요구 사항을 참조하세요.
빌드 프로세스를 시작하기 전에 다음 사항을 유의하세요:
- 명령을 실행하려면 보호된 폴더에 쓸 수 있는 충분한 권한을 가진 사용자가 "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로 에이전트를 빌드하는 데 필요한 도구가 포함된 C++를 사용한 데스크톱 개발 워크로드를 반드시 선택하세요:
- C 컴파일러(Microsoft Visual C++)
- NMake 명령줄 도구
- vcpkg 패키지 관리자
- "x64 Native Tools Command Prompt"
2. cmd.exe를 관리자 권한으로 열고 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.4.0에 압축을 푸세요.
4. Zabbix 빌드 디렉터리(C:\Zabbix\zabbix-7.4.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. "x64 Native Tools Command Prompt"를 열고 스크립트를 실행하여 Zabbix 에이전트를 컴파일하세요:
cd C:\Zabbix\zabbix-7.4.0\build\win32\project
build.bat
다른 명령 프롬프트를 열었다면 먼저 Visual Studio 빌드 환경을 초기화하세요:
"%ProgramFiles(x86)%\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x64
cd C:\Zabbix\zabbix-7.4.0\build\win32\project
build.bat
공백이 포함된 경로는 따옴표로 감싸세요.
컴파일이 완료되면 Zabbix 구성 요소의 바이너리는 C:\Zabbix\zabbix-7.4.0\bin\win64에 저장됩니다.
Zabbix 에이전트 구성 파일은 C:\Zabbix\zabbix-7.4.0\conf에 있습니다.
에이전트를 실행하려면 zabbix_agent.exe와 해당 구성 파일을 전용 폴더(예: C:\Zabbix\agent)에 복사한 다음 에이전트를 실행하세요:
mkdir C:\Zabbix\agent
copy C:\Zabbix\zabbix-7.4.0\bin\win64\zabbix_agent.exe C:\Zabbix\agent\
copy C:\Zabbix\zabbix-7.4.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 사용이 불가능한 제한된 환경에 있는 사용자에게 적합합니다.
이 섹션에서는 필요한 빌드 도구와 의존성(Perl, OpenSSL, PCRE2)을 설치한 다음 에이전트를 컴파일하는 Zabbix 에이전트 수동 빌드 방법을 설명합니다.
빌드 도구 설치
1. Build Tools for Visual Studio 2022를 다운로드하여 설치하세요. 설치 중에는 에이전트를 수동으로 빌드하는 데 필요한 도구가 포함된 C++를 사용한 데스크톱 개발 워크로드를 반드시 선택하세요:
- C 컴파일러(Microsoft Visual C++)
- NMake 명령줄 도구
- "x64 Native Tools Command Prompt"
OpenSSL 설치
TLS 지원 없이 Zabbix 에이전트를 컴파일하려면 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 에이전트를 컴파일할 때 OpenSSL용 사용자 지정 디렉터리(예: C:\zabbix 또는 C:\openssl-64bit)를 선택한 경우, 관리자가 아닌 사용자의 해당 디렉터리에 대한 쓰기 권한을 반드시 제거하세요.
그렇지 않으면 에이전트가 일반 사용자가 수정할 수 있는 경로에서 SSL 설정을 불러오게 되어 잠재적인 보안 취약점이 발생할 수 있습니다.
no-shared옵션은 OpenSSL 정적 라이브러리인 libcrypto.lib와 libssl.lib가 자체적으로 동작하도록 하므로, Zabbix 바이너리에 OpenSSL이 포함되어 외부 DLL이 필요하지 않습니다. 따라서 OpenSSL 라이브러리 없이도 Zabbix 바이너리를 다른 Windows 컴퓨터에 복사할 수 있습니다. 다만 새로운 OpenSSL 버그 수정 버전이 출시되면 Zabbix 에이전트를 다시 컴파일해야 합니다.no-shared옵션을 사용하지 않으면 Zabbix는 실행 시 OpenSSL DLL에 의존합니다. 이 경우 OpenSSL 업데이트 시 Zabbix 에이전트를 다시 컴파일할 필요가 없을 수 있습니다. 다만 다른 컴퓨터에 복사할 때는 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로 지정하고 PATH 환경 변수에 CMake 추가 옵션을 선택하세요.
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 디렉터리의 빌드 디렉터리에 있습니다.
5. NMake를 사용하여 PCRE2를 빌드하세요:
nmake
6. PCRE2를 설치하세요:
cmake --install .
Zabbix 에이전트 컴파일
1. Zabbix 소스 압축 파일을 다운로드하고 C:\Zabbix\zabbix-7.4.0에 압축을 푸세요.
원본 소스 저장소에서 소스 압축 파일을 생성해야 하는 경우(예: 사용자 지정 패치 적용 또는 최신 소스 코드로 빌드), Linux 컴퓨터에서 다음 명령을 실행하세요:
git clone https://git.zabbix.com/scm/zbx/zabbix.git
cd zabbix
./bootstrap.sh
./configure
make dist
이 명령을 실행하면 소스 압축 파일이 생성되며, 이를 Windows 컴퓨터로 복사할 수 있습니다.
2. Zabbix 빌드 디렉터리로 이동하고 "x64 Native Tools Command Prompt"를 열어 Zabbix 에이전트(또는 다른 구성 요소)를 컴파일하세요. OpenSSL과 PCRE2가 설치된 디렉터리를 정확하게 지정해야 합니다:
# If you opened a different command prompt, initialize the Visual Studio build environment first:
"%ProgramFiles(x86)%\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x64
cd C:\Zabbix\zabbix-7.4.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"
공백이 포함된 경로는 따옴표로 감싸세요.
컴파일이 완료되면 Zabbix 구성 요소의 바이너리는 C:\Zabbix\zabbix-7.4.0\bin\win64에 저장됩니다.
Zabbix 에이전트 구성 파일은 C:\Zabbix\zabbix-7.4.0\conf에 있습니다.
에이전트를 실행하려면 zabbix_agent.exe와 해당 구성 파일을 전용 폴더(예: C:\Zabbix\agent)에 복사한 다음 에이전트를 실행하세요:
mkdir C:\Zabbix\agent
copy C:\Zabbix\zabbix-7.4.0\bin\win64\zabbix_agentd.exe C:\Zabbix\agent\
copy C:\Zabbix\zabbix-7.4.0\conf\zabbix_agentd.win.conf C:\Zabbix\agent\
C:\Zabbix\agent\zabbix_agentd.exe -c C:\Zabbix\agent\zabbix_agentd.win.conf -f