SSD Nodes Learn Hosting plans →
가이드 Matt Connor작성자 Matt Connor

Ubuntu 24.04에 Zabbix 7.0 LTS 설치하기

Ubuntu 24.04에 Zabbix 7.0 LTS를 설치하고 repository 추가, MariaDB/MySQL schema 가져오기, nginx frontend와 agent2 설정 방법을 단계별로 설명합니다. 설정 오류 해결법도 다룹니다.

구축할 시스템

Ubuntu 24.04 VPS 한 대에서 Zabbix 7.0 LTS 스택 전체를 운영합니다. 여기에는 폴링과 알림을 담당하는 zabbix-server 데몬, 모든 메트릭을 저장하는 MariaDB/MySQL 데이터베이스, nginx로 서비스되는 PHP 프론트엔드, 그리고 서버 자체의 메트릭을 수집하는 zabbix-agent2가 포함됩니다. 구축이 완료되면 두 번째 서버를 등록하고 템플릿을 연결하여, 디스크가 가득 차거나 서비스가 중단되는 즉시 이메일 알림을 받을 수 있습니다.

Zabbix는 단순한 상태 페이지 도구보다 훨씬 강력합니다. 템플릿, 트리거, 에스컬레이션, 이력 보관 기능을 갖춘 실시간 시계열 시스템입니다. 대부분의 어려움은 사람들이 흔히 건너뛰는 세 가지 단계, 즉 데이터베이스 스키마 가져오기, 서버가 실제로 읽어 들일 데이터베이스 비밀번호 설정, nginx 설정 파일의 두 줄 주석 해제에서 발생합니다. 이 과정만 정확히 수행하면 나머지는 마법처럼 쉽게 진행됩니다. 단순히 서비스의 가동 여부 확인과 공유 가능한 상태 페이지가 필요하다면 가벼운 Uptime Kuma 상태 모니터를 컨테이너 하나로 구성하는 것이 좋습니다. Zabbix는 다수의 호스트에 걸쳐 메트릭별 임계값 설정과 에스컬레이션이 필요할 때 그 진가를 발휘합니다.

7.0 LTS 버전을 사용하십시오. 서버, 프론트엔드, agent2, 스키마가 동일한 버전으로 관리되며 수년간 보안 업데이트를 지원받습니다. 아래의 저장소 파일명을 복사하기 전에 공식 Zabbix 다운로드 페이지를 확인하십시오. latest 릴리스 패키지는 7.0 저장소를 구성할 뿐 특정 포인트 릴리스를 지정하지는 않습니다. 이후 apt가 저장소에 있는 최신 7.0.x 패키지를 설치하므로 항상 최신 버전을 유지하게 됩니다. 페이지에 번호가 매겨진 7.0-N 릴리스 패키지가 나열될 수 있으나, 해당 번호는 저장소 설정 버전을 의미하며 Zabbix 빌드 버전과는 무관합니다. 이 가이드의 나머지 모든 명령어는 7.0 라인 전체에서 안정적으로 작동합니다.

크기, 포트 및 사전 요구 사항

root 또는 sudo 권한이 있는 새로운 Ubuntu 24.04 KVM VPS를 기준으로 합니다. 필요한 리소스는 현실적으로 산정해야 합니다. 여러 호스트를 모니터링하면서 한 대의 서버에서 server, database, nginx, PHP를 함께 실행하려면 RAM 2 GB와 vCPU 2개가 최소 사양입니다. RAM 1 GB인 서버도 부팅은 되지만 history가 쌓이면 database의 메모리가 부족해집니다. 수십 대를 넘기면 4 GB를 계획하고, 100대를 넘기면 database를 별도 서버로 분리합니다. 디스크 사용량은 수집하는 item 수와 history 보존 기간에 따라 증가합니다. 시작할 때는 수 GB를 할당하면 됩니다. housekeeper가 설정한 보존 기간에 따라 오래된 데이터를 정리합니다.

