Computer >> 컴퓨터 >  >> 시스템 >> Windows Server

Zabbix 설치 및 기본 구성 완벽 가이드: Ubuntu/CentOS 서버부터 Windows 에이전트까지

Zabbix는 기업 수준의 오픈소스 모니터링 시스템으로, 현재 가장 인기 있고 강력한 무료 모니터링 솔루션 중 하나입니다. 설치와 구성이 간단하여 수백 대의 호스트로 구성된 대규모 인프라부터 소규모 환경까지 모두 모니터링할 수 있습니다. 이 글에서는 Linux Ubuntu와 CentOS에 웹 인터페이스가 포함된 Zabbix 서버 5.0을 설치·구성하는 방법, Windows 또는 Linux 서버에 Zabbix 에이전트를 설치하는 방법, 그리고 새로운 호스트를 모니터링 대상으로 추가하는 방법까지 단계별로 살펴보겠습니다.

아래 스크린샷은 Zabbix 서버 대시보드 인터페이스입니다.

Zabbix 설치 및 기본 구성 완벽 가이드: Ubuntu/CentOS 서버부터 Windows 에이전트까지

Zabbix의 구조와 동작 원리

Zabbix는 간단하고 구성이 쉬운 시스템으로, 서버·프록시·에이전트는 C 언어로, 프론트엔드는 PHP로 작성되었습니다. Zabbix 서버Zabbix 프록시는 Linux 시스템에서만 동작하며, Zabbix 에이전트는 다양한 지원 운영체제와 플랫폼에 설치할 수 있습니다.

Zabbix 서버 설치는 다음 요소로 구성됩니다.

  • zabbix_server 바이너리 (일반적으로 서비스로 동작)
  • MySQL/MariaDB/PostgreSQL 데이터베이스
  • PHP 핸들러가 있는 Apache2/Nginx 웹 서버
  • 프론트엔드 사이트 파일 (.php, .js, .css 등)

일반적인 동작 방식은 다음과 같습니다.

  • Zabbix 에이전트가 서버로 데이터를 전송합니다.
  • Zabbix 서버가 데이터를 수신하고 처리합니다.
  • 수신한 데이터가 지정된 조건을 충족하면 트리거(Trigger)가 활성화됩니다.
  • 활성화된 트리거는 문제 발생을 의미하며, 프론트엔드(웹 사이트)에 알림이 표시되고, 설정에 따라 이메일 알림이 전송되거나 특정 작업(예: 모니터링 대상 서비스 재시작)이 수행됩니다.

Zabbix는 거의 모든 알려진 프로토콜과 연동할 수 있으며, 외부 스크립트 기능을 활용하면 임의의 실행 스크립트/바이너리를 실행하고 데이터를 수신할 수도 있습니다.

Linux(Ubuntu, CentOS)에 Zabbix 서버 설치하기

이 튜토리얼에서는 패키지 관리자를 사용해 Linux(Ubuntu Server 18.04, CentOS 8)에 Zabbix 서버를 설치하는 방법을 소개합니다.