포트는 frontend에 80과 443을 사용합니다. 이 포트는 공개하거나 자체 IP로 제한할 수 있습니다. 서버는 active agent가 데이터를 전송하는 TCP 10051에서 수신하고, 각 agent는 서버가 polling할 수 있도록 TCP 10050에서 수신합니다. 앞단에 firewall이 있다면 외부에 공개하는 포트만 엽니다. frontend에 대한 DNS A record를 준비하는 것이 좋습니다. 실제 certificate를 사용하려면 필요하기 때문입니다. Zabbix box는 실행 중인 다른 모든 서비스를 감시하므로, 나중에 덧붙이는 구성 요소가 아니라 2026년에 운영할 가치가 있는 더 넓은 self-hosting 스택에 포함해야 합니다.

1단계, 공식 Zabbix 7.0 저장소 추가

zabbix-release 패키지는 한 가지 작업만 수행한다. 시스템에 apt 소스 목록과 서명 키를 설치한다. 이를 설치한 다음 패키지 색인을 갱신한다.

wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb
sudo dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb
sudo apt update

wget이 404 Not Found을 반환하면 파일 이름이 변경된 것이다. Zabbix 다운로드 페이지를 열고 Ubuntu 24.04를 선택한 다음, 페이지에 표시되는 정확한 zabbix-release URL을 복사한다. 정상적인 apt update에는 repo.zabbix.com 행이 표시되고 키 경고는 표시되지 않는다. The following signatures couldn't be verified because the public key is not available는 릴리스 패키지가 키를 설치하지 않았다는 의미이므로 dpkg -i을 다시 실행한 후 다시 업데이트한다.

2단계, 서버, 프런트엔드 및 agent를 설치합니다

MySQL용으로 빌드된 서버, PHP 프런트엔드, nginx 설정, SQL 스키마 파일 및 agent2를 한 번에 설치합니다.

sudo apt install -y zabbix-server-mysql zabbix-frontend-php \
  zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2

zabbix-server-mysql은 MySQL/MariaDB용으로 컴파일된 서버입니다. PostgreSQL을 사용하려면 대신 zabbix-server-pgsql을 설치하고 아래의 데이터베이스 단계를 조정합니다. zabbix-sql-scripts에는 다음 단계에서 가져올 스키마가 포함되어 있습니다. 7.0에서는 별도의 패키지이므로, 이 패키지를 빠뜨리면 나중에 가져오기 경로를 찾을 수 없게 됩니다. 이 패키지들은 데이터베이스 엔진을 설치하지 않으므로, 시스템에 아직 데이터베이스 엔진이 없다면 지금 MariaDB를 설치합니다.

sudo apt install -y mariadb-server
sudo systemctl enable --now mariadb

3단계, 올바른 문자 집합으로 데이터베이스 생성

Zabbix는 데이터 정렬(collation)에 엄격합니다. utf8mb4_bin을 사용하는 utf8mb4 또는 utf8_bin을 사용하는 이전의 utf8(utf8mb3라고도 함)만 지원하며, 문서에서는 이 가이드에서 사용하는 utf8mb4_bin를 사용하는 utf8mb4을 강력히 권장합니다. sudo mysql으로 루트 셸을 열고 다음을 실행하십시오.

CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER zabbix@localhost IDENTIFIED BY 'choose-a-strong-password';
GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost;
SET GLOBAL log_bin_trust_function_creators = 1;
FLUSH PRIVILEGES;

SET GLOBAL 줄은 데이터 가져오기를 위한 안전장치입니다. Zabbix 스키마는 가져오기 과정에서 결정론적 트리거를 생성하는데, zabbix과 같은 비-SUPER 계정은 바이너리 로깅이 활성화된 상태에서 이를 생성할 수 없습니다. MySQL 8은 기본적으로 바이너리 로깅을 활성화하며, 일부 관리형 MariaDB 빌드도 마찬가지입니다(일반 MariaDB는 그렇지 않습니다). 바이너리 로깅이 활성화된 서버에서 이 플래그를 생략하면 ERROR 1419 (HY000): You do not have the SUPER privilege and binary logging is enabled 오류와 함께 가져오기가 중단됩니다. 루트 계정으로 설정하면 이 문제가 해결되며, 가져오기가 끝난 후 다시 비활성화하면 됩니다. 비밀번호를 정확히 기록해 두십시오. 서버 설정 파일에도 동일한 문자열이 바이트 단위로 일치해야 합니다.

4단계. 스키마를 가져옵니다(사람들이 건너뛰는 단계)

새로 만든 프런트엔드가 로드되지 않는 가장 흔한 원인은 데이터베이스가 비어 있기 때문입니다. zabbix-sql-scripts에 포함된 스키마를 데이터베이스로 로드합니다.

zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | \
  mysql --default-character-set=utf8mb4 -uzabbix -p zabbix

zabbix 비밀번호를 묻습니다. 소규모 VPS에서는 30초에서 60초 정도 걸립니다. 성공해도 아무것도 출력하지 않으며, 이 경우 출력이 없는 것이 정상입니다. zcat: /usr/share/zabbix-sql-scripts/mysql/server.sql.gz: No such file or directory는 zabbix-sql-scripts 패키지가 설치되지 않았다는 뜻입니다(Step 2로 돌아갑니다). ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost'는 Step 3의 비밀번호 또는 grant가 잘못되었다는 뜻입니다. 작업이 끝나면 안전 플래그를 다시 비활성화합니다.

sudo mysql -e "SET GLOBAL log_bin_trust_function_creators = 0;"

sudo mysql -e "SELECT COUNT(*) FROM zabbix.users;"로 로드를 확인합니다. doesn't exist 오류가 아니라 숫자가 표시되면 스키마가 정상적으로 들어간 것입니다.

5단계, zabbix_server.conf에서 데이터베이스 비밀번호 설정

서버는 /etc/zabbix/zabbix_server.conf에서 데이터베이스 인증 정보를 읽는다. 설정해야 하는 항목은 비밀번호뿐이며, DBName와 DBUser은 이미 zabbix로 기본 설정되어 있다. # DBPassword= 줄의 주석을 제거하고 다음과 같이 설정한다.

DBName=zabbix
DBUser=zabbix
DBPassword=choose-a-strong-password

비밀번호는 3단계에서 설정한 값과 바이트 단위로 정확히 같아야 한다. DBPassword가 비어 있거나 잘못되면 나중에 표시되는 "Zabbix server is not running" 배너의 가장 흔한 원인이 된다. 데몬은 시작한 뒤 로그인에 실패하고 종료한다. 화면에는 원인이 표시되지 않으며 로그에서만 확인할 수 있다.

6단계: nginx가 frontend를 가리키도록 설정

zabbix-nginx-conf 패키지는 /etc/zabbix/nginx.conf에 server block을 설치하고 /etc/nginx/conf.d/zabbix.conf에서 nginx로 연결한다. 그러나 listen 및 server_name 줄이 주석 처리된 상태로 설치되므로, 해당 줄을 수정하기 전까지 nginx는 Zabbix에 아무것도 제공하지 않는다.

server {
    listen          80;
    server_name     zabbix.example.com;
    ...
}

도메인을 사용한다. 아직 DNS가 없다면 서버의 public IP를 사용한다. 주의할 점이 2가지 있다. Ubuntu의 기본 nginx welcome site도 port 80에서 수신 대기하고 default server로 지정되어 있다. 따라서 이름이 일치하지 않는 모든 요청을 이 사이트가 처리한다. 이 사이트를 제거하지 않으면 잘못된 페이지가 로드된다: sudo rm -f /etc/nginx/sites-enabled/default. 또한 /etc/nginx/conf.d/zabbix.conf이 어떤 이유로든 없을 수 있다. 이는 알려진 패키징 문제다. 이 경우 sudo ln -s /etc/zabbix/nginx.conf /etc/nginx/conf.d/zabbix.conf로 링크를 직접 만든다. 그런 다음 설정을 검사하고 다시 로드한다.

sudo nginx -t
sudo systemctl reload nginx

nginx -t은 test is successful을 출력해야 한다. 대신 nginx: [emerg] a duplicate default server for 0.0.0.0:80을 출력하면 기본 site와 Zabbix block이 모두 default_server을 사용하겠다고 선언한 것이다. 기본 site를 제거한 후 다시 검사한다. 더 흔한 경우는 conflicting server name 경고만 표시되고 검사는 통과하지만, 브라우저에는 여전히 기본 welcome page가 표시되는 경우다. 이는 일치하지 않는 이름에 대해 기본 site가 요청을 처리하기 때문이다. 기본 site를 제거하면 해결된다.

7단계, 서비스를 시작하고 활성화하기

서버, agent, PHP-FPM 및 nginx를 시작하고 활성화하여 재부팅 후에도 실행되도록 합니다.