먼저 다운로드 페이지(https://www.zabbix.com/download)에 접속하여 사용 중인 Linux 배포판에 맞는 저장소를 선택합니다. 주요 Linux 배포판용 패키지가 모두 준비되어 있습니다.

예를 들어 Ubuntu 18.04에 설치하려면 다음 순서로 선택합니다.

Zabbix 버전(5.0 LTS) → OS 배포판(Ubuntu) → OS 버전(18.04 Bionic) → 데이터베이스(MySQL) → 웹 서버(Nginx 또는 Apache)

Zabbix 설치 및 기본 구성 완벽 가이드: Ubuntu/CentOS 서버부터 Windows 에이전트까지

Ubuntu 18.04 설치 절차

저장소를 다운로드하고 추가합니다.

# wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.0-1+bionic_all.deb
# dpkg -i zabbix-release_5.0-1+bionic_all.deb
# apt update

이후 필요한 패키지를 설치합니다.

# apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-agent

Zabbix 설치 및 기본 구성 완벽 가이드: Ubuntu/CentOS 서버부터 Windows 에이전트까지

CentOS 8/RHEL 8 설치 절차

CentOS 8/RHEL 8에 Zabbix를 설치하려면 최신 Zabbix 버전의 저장소를 연결합니다(4.0/5.0 LTS 브랜치 또는 최신 Zabbix 5.2 중 선택 가능).

# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
# dnf clean all

서버에 nginx, MySQL/MariaDB, php, php-fpm이 이미 설치되어 있다고 가정하고, dnf(yum) 패키지 관리자로 Zabbix 서버와 에이전트를 설치합니다.

# dnf install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-agent

Zabbix 데이터베이스 생성

MySQL에서 Zabbix용 데이터베이스를 생성합니다(PostgreSQL을 사용하려면 앞선 명령어에서 'mysql'을 'pgsql'로 바꾸면 됩니다).

데이터베이스를 생성하고, Zabbix가 DB에 접근할 사용자 계정에 권한을 부여합니다.

mysql -uroot
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'ZabbixP@$$w0rd';
mysql> quit;

Zabbix 데이터베이스를 임포트합니다. 사용자 생성 시 지정한 비밀번호를 입력합니다.

# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p Zabbix

서버 설정 파일 편집

/etc/zabbix/zabbix_server.conf 파일을 편집하여 생성한 사용자의 비밀번호를 지정합니다.

DBPassword=Zabbix_User_Password

웹 서버로 nginx를 사용하는 경우, nginx.conf에서 다음 줄의 주석을 해제합니다.

# listen 80;
# server_name example.com;

#를 제거하고 example.com을 Zabbix 서버의 호스트명(예: test.zabbix.local)으로 변경합니다. Apache를 사용하는 경우에는 /etc/httpd/conf.d/zabbix.conf를 편집합니다.

PHP에서 시간대를 설정합니다. /etc/zabbix/php-fpm.conf에서 다음 줄의 주석을 해제합니다.

php_value[date.timezone] = Asia/Seoul

Zabbix 서버의 시간이 신뢰할 수 있는 NTP 소스와 동기화되어 있는지 반드시 확인하세요. 필요하다면 /etc/php.ini에서 다음 PHP 설정값도 조정할 수 있습니다.

memory_limit 128M
upload_max_filesize 8M
post_max_size 16M
max_execution_time 300
max_input_time 300
max_input_vars 10000

zabbix-server 서비스를 부팅 시 자동 시작에 등록하고 실행합니다.

# systemctl enable zabbix-server zabbix-agent nginx php7.2-fpm
# systemctl restart zabbix-server zabbix-agent nginx php7.2-fpm

Zabbix 웹 인터페이스 구성

이제 Zabbix 프론트엔드(웹 인터페이스)를 구성해야 합니다. 브라우저에서 앞서 지정한 Zabbix 서버 URL(예: test.zabbix.local, hosts 파일이나 DNS 서버에 등록하는 것을 잊지 마세요)에 접속합니다. 설치 마법사의 모든 요구 사항 옆에 OK가 표시되는지 확인합니다.

Zabbix 설치 및 기본 구성 완벽 가이드: Ubuntu/CentOS 서버부터 Windows 에이전트까지

데이터베이스 연결 파라미터와 접속 계정 정보를 입력합니다. 앞서 생성한 사용자 이름과 비밀번호를 사용합니다.

Zabbix 설치 및 기본 구성 완벽 가이드: Ubuntu/CentOS 서버부터 Windows 에이전트까지

Zabbix 서버 이름을 지정합니다. 포트는 기본값인 TCP 10051을 그대로 사용하는 것을 권장합니다.

기본적으로 Zabbix는 두 개의 네트워크 포트를 사용합니다.

  • TCP 10050 — 패시브 에이전트 포트로, Zabbix 서버가 클라이언트를 폴링할 때 사용
  • TCP 10051 — Zabbix 서버가 클라이언트(액티브 에이전트)로부터 데이터를 수신하는 포트

방화벽에서 이 포트들을 열어야 합니다. 예를 들어 CentOS에서 실행 중인 Zabbix 서버에서는 firewall-cmd로 포트를 열 수 있습니다.

# firewall-cmd --add-service={http,https} --permanent
# firewall-cmd --add-port={10051/tcp,10050/tcp} --permanent

에이전트 측에서는 10050 포트만 열면 됩니다.

# firewall-cmd --permanent --add-port=10050/tcp

firewalld를 재시작합니다.

# firewall-cmd --reload

Zabbix 설치 및 기본 구성 완벽 가이드: Ubuntu/CentOS 서버부터 Windows 에이전트까지

Next StepFinish를 클릭해 설치를 마칩니다. 설치가 완료되면 로그인 화면이 나타나며, 기본 계정은 Admin, 기본 비밀번호는 zabbix입니다(반드시 변경하세요).

Zabbix 설치 및 기본 구성 완벽 가이드: Ubuntu/CentOS 서버부터 Windows 에이전트까지

이것으로 Zabbix 서버 설치가 완료되었습니다.

다른 OS에 Zabbix 서버를 설치하는 단계별 가이드, 소스 코드로 zabbix-server를 빌드하는 방법, Docker 컨테이너로 실행하는 방법은 https://www.zabbix.com/download에서 확인할 수 있습니다. 또한 Active Directory LDAP을 이용한 사용자 인증도 구성할 수 있습니다.

Windows에 Zabbix 에이전트 설치하기

이제 Windows 서버에 Zabbix 에이전트를 설치하고 모니터링 서버에 등록해 보겠습니다. Windows용 Zabbix 에이전트는 https://www.zabbix.com/download_agents에서 다운로드할 수 있습니다.

Zabbix 설치 및 기본 구성 완벽 가이드: Ubuntu/CentOS 서버부터 Windows 에이전트까지

필요한 에이전트 버전을 선택합니다. 여기서는 msi(amd64)(OpenSSL 미포함)를 선택했습니다. GPO나 SCCM을 통해 도메인 서버/컴퓨터에 Zabbix 에이전트를 배포할 계획이라면 바이너리와 구성 파일이 포함된 ZIP 아카이브를 다운로드하는 것이 좋습니다.

설치 프로그램을 실행하고, 라이선스에 동의한 뒤 Zabbix 서버 연결 설정을 지정합니다. "Server or Proxy for active checks" 필드에는 IP:PORT 형식으로 IP 주소를 입력해야 합니다. 기본 포트를 그대로 사용한다면 192.168.20.30:10051처럼 입력합니다.

Zabbix 설치 및 기본 구성 완벽 가이드: Ubuntu/CentOS 서버부터 Windows 에이전트까지

Next를 몇 번 클릭한 후 Install을 눌러 설치를 완료합니다.

에이전트가 정상적으로 설치되었는지 확인합니다. 서비스 목록에 Zabbix Agent가 표시되어야 합니다.

Zabbix 설치 및 기본 구성 완벽 가이드: Ubuntu/CentOS 서버부터 Windows 에이전트까지

Windows 호스트의 방화벽에서 Zabbix 서버 IP 주소로부터의 인바운드 연결을 허용합니다.

New-NetFirewallRule -DisplayName "ZabbixMonitoring" -RemoteAddress 192.168.20.30 -Direction Inbound -Protocol TCP -LocalPort 10050 -Action Allow

Zabbix 서버에 새 호스트 추가하기

에이전트가 정상 동작하는지 확인하려면 testnode2 호스트를 Zabbix 서버에 추가하고 몇 가지 검사(템플릿)를 할당해야 합니다.

참고: Zabbix에는 두 가지 유형의 검사가 있습니다.

  • 패시브(Passive) — Zabbix 서버가 에이전트에게 데이터를 요청
  • 액티브(Active) — 에이전트가 서버로 데이터를 전송

에이전트 설치 시 액티브 검사를 위해 서버를 IP:PORT 형식으로 지정했습니다.

새 모니터링 호스트는 Zabbix 웹 인터페이스를 통해 추가할 수 있습니다. ConfigurationHosts로 이동합니다.

Create host를 클릭하고 세부 정보를 입력합니다. 이때 Host name은 장치의 호스트명 또는 에이전트 구성 파일의 Hostname 파라미터 값과 정확히 일치해야 합니다.

Zabbix 설치 및 기본 구성 완벽 가이드: Ubuntu/CentOS 서버부터 Windows 에이전트까지

Templates 탭에서 내장 Windows 템플릿을 추가합니다. Zabbix의 템플릿은 하나 이상의 호스트에 할당할 수 있는 아이템, 트리거, 그래프, 디스커버리 규칙의 집합입니다.

내장 템플릿에는 "active" 라벨이 붙어 있으며, 이는 액티브 검사가 사용된다는 의미입니다.

Zabbix 설치 및 기본 구성 완벽 가이드: Ubuntu/CentOS 서버부터 Windows 에이전트까지

Add를 클릭합니다. 서버와 에이전트가 서로를 인식할 때까지 기다리지 않으려면(보통 몇 분 소요) testnode2에서 Zabbix Agent 서비스를 재시작하고 에이전트 로그(C:\Program Files\Zabbix Agent\zabbix_agentd.txt)를 확인합니다.

Zabbix 설치 및 기본 구성 완벽 가이드: Ubuntu/CentOS 서버부터 Windows 에이전트까지

Zabbix 설치 및 기본 구성 완벽 가이드: Ubuntu/CentOS 서버부터 Windows 에이전트까지

"started [active checks #1]" 메시지가 표시되면 서버에서 해당 호스트의 액티브 검사가 발견되었다는 뜻입니다. 이후 Zabbix 서버가 에이전트로부터 수신한 데이터를 확인합니다. MonitoringLatest Data로 이동하여 Hosts 필드에서 해당 호스트를 선택합니다.

Zabbix 설치 및 기본 구성 완벽 가이드: Ubuntu/CentOS 서버부터 Windows 에이전트까지

이 섹션에서는 선택한 호스트 또는 호스트 그룹의 최신 데이터가 Zabbix 서버에 도착한 순서대로 표시됩니다.

참고로 이 예시의 Zabbix 대시보드에는 BITS 서비스가 실행 중이지 않다는 알림이 표시되어 있습니다. 이는 호스트에 내장 템플릿을 할당했기 때문으로, 템플릿 중 하나에 BITS 검사가 포함되어 있고 BITS 서비스가 Running 상태가 아니면 해당 트리거가 활성화됩니다.

Zabbix 설치 및 기본 구성 완벽 가이드: Ubuntu/CentOS 서버부터 Windows 에이전트까지

이것으로 Windows용 에이전트 구성이 완료되었습니다.

Linux에 Zabbix 에이전트 설치하기

이제 Linux에 Zabbix 에이전트를 설치해 보겠습니다. Ubuntu Server 18.04에 패키지 관리자로 설치하려면 Zabbix 저장소를 다운로드해 설치한 뒤, 저장소에서 Zabbix 에이전트를 설치합니다.

# wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.0-1+$(lsb_release -sc)_all.deb
# sudo dpkg -i zabbix-release_5.0-1+$(lsb_release -sc)_all.deb
# sudo apt update
# sudo apt -y install zabbix-agent

CentOS에 저장소를 추가하고 Zabbix 에이전트를 설치하려면 다음 명령어를 사용합니다.

# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
# dnf clean all
# dnf install zabbix-agent

Zabbix 에이전트를 시작하기 전에 구성 파일 /etc/zabbix/zabbix_agentd.conf를 편집하여 액티브 검사용 Zabbix 서버 IP 주소를 지정합니다.

Server=IP
ServerActive=192.168.20.30:10051
Hostname=testagent

에이전트 서비스를 시작합니다.

# service zabbix-agent start

에이전트가 정상적으로 시작되었는지 확인합니다.

# cat /var/log/zabbix/zabbix_agentd.log

Zabbix 설치 및 기본 구성 완벽 가이드: Ubuntu/CentOS 서버부터 Windows 에이전트까지

"cannot parse list of active checks"라는 메시지는 서버에 해당 호스트의 액티브 검사가 아직 없다는 의미입니다.

Windows 에이전트와 마찬가지로 Linux 호스트도 Zabbix에 추가해야 합니다. Zabbix 서버의 호스트 설정에서 Host name 파라미터가 에이전트 구성 파일에 지정한 Hostname과 일치해야 한다는 점에 유의하세요. 위 구성 파일에서는 호스트명을 testagent로 지정했습니다.

Zabbix 설치 및 기본 구성 완벽 가이드: Ubuntu/CentOS 서버부터 Windows 에이전트까지

Zabbix 에이전트를 재시작하고 로그를 확인합니다. 에이전트의 데이터가 Zabbix 서버에 표시되는지 확인하면 Linux용 Zabbix 에이전트 구성이 완료됩니다.

다음 글에서는 Zabbix에서 ICMP Ping을 활용한 에이전트리스(agentless) 호스트 가용성 모니터링 방법을 살펴보겠습니다.