sudo systemctl restart zabbix-server zabbix-agent2 nginx php8.3-fpm
sudo systemctl enable  zabbix-server zabbix-agent2 nginx php8.3-fpm

Ubuntu 24.04에는 PHP 8.3이 포함되어 있으므로 FPM 서비스는 php8.3-fpm입니다. zabbix-nginx-conf 패키지는 동일한 master에서 frontend를 실행합니다. 서버가 시작되어 계속 실행 중인지 확인합니다.

sudo systemctl status zabbix-server --no-pager
sudo tail -n 20 /var/log/zabbix/zabbix_server.log

정상적인 로그는 서버가 시작되었고 housekeeper, poller 및 trapper 프로세스가 실행 중이라는 내용으로 끝납니다. [Z3001] connection to database 'zabbix' failed: [1045] Access denied for user 'zabbix'@'localhost'이 표시되면 Step 5의 DBPassword이(가) 일치하지 않는 것입니다. 값을 수정한 후 다시 시작합니다. [Z3005] query failed: [1146] Table 'zabbix.dbversion' doesn't exist 행은 Step 4에서 schema import를 건너뛰었다는 뜻입니다. 따라서 서버가 읽을 데이터가 없습니다.

8단계: 웹 설정 마법사 완료

http://your-domain-or-ip로 이동합니다. Zabbix 설정 마법사가 열립니다. 다음 단계를 진행합니다.

  1. 환영, 언어를 선택합니다.
  2. 필수 구성 요소 확인, 모든 행이 기본 상태에서 OK로 표시되어야 합니다. 패키지에 포함된 /etc/zabbix/php-fpm.conf 풀은 Zabbix에 필요한 PHP 제한을 이미 높입니다.
  3. DB 연결 구성, 데이터베이스 유형은 MySQL, 호스트는 localhost, 포트는 0(기본 포트 또는 소켓을 의미함), 데이터베이스 이름은 zabbix, 사용자는 zabbix으로 지정하고 Step 3의 비밀번호를 입력합니다. 자격 증명이 잘못되었거나 스키마가 없으면 이 단계에서 바로 표시됩니다.
  4. 설정, Zabbix server 호스트 localhost와 포트 10051는 그대로 두고 설치 이름을 지정합니다.
  5. 설치 전 요약을 확인한 다음 설치를 클릭합니다. 설정 마법사가 /etc/zabbix/web/zabbix.conf.php를 작성합니다.
  6. 완료, Admin(대문자 A)로 로그인하고 비밀번호 zabbix을 사용한 뒤 사용자에서 즉시 비밀번호를 변경합니다.

마법사에 Cannot create the configuration file가 표시되면 웹 사용자가 /etc/zabbix/web/에 쓸 수 없는 상태입니다. 마법사가 제공하는 zabbix.conf.php를 다운로드하고 sudo를 사용해 해당 위치에 직접 배치한 다음 완료를 클릭합니다.

9단계, 로컬 호스트를 추가하고 템플릿 연결

Zabbix는 자체적으로 자동 모니터링하지 않는다. Data collection → Hosts → Create host로 이동하고, 호스트 이름을 zabbix-server으로 설정한다. Linux servers 그룹에 추가한 다음, IP 127.0.0.1 및 포트 10050를 사용하는 Agent 인터페이스를 추가한다. Templates에서 Linux by Zabbix agent을 연결한다. 이 템플릿은 수동 폴링 변형이며, Linux by Zabbix agent active에는 agent push 방식이 있다. 저장한다.

1분 이내에 호스트 행에 녹색 ZBX 레이블이 표시되고, Monitoring → Latest data에 메트릭이 수집된다. 빨간색 ZBX 레이블은 서버가 agent에 연결할 수 없다는 의미다. 아래에서 설명하는 오류 상태이며, 이 단계의 설정 실수가 아니다.

10단계, 유용한 트리거 하나와 이메일 알림 설정

Linux by Zabbix agent 템플릿에는 이미 높은 CPU 사용량, 낮은 메모리, 디스크 가득 참에 대한 트리거가 포함되어 있으므로 연결 즉시 알림을 받을 수 있습니다. 트리거 생성 방법을 익히기 위해 직접 하나를 추가해 보겠습니다. 호스트를 열고 Triggers → Create trigger로 이동하여 이름을 Root filesystem over 90% full on {HOST.NAME}로 지정하고, 심각도(Severity)를 High로 설정한 뒤 다음 표현식을 사용하십시오.

last(/zabbix-server/vfs.fs.dependent.size[/,pused])>90

vfs.fs.dependent.size[/,pused]은 템플릿의 파일 시스템 탐색 기능이 루트 파일 시스템에 대해 생성하는 백분율 사용량 항목입니다(7.0의 Linux 템플릿은 vfs.fs.get을 한 번 수집하고 마운트별 종속 항목을 파생합니다). 따라서 추가 데이터 수집 없이도 트리거가 작동합니다. 저장하십시오.

트리거는 Action을 통해 누군가에게 알림을 보내기 전까지는 대시보드에서 행의 색상만 변경합니다. Alerts → Media types → Email에서 SMTP 서버, 포트, 발신자 주소, 연결 보안(보통 STARTTLS) 및 릴레이 자격 증명을 설정한 후 Test를 수행하십시오. 여기서 실패하면 실제 알림이 작동하기 전에 SMTP 경로가 잘못된 것입니다. Users → Users → Admin → Media → Add에서 Admin 사용자에게 이메일 주소를 부여하고 알림을 받을 심각도를 선택하십시오. 그런 다음 Alerts → Actions → Trigger actions → Create action에서 연결하십시오. Trigger severity >= Warning와 같은 조건을 추가하고, Operations에서 Admin에게 이메일로 전송하도록 설정합니다. 저장하고 활성화하십시오. 채팅 알림을 선호하십니까? Zabbix 7.0은 Slack, Discord, Telegram을 위한 웹훅 미디어 타입을 제공하지만, 각각 SMTP 설정 대신 별도의 서비스 설정이 필요합니다. 예를 들어 Telegram은 BotFather를 통해 봇을 생성하고, 토큰을 미디어 타입의 api_token 매개변수에 입력하며, 수신자의 채팅 ID를 사용자의 Send to 필드에 입력해야 합니다. 통합 가이드(README)를 따르고, 미디어 타입을 활성화하고, 사용자에게 할당한 뒤 이메일과 동일하게 액션에서 사용하십시오.

에이전트로 두 번째 서버 모니터링

다른 서버를 모니터링하려면 해당 서버에도 Zabbix repository를 추가해야 한다. Ubuntu 24.04에는 Zabbix 패키지가 기본으로 포함되어 있지 않으므로 agent만 설치한다.

wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb
sudo dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb
sudo apt update
sudo apt install -y zabbix-agent2

/etc/zabbix/zabbix_agent2.conf을 편집한다. 수동 폴링에는 Server을 Zabbix server의 IP로 설정한다. 능동 검사에는 ServerActive와, frontend에서 생성할 host와 일치하는 고유한 Hostname을 설정한다.

Server=10.0.0.10
ServerActive=10.0.0.10
Hostname=web-01

sudo systemctl restart zabbix-agent2을 실행하고 Zabbix server에서 이 서버로 들어오는 TCP 10050을 허용한다. 재시작이 필요하다. 패키지는 설치 직후 제공된 Server=127.0.0.1 설정으로 agent를 시작하며, agent는 시작할 때만 설정 파일을 읽는다. enable --now은 agent가 이미 실행 중인 것을 확인하고 아무 작업도 하지 않으므로, agent는 계속 Zabbix server의 연결을 거부한다. 패키지가 unit도 활성화했으므로 부팅 시 자동 시작은 이미 설정되어 있다. frontend로 돌아가 Agent 인터페이스가 해당 시스템의 IP를 가리키는 host를 생성하고 Linux template을 연결하면 1분 이내에 데이터가 보고된다.

실패 유형과 화면에 표시되는 문자열

프런트엔드에 Error connecting to database 또는 데이터베이스 오류가 표시됩니다. 마법사의 DB 단계에서 Access denied for user 'zabbix'@'localhost' (using password: YES)는 암호가 Step 3의 값과 일치하지 않거나 GRANT이 실행되지 않았다는 뜻입니다. 데이터베이스 연결은 성공하지만 프런트엔드에 The frontend does not match Zabbix database 또는 Table 'zabbix.users' doesn't exist이 표시된다면 Step 4의 스키마 가져오기를 건너뛰었거나 실패한 것입니다. 새로 만든 데이터베이스에 다시 가져오기를 실행합니다.

주황색 배너에 Zabbix server is not running: the information displayed may not be current가 표시됩니다. 프런트엔드는 실행 중이지만 실행 중인 서버에 연결할 수 없습니다. 가능한 원인은 3가지이며, 앞에 있는 원인일수록 가능성이 높습니다. 서비스가 중지된 경우에는 systemctl status zabbix-server을 확인하고 서비스를 시작합니다. 서비스는 실행 중이지만 데이터베이스에 연결할 수 없는 경우에는 로그에 [Z3001] connection to database 'zabbix' failed: [1045] Access denied이 표시됩니다. 이는 DBPassword가 잘못되었거나 비어 있다는 뜻입니다. 또는 프런트엔드가 잘못된 서버를 가리키고 있을 수 있습니다. 이 값은 /etc/zabbix/web/zabbix.conf.php에서 host localhost, port 10051로 저장됩니다. Ubuntu에는 기본적으로 SELinux가 없으므로 RHEL 가이드에서 언급하는 SELinux 소켓 원인은 해당하지 않습니다. 여기서는 거의 항상 데이터베이스 암호가 잘못되었거나 서비스가 중지된 것이 원인입니다.

호스트에 빨간색 ZBX 레이블이 표시되고 항목 오류로 Get value from agent failed: cannot connect to [[127.0.0.1]:10050]: [111] Connection refused이 표시됩니다. 에이전트가 실행 중이 아니거나 포트에서 수신 대기하지 않는 상태입니다. systemctl status zabbix-agent2을 확인하고 ListenPort=10050인지 확인합니다. "connection refused" 대신 시간 초과가 발생하면 방화벽이 port 10050의 트래픽을 삭제하고 있는 것입니다. 관련된 Received empty response from Zabbix Agent. Assuming that agent dropped connection because of access permissions.은 에이전트에는 연결할 수 있지만 에이전트의 Server= 행에 Zabbix 서버의 IP가 없다는 뜻입니다. 해당 IP를 추가한 후 에이전트를 다시 시작합니다.

일반 nginx 환영 페이지 또는 502 Bad Gateway가 표시됩니다. 환영 페이지가 표시되면 기본 사이트가 아직 활성화되어 있거나 Zabbix 블록이 연결되지 않은 것입니다. Step 6과 같이 /etc/nginx/sites-enabled/default을 제거하고 /etc/nginx/conf.d/zabbix.conf가 존재하는지 확인합니다. 502가 표시되면 nginx가 PHP에 연결했지만 PHP-FPM이 중지되었거나 다른 소켓에서 수신 대기 중인 것입니다. php8.3-fpm을 시작하고 Zabbix 블록의 fastcgi_pass 소켓이 실행 중인 pool과 일치하는지 확인합니다.

백업, 업그레이드 및 TLS

데이터베이스에는 전체 이력이 저장되므로 mysqldump을 사용해 일정에 따라 백업하고 덤프 파일을 서버 외부에 보관해야 한다.

mysqldump --single-transaction zabbix | gzip > zabbix-$(date +%F).sql.gz

/etc/zabbix 구성 파일도 크기가 작고 함께 저장할 가치가 있지만 다시 만들 수 있다. 데이터는 다시 만들 수 없다. 복원은 그 반대 순서로 진행한다. 데이터베이스를 만들고 덤프를 가져온 다음 구성을 해당 데이터베이스에 연결한다.

7.0 계열 내 업그레이드는 일반적인 apt update && apt upgrade 실행이다. 서버는 다음 시작 시 필요한 스키마 마이그레이션을 적용하므로 패키지를 업그레이드하고 zabbix-server을 다시 시작한다. 이후의 메이저 계열로 이동하는 작업은 계획적으로 진행해야 한다. 업그레이드 노트를 읽고 먼저 데이터베이스를 덤프하며 스키마가 한 방향으로 변경될 수 있음을 예상해야 한다. 이러한 되돌릴 수 없는 변경이 있으므로 LTS 계열을 고정하고 계속 사용해야 한다.

프런트엔드를 일반 HTTP로 노출하지 않는다. DNS가 서버를 가리키면 Ubuntu 24.04에서 nginx에 Certbot과 Let's Encrypt 설정하기를 사용해 인증서를 설치한다. 이 작업은 server block이 443에서 수신하고 80을 리디렉션하도록 다시 작성한다. 다른 모든 서버의 로그를 확인하기 위해 로그인하는 서버를 강화하는 동안 무차별 대입 SSH 시도를 차단하는 fail2ban으로 SSH도 제한한다. 모니터링용 로그인 정보가 평문으로 전송되어서는 안 되며, 외부 진입점이 비밀번호 추측 공격에 노출되어서도 안 된다.

FAQ

Zabbix agent가 필요합니까? agent 없이도 모니터링할 수 있습니까?

둘 다 가능합니다. agent(agent2)는 호스트별 CPU, 메모리, 디스크, 프로세스, 서비스, 로그 파일 등의 상세한 메트릭을 제공합니다. 직접 관리하는 서버에는 일반적으로 agent를 사용합니다. agentless 모니터링은 소프트웨어를 설치할 수 없는 장치에 적합합니다. 스위치와 프린터에는 SNMP를 사용하고, 연결 가능 여부에는 ICMP ping을 사용하며, 엔드포인트에는 HTTP 검사를 사용하고, 하드웨어 상태에는 IPMI를 사용합니다. 실제 배포에서는 대부분 두 방식을 함께 사용합니다.

프런트엔드에 Zabbix server가 실행 중이 아니라고 표시되는 이유는 무엇입니까?

프런트엔드는 동작하지만 실행 중인 zabbix-server 프로세스에 연결할 수 없는 상태입니다. 일반적으로 server가 시작된 뒤 zabbix_server.conf의 DBPassword 값이 잘못되었거나 비어 있어 로그인에 실패하고 바로 종료됩니다. systemctl status zabbix-server를 실행하고 /var/log/zabbix/zabbix_server.log을 확인합니다. [Z3001] connection to database ... failed 행이 있으면 이 문제가 확인됩니다. 비밀번호를 수정하고 재시작하면 배너가 1분 이내에 사라집니다.

MySQL을 반드시 사용해야 합니까? PostgreSQL을 사용할 수 있습니까?

둘 다 완전히 지원됩니다. 이 가이드처럼 MariaDB 또는 MySQL과 함께 zabbix-server-mysql을 사용하거나, PostgreSQL과 함께 zabbix-server-pgsql를 사용할 수 있습니다. 소규모 설치에서는 선택에 따른 차이가 거의 없습니다. 대규모 설치에서는 PostgreSQL과 TimescaleDB 확장을 함께 사용하면 history 테이블을 분할할 수 있고 하우스키핑 비용도 크게 줄어듭니다. 따라서 대규모 환경에서는 PostgreSQL을 선호하는 경우가 많습니다. 하나를 선택하면 계속 사용하는 것이 좋습니다. 나중에 마이그레이션하려면 설정만 바꾸는 것이 아니라 전체 export와 re-import가 필요합니다.

Zabbix all-in-one server에는 RAM이 얼마나 필요합니까?

한 대의 서버에서 소수의 호스트를 모니터링한다면 2 GB가 현실적인 최소 용량이고, 수십 개를 넘는 호스트부터는 4 GB가 여유롭습니다. 메모리는 주로 데이터베이스 캐시와 server의 poller가 사용합니다. 1 GB VPS도 실행은 되지만 history가 늘어나면 데이터베이스의 메모리가 부족해집니다. 호스트가 100개를 넘으면 데이터베이스를 별도 server로 분리하고, 한 대의 장비에 RAM만 추가하기보다 buffer pool을 조정합니다.

서버가 몇 대뿐이어도 Zabbix가 과도한 선택입니까?

그럴 수 있습니다. 필요한 기능이 "실행 중인가?"를 확인하고 공유할 수 있는 페이지를 제공하는 정도라면 가동 시간과 상태를 모니터링하는 Uptime Kuma처럼 더 가벼운 도구가 구축이 빠르고 한눈에 읽기도 쉽습니다. 여러 서버 환경에서 단순한 ping 도구로는 제공하기 어려운 메트릭별 임계값, 이력 그래프, 템플릿 기반 호스트, 에스컬레이션 규칙이 필요하다면 Zabbix를 선택합니다.