Zabbix 설치 · 18 min read · Oct 09, 2025
Rocky Linux 9에서 Zabbix 서버 및 클라이언트 설치 및 구성 방법

Zabbix는 네트워크, 서버, 가상 머신 및 클라우드 서비스와 같은 IT 인프라를 위한 무료 오픈 소스 모니터링 솔루션입니다. 그 핵심은 C와 Java로 작성되었으며 프론트 엔드는 PHP로 작성되었습니다. 프론트 엔드는 네트워크 사용량, CPU 부하, 디스크 공간 등과 같은 메트릭을 추적하고 모니터링하는 웹 기반 인터페이스를 제공하며, 사용자 정의 트리거에 따라 알림을 보냅니다.
Zabbix는 클라이언트/서버 모델로 작동합니다. 다양한 운영 체제에서 사용할 수 있는 클라이언트 또는 에이전트가 서버에 연락하여 데이터를 전송합니다. 에이전트가 없는 시스템의 경우 Zabbix는 간단한 네트워크 관리 프로토콜(SNMP) 또는 지능형 플랫폼 관리 인터페이스(IPMI)와 같은 일반 모니터링 프로토콜을 사용할 수 있는 옵션을 제공합니다.
이 튜토리얼에서는 Rocky Linux 9 서버에 Zabbix 서버 및 클라이언트를 설치하는 방법을 배웁니다.
전제 조건
- Rocky Linux 9에서 실행되는 두 개의 서버. 하나는 서버로 기능하고 다른 하나는 서버를 사용하여 모니터링할 클라이언트입니다.
- sudo 권한이 있는 비루트 사용자.
- 서버를 가리키는
zabbix.example.com과 같은 완전한 도메인 이름(FQDN). - Amazon SES 또는 Mailgun과 같은 이메일 서비스의 SMTP 계정.
- 모든 것이 업데이트되었습니다.
$ sudo dnf update - 튜토리얼과 Zabbix 서버가 실행되는 데 필요한 몇 가지 필수 패키지가 필요합니다. 이 중 일부는 이미 서버에 있을 수 있습니다.
$ sudo dnf install wget curl nano unzip yum-utils policycoreutils-python-utils -y
1단계 - 방화벽 구성
첫 번째 단계는 방화벽을 구성하는 것입니다. Rocky Linux는 Firewalld 방화벽을 사용합니다. 방화벽의 상태를 확인합니다.
$ sudo firewall-cmd --state
running
방화벽은 다양한 영역과 함께 작동하며, 공용 영역이 우리가 사용할 기본 영역입니다. 방화벽에서 활성화된 모든 서비스와 포트를 나열합니다.
$ sudo firewall-cmd --permanent --list-services
다음과 같은 출력이 표시되어야 합니다.
cockpit dhcpv6-client ssh
Zabbix 서버가 에이전트와 연결하기 위해 필요한 포트 10050 및 10051을 엽니다.
$ sudo firewall-cmd --add-port={10051/tcp,10050/tcp} --permanent
HTTP 및 HTTPS 포트를 허용합니다.
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
방화벽의 상태를 다시 확인합니다.
$ sudo firewall-cmd --permanent --list-all
유사한 출력을 볼 수 있어야 합니다.
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: cockpit dhcpv6-client http https ssh
ports: 10051/tcp 10050/tcp
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
변경 사항을 적용하기 위해 방화벽을 다시 로드합니다.
$ sudo firewall-cmd --reload
2단계 - SELinux를 허용 모드로 설정
SELinux가 허용 모드에서 작동하도록 구성합니다. 이 모드에서는 SELinux가 어떤 프로세스도 차단하지 않지만 모든 것을 감사 로그 파일에 기록합니다. 나중에 SELinux 규칙을 설정하는 데 사용할 것입니다.
$ sudo setenforce 0 && sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
SELinux 상태를 확인합니다.
$ sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: permissive
Mode from config file: permissive
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 33
3단계 - Nginx 및 PHP 리포지토리 구성
Zabbix 패키지는 PHP와 Nginx를 자동으로 설치합니다. 그러나 이전 버전을 가져옵니다. 따라서 프로세스가 최신 버전을 설치하도록 해야 합니다.
/etc/yum.repos.d/nginx.repo 파일을 생성하고 열어 편집합니다.
$ sudo nano /etc/yum.repos.d/nginx.repo
다음 코드를 붙여넣습니다.
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
작업이 끝나면 Ctrl + X를 눌러 파일을 저장하고 프롬프트가 표시되면 Y를 입력합니다.
Nginx 메인라인 리포지토리를 활성화합니다.
$ sudo dnf config-manager --enable nginx-mainline
다음으로 PHP 리포지토리를 구성해야 합니다.
첫 번째 단계는 Epel 리포지토리를 가져오는 것입니다.
$ sudo dnf install epel-release -y
다음으로 Remi 리포지토리를 설치합니다.
$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
사용 가능한 PHP 스트림을 확인합니다.
$ dnf module list php -y
Name Stream Profiles Summary
php 8.1 common [d], devel, minimal PHP scripting language
Remi's Modular repository for Enterprise Linux 9 - x86_64
Name Stream Profiles Summary
php remi-7.4 common [d], devel, minimal PHP scripting language
php remi-8.0 common [d], devel, minimal PHP scripting language
php remi-8.1 common [d], devel, minimal PHP scripting language
php remi-8.2 common [d], devel, minimal PHP scripting language
php remi-8.3 common [d], devel, minimal PHP scripting language
힌트: [d]efault, [e]nabled, [x]disabled, [i]nstalled
기본 버전은 8.1입니다. 이 튜토리얼을 작성할 당시 Zabbix는 PHP 8.2와 호환됩니다. 따라서 Remi의 PHP 8.2 리포지토리를 활성화합니다. Zabbix의 다음 버전은 PHP 8.3을 지원하므로 Zabbix 버전이 6.0.26 이상인 경우 이를 활성화할 수 있습니다.
$ sudo dnf module reset php -y
$ sudo dnf module enable php:remi-8.2
이제 Zabbix 설치를 진행할 수 있습니다.
4단계 - Zabbix 서버 설치
Zabbix 패키지는 기본적으로 EPEL 리포지토리에서 제공됩니다. 설치를 진행하기 전에 이를 비활성화해야 합니다. /etc/yum.repos.d/epel.repo 파일을 열어 편집하고 [epel] 섹션 아래에 다음 줄을 추가합니다.
[epel]
...
excludepkgs=zabbix*
작업이 끝나면 Ctrl + X를 눌러 파일을 저장하고 프롬프트가 표시되면 Y를 입력합니다.
Zabbix의 최신 버전은 6.4.x이지만, 우리는 생산 환경에서 훨씬 더 안정적인 LTS(장기 지원) 릴리스를 사용하기로 하겠습니다.
Zabbix의 리포지토리를 설치합니다.
$ sudo rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm
모든 RPM 캐시를 제거합니다.
$ sudo dnf clean all
Zabbix 서버, 프론트엔드 및 에이전트를 설치합니다. 우리는 PostgreSQL 서버를 사용할 것이므로 zabbix-web-pgsql 패키지가 필요합니다. MySQL/MariaDB/Percona 서버를 사용하는 경우 zabbix-web-mysql 패키지를 설치해야 합니다.
$ sudo dnf install zabbix-server-pgsql zabbix-web-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent
5단계 - PostgreSQL 설치 및 구성
Zabbix는 PostgreSQL 13 이상과 함께 작동합니다. Rocky Linux 9는 기본적으로 PostgreSQL 13을 제공합니다. 그러나 이 튜토리얼에서는 PostgreSQL 16을 사용할 것입니다.
PostgreSQL 리포지토리 RPM 파일을 설치합니다.
$ sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
내장 PostgreSQL 모듈을 비활성화합니다.
$ sudo dnf -qy module disable postgresql
이제 아래 명령을 사용하여 PostgreSQL을 설치할 수 있습니다.
$ sudo dnf install -y postgresql16-server postgresql16-contrib
데이터베이스를 초기화합니다.
$ sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
PostgreSQL 서비스를 활성화합니다.
$ sudo systemctl enable postgresql-16
PostgreSQL 서비스를 시작합니다.
$ sudo systemctl start postgresql-16
PostgreSQL 서비스의 상태를 확인합니다.
$ sudo systemctl status postgresql-16
? postgresql-16.service - PostgreSQL 16 database server
Loaded: loaded (/usr/lib/systemd/system/postgresql-16.service; enabled; preset: disabled)
Active: active (running) since Thu 2024-01-18 14:54:46 UTC; 10s ago
Docs: https://www.postgresql.org/docs/16/static/
Process: 3407 ExecStartPre=/usr/pgsql-16/bin/postgresql-16-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
Main PID: 3412 (postgres)
Tasks: 7 (limit: 24694)
Memory: 17.4M
CPU: 117ms
CGroup: /system.slice/postgresql-16.service
??3412 /usr/pgsql-16/bin/postgres -D /var/lib/pgsql/16/data/
??3413 "postgres: logger "
??3414 "postgres: checkpointer "
??3415 "postgres: background writer "
??3417 "postgres: walwriter "
??3418 "postgres: autovacuum launcher "
??3419 "postgres: logical replication launcher "
Zabbix 데이터베이스 사용자를 생성합니다.
$ sudo -u postgres createuser --pwprompt zabbix
비밀번호를 입력하라는 메시지가 표시됩니다.
Enter password for new role:
Enter it again:
Zabbix 데이터베이스를 생성합니다.
$ sudo -u postgres createdb -O zabbix zabbix
초기 스키마 및 데이터베이스 데이터를 가져옵니다. 다시 비밀번호를 입력하라는 메시지가 표시됩니다.
$ zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix
이 과정은 완료되는 데 몇 분이 걸릴 수 있습니다.
/etc/zabbix/zabbix_server.conf 파일을 열어 편집합니다.
$ sudo nano /etc/zabbix/zabbix_server.conf
변수 DBPassword를 찾아 주석을 제거하고 앞에 있는 해시(#)를 제거한 후 이전 단계에서 선택한 비밀번호로 값을 설정합니다.
DBPassword=psqlpassword
작업이 끝나면 Ctrl + X를 눌러 파일을 저장하고 프롬프트가 표시되면 Y를 입력합니다.
Zabbix 서버 및 에이전트 서비스를 시작하고 활성화합니다.
$ sudo systemctl enable zabbix-server zabbix-agent --now
6단계 - PHP 구성
Zabbix는 사용할 PHP 및 Nginx 구성 파일을 설치합니다. 그러나 사용하기 전에 몇 가지 수정을 해야 합니다.
먼저 /etc/php-fpm.d/zabbix.conf 파일을 열어 편집합니다.
$ sudo nano /etc/php-fpm.d/zabbix.conf
user = apache 및 group = apache의 값을 아래와 같이 nginx로 변경합니다.
user = nginx
group = nginx
이는 공식 리포지토리의 Nginx를 사용하고 있으므로 nginx 사용자로 실행되기 때문입니다. 다른 PHP 관련 값을 편집하거나 사용자 정의 정의를 추가할 수도 있습니다. 작업이 끝나면 Ctrl + X를 눌러 파일을 저장하고 프롬프트가 표시되면 Y를 입력합니다.
PHP-FPM 서비스를 시작하고 활성화합니다.
$ sudo systemctl enable php-fpm --now
7단계 - SSL 설치
SSL 인증서를 생성하기 위해 Certbot을 설치해야 합니다. 이를 위해 Snapd 패키지 설치 관리자를 사용할 것입니다. Rocky Linux는 기본적으로 Snapd를 제공하지 않으므로 Snapd 설치 관리자를 설치합니다. EPEL(Enterprise Linux의 추가 패키지) 리포지토리가 필요하지만, 3단계에서 이미 설치했으므로 바로 진행할 수 있습니다.
Snapd를 설치합니다.
$ sudo dnf install -y snapd
Snap 서비스를 활성화하고 시작합니다.
$ sudo systemctl enable snapd --now
Snap core 패키지를 설치하고 Snapd 버전이 최신인지 확인합니다.
$ sudo snap install core && sudo snap refresh core
Snapd가 작동하도록 필요한 링크를 생성합니다.
$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh
Certbot을 설치합니다.
$ sudo snap install --classic certbot
Certbot 명령이 /usr/bin 디렉토리에서 실행될 수 있도록 심볼릭 링크를 생성합니다.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Certbot이 제대로 작동하는지 확인합니다.
$ certbot --version
certbot 2.8.0
다음 명령을 실행하여 SSL 인증서를 생성합니다.
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d zabbix.example.com
위 명령은 서버의 /etc/letsencrypt/live/zabbix.example.com 디렉토리에 인증서를 다운로드합니다.
Diffie-Hellman 그룹 인증서를 생성합니다.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Certbot 갱신 스케줄러 서비스를 확인합니다.
$ sudo systemctl list-timers
next에 snap.certbot.renew.service가 예약된 서비스 중 하나로 표시됩니다.
NEXT LEFT LAST PASSED UNIT ACTIVATES -------------------------------------------------------------------------------------------------------------------------------------
Sat 2024-01-20 10:04:02 UTC 1min 32s left Sat 2024-01-20 08:52:11 UTC 1h 10min ago dnf-makecache.timer dnf-makecache.service
Sun 2024-01-21 00:00:00 UTC 13h left Sat 2024-01-20 00:00:10 UTC 10h ago logrotate.timer logrotate.service
Sat 2024-01-20 21:13:00 UTC 11h left Sat 2024-01-20 08:19:11 UTC 1h 43min ago snap.certbot.renew.timer snap.certbot.renew.service
SSL 갱신이 제대로 작동하는지 확인하기 위해 프로세스를 드라이 런합니다.
$ sudo certbot renew --dry-run
오류가 없으면 모든 준비가 완료된 것입니다. 인증서는 자동으로 갱신됩니다.
8단계 - Nginx 구성
Zabbix는 기본 Nginx 구성 파일을 설치합니다. SSL 인증서를 활성화하기 위해 코드를 추가하기 위해 편집해야 합니다. 또한 listen 포트를 변경하고 HTTP 링크를 HTTPS로 리디렉션하는 코드를 추가해야 합니다.
/etc/nginx/conf.d/zabbix.conf 파일을 열어 편집합니다.
$ sudo nano /etc/nginx/conf.d/zabbix.conf
파일이 다음과 같이 보이도록 코드를 편집합니다.
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
root /usr/share/zabbix;
index index.php;
access_log /var/log/nginx/zabbix.access.log;
error_log /var/log/nginx/zabbix.error.log;
ssl_certificate /etc/letsencrypt/live/zabbix.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/zabbix.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/zabbix.example.com/chain.pem;
ssl_session_timeout 5m;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
location = /favicon.ico {
log_not_found off;
}
location / {
try_files $uri $uri/ =404;
}
location /assets {
access_log off;
expires 10d;
}
location ~ \.ht {
deny all;
}
location ~ /(api/|conf[^\.]|include|locale) {
deny all;
return 404;
}
location /vendor {
deny all;
return 404;
}
location ~ [^/\.php(/|$) {
fastcgi_pass unix:/run/php-fpm/zabbix.sock;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
fastcgi_param DOCUMENT_ROOT /usr/share/zabbix;
fastcgi_param SCRIPT_FILENAME /usr/share/zabbix$fastcgi_script_name;
fastcgi_param PATH_TRANSLATED /usr/share/zabbix$fastcgi_script_name;
include fastcgi_params;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_intercept_errors on;
fastcgi_ignore_client_abort off;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
}
}
# enforce HTTPS
server {
listen 80;
listen [::]:80;
server_name zabbix.example.com;
return 301 https://$host$request_uri;
}
작업이 끝나면 Ctrl + X를 눌러 파일을 저장하고 프롬프트가 표시되면 Y를 입력합니다.
/etc/nginx/nginx.conf 파일을 열어 편집합니다.
$ sudo nano /etc/nginx/nginx.conf
include /etc/nginx/conf.d/*.conf; 줄 앞에 다음 줄을 추가합니다.
server_names_hash_bucket_size 64;
작업이 끝나면 Ctrl + X를 눌러 파일을 저장하고 프롬프트가 표시되면 Y를 입력합니다.
Nginx 구성을 확인합니다.
$ sudo nginx -t
Nginx 서비스를 시작하고 활성화합니다.
$ sudo systemctl enable nginx --now
9단계 - Zabbix 프론트엔드에 접근
Zabbix 프론트엔드를 설치하기 전에 Nginx가 /etc/zabbix/web 디렉토리에 접근할 수 있도록 권한을 설정합니다.
$ sudo chown -R nginx:nginx /etc/zabbix/web
브라우저에서 https://zabbix.example.com URL을 열면 다음 화면이 표시됩니다.

다음 단계 버튼을 클릭하여 Zabbix 설치를 완료합니다. 다음 페이지에서는 시스템 요구 사항을 확인하며 모든 요구 사항이 충족되는지 확인합니다.

문제가 없으면 다음 단계 버튼을 클릭하여 진행합니다. 다음으로 데이터베이스 자격 증명을 입력하라는 메시지가 표시됩니다. 데이터베이스 TLS 암호화 옵션의 선택을 해제합니다. 이는 우리가 구성하지 않았기 때문입니다.

다음 단계 버튼을 클릭하여 진행합니다. Zabbix 서버의 이름을 입력하라는 메시지가 표시됩니다. 이는 선택 사항이지만, 구성하면 메뉴 바와 페이지 제목에 표시됩니다.

다음 단계 버튼을 클릭하여 진행합니다. 모든 설정을 확인하라는 메시지가 표시됩니다.

모든 것이 괜찮으면 다음 단계 버튼을 클릭하여 진행합니다. 설치가 성공적으로 완료되었다는 메시지가 표시됩니다.

완료 버튼을 클릭하여 프로세스를 완료합니다. 로그인 페이지로 이동합니다.

기본 사용자 이름은 Admin이고 비밀번호는 zabbix입니다. 로그인 정보를 입력하고 로그인 버튼을 클릭하여 Zabbix 대시보드에 접근합니다.

10단계 - SELinux 구성
HTTP 데몬이 Zabbix에 연결할 수 있도록 허용합니다.
$ sudo setsebool -P httpd_can_connect_zabbix 1
Zabbix가 모든 TCP 포트에 연결할 수 있도록 허용합니다.
$ sudo setsebool -P zabbix_can_network on
HA 관리자 오류를 피하기 위해 daemons_enable_cluster_mode를 활성화합니다.
$ sudo setsebool -P daemons_enable_cluster_mode on
감사 로그를 사용하여 사용자 정의 SELinux 정책 패키지를 생성합니다.
$ sudo grep "denied.*zabbix" /var/log/audit/audit.log | audit2allow -M zabbix_policy
****************** 중요 *********************
이 정책 패키지를 활성화하려면 다음을 실행하십시오:
semodule -i zabbix_policy.pp
생성된 사용자 정의 SELinux 정책 패키지를 설치합니다.
$ sudo semodule -i zabbix_policy.pp
데이터베이스 오류를 확인하는 명령을 실행합니다.
$ sudo sealert -a /var/log/audit/audit.log
많은 규칙을 적용하라는 제안이 표시됩니다.
다음 명령을 실행합니다.
$ sudo ausearch -c 'php-fpm' --raw | audit2allow -M my-phpfpm
$ sudo semodule -X 300 -i my-phpfpm.pp
$ sudo ausearch -c 'zabbix_agentd' --raw | audit2allow -M my-zabbixagentd
$ sudo semodule -X 300 -i my-zabbixagentd.pp
Nginx가 PostgreSQL에 접근할 수 있도록 허용하는 정책을 적용합니다.
$ sudo setsebool -P httpd_can_network_connect_db 1
외부 호스트에 대한 연결을 허용하는 정책을 적용합니다.
$ sudo setsebool -P httpd_can_network_connect 1
SELinux를 강제 모드로 설정합니다.
$ sudo setenforce 1 && sudo sed -i 's/^SELINUX=.*/SELINUX=enforcing/g' /etc/selinux/config
11단계 - 원격 시스템에 Zabbix 에이전트 설치
Zabbix 에이전트의 주요 작업은 시스템에서 정보를 수집하고 이를 중앙 Zabbix 서버로 전송하여 분석하는 것입니다. 우리는 Rocky Linux 9 시스템에 에이전트를 설치할 것이지만, 다른 배포판에서도 가능합니다.
11.1 - 원격 시스템에서 방화벽 구성
Zabbix 에이전트가 서버에 연결할 수 있도록 포트 10050을 엽니다.
$ sudo firewall-cmd --add-port=10050/tcp --permanent --zone=public
$ sudo firewall-cmd --reload
11.2 - Zabbix 에이전트 설치
마지막 설치 문을 제외하고 4단계를 반복해야 합니다. 즉, /etc/yum.repos.d/epel.repo 파일을 편집하고 [epel] 섹션에 다음 줄을 추가합니다.
[epel]
...
excludepkgs=zabbix*
다음으로 Zabbix 리포지토리를 설치하고 RPM 캐시를 정리합니다.
$ sudo rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm
$ sudo dnf clean all
Zabbix 에이전트를 설치합니다.
$ sudo dnf install zabbix-agent
11.3 Zabbix 에이전트 구성
Zabbix는 인증서 기반 암호화를 지원하지만, 이 튜토리얼의 간단함을 위해 사전 공유 키(PSK)를 사용하여 서버와 에이전트 간의 연결을 보호할 것입니다.
PSK 파일을 생성합니다.
$ sudo sh -c "openssl rand -hex 32 > /etc/zabbix/zabbix_agentd.psk"
복사할 수 있도록 키를 표시합니다.
$ cat /etc/zabbix/zabbix_agentd.psk
797c84746dfe86f71b0f207785906d2bb886be27149b296d86df6b1ec9de6bbe
이 키를 복사하십시오. 나중에 필요합니다.
Zabbix 에이전트는 /etc/zabbix/zabbix-agentd.conf 파일에 구성을 저장합니다. 이를 편집하기 위해 엽니다.
$ sudo nano /etc/zabbix/zabbix_agentd.conf
다음 변수를 주석 해제하고 아래와 같이 값을 업데이트합니다.
Server=
ServerActive=
HostMetadata=ZabbixLinuxClient
Hostname=zabbixclient.example.com
Server 및 ServerActive 변수의 값으로 Zabbix 서버의 IP 주소를 입력합니다. HostMetadata 변수는 시스템을 식별하는 데 사용할 수 있는 아무 것이나 될 수 있습니다. 이는 나중에 Zabbix 프론트엔드에서 자동 등록 프로세스에 사용됩니다. Hostname 항목은 Zabbix 에이전트 노드의 시스템 호스트 이름을 나타냅니다.
호스트 이름은 다음 명령을 사용하여 확인할 수 있습니다.
$ cat /etc/hostname
다음으로 서버와 에이전트 간의 안전한 연결을 구성하는 섹션을 찾습니다. TLSConnect 변수를 찾아 값을 unencrypted에서 psk로 변경합니다.
...
### Option: TLSConnect
# How the agent should connect to server or proxy. Used for active checks.
# Only one value can be specified:
# unencrypted - connect without encryption
# psk - connect using TLS and a pre-shared key
# cert - connect using TLS and a certificate
#
# Mandatory: yes, if TLS certificate or PSK parameters are defined (even for 'unencrypted' connection)
# Default:
# TLSConnect=psk
...
다음으로 TLSAccept 섹션을 찾아 값을 psk로 변경합니다.
...
### Option: TLSAccept
# What incoming connections to accept.
# Multiple values can be specified, separated by comma:
# unencrypted - accept connections without encryption
# psk - accept connections secured with TLS and a pre-shared key
# cert - accept connections secured with TLS and a certificate
#
# Mandatory: yes, if TLS certificate or PSK parameters are defined (even for 'unencrypted' connection)
# Default:
# TLSAccept=psk
...
다음으로 TLSPSKIdentity 섹션을 찾아 값을 PSK 001로 변경합니다.
...
### Option: TLSPSKIdentity
# Unique, case sensitive string used to identify the pre-shared key.
#
# Mandatory: no
# Default:
# TLSPSKIdentity=PSK 001
...
이것은 Zabbix 웹 프론트엔드를 통해 호스트를 추가할 때 사용할 PSK ID입니다.
마지막으로 TLSPSKFile 섹션을 찾아 값을 PSK 파일의 위치로 변경합니다.
...
### Option: TLSPSKFile
# Full pathname of a file containing the pre-shared key.
#
# Mandatory: no
# Default:
# TLSPSKFile=/etc/zabbix/zabbix_agentd.psk
...
작업이 끝나면 Ctrl + X를 눌러 파일을 저장하고 프롬프트가 표시되면 Y를 입력합니다.
11.4 - Zabbix 에이전트 시작
Zabbix 에이전트 서비스를 시작하고 활성화합니다.
$ sudo systemctl enable zabbix-agent --now
12단계 - 모니터링을 위해 Zabbix 프론트엔드에 Zabbix 클라이언트 추가
기존 정의된 호스트 그룹에 새 호스트를 추가하거나 새 호스트 그룹을 생성할 수 있습니다. 호스트 그룹은 모니터링하는 노드 유형을 분류하는 데 도움이 됩니다. 새 호스트 그룹을 만들려면 구성 메뉴 아래의 호스트 그룹 옵션을 엽니다.
상자에 그룹 이름을 입력하고 적용 버튼을 클릭하여 그룹을 생성합니다.
새 호스트를 만들려면 구성 메뉴 아래의 호스트 옵션을 클릭하고 오른쪽 상단의 호스트 생성 버튼을 클릭합니다.

Zabbix 노드의 호스트 이름을 추가합니다.
템플릿 섹션에 Linux by Zabbix agent를 입력하고 드롭다운에서 템플릿을 선택합니다.
유사하게 그룹 섹션에 Linux Servers를 입력하고 선택합니다.
인터페이스 섹션 아래의 추가 버튼을 클릭하고 에이전트를 선택합니다.
그런 다음 Zabbix 클라이언트 노드의 IP 주소를 추가합니다. 작업이 완료되면 전체 새 호스트 팝업은 다음과 같아야 합니다.

다음으로 암호화 탭으로 전환합니다. 호스트에 대한 연결 및 호스트에서의 연결 옵션 모두에 대해 PSK를 선택합니다. PSK ID를 PSK 001으로 설정하고, 이는 이전에 11.3단계에서 TLSPSKIdentity 변수에 대해 설정한 값입니다. 그런 다음 PSK 값을 이전에 에이전트 머신에서 생성한 키로 설정합니다.

작업이 완료되면 추가 버튼을 클릭하여 호스트 추가를 완료합니다.
새 호스트가 목록에 표시되며 에이전트가 서버에 연결되어 예상대로 작동하고 있음을 나타내는 녹색 레이블이 표시됩니다.

13단계 - 이메일 알림 구성
Zabbix는 이메일, Slack, Telegram, SMS 등 다양한 유형의 알림을 지원합니다. 이 튜토리얼의 목적을 위해 이메일 알림을 구성합니다. Zabbix 프론트 엔드에 방문하여 관리를 클릭한 다음 왼쪽 메뉴에서 미디어 유형을 클릭합니다. 두 가지 이메일 유형이 표시되며, 하나는 일반 텍스트 이메일용이고 다른 하나는 HTML 이메일용입니다.

이메일 (HTML) 옵션을 클릭하면 다음 페이지가 표시됩니다.

SMTP 서버 세부정보를 입력합니다. 이 튜토리얼에서는 Amazon SES 서비스를 사용하고 있습니다. 완료되면 업데이트 버튼을 클릭하여 세부정보를 저장합니다. 미디어 유형 페이지로 돌아갑니다. 페이지에서 테스트 버튼을 클릭하여 이메일 설정을 테스트합니다. 팝업이 생성됩니다. 이메일 주소를 입력하고 테스트 버튼을 클릭하여 테스트 이메일을 보냅니다.

작업이 잘 수행되었다는 성공 메시지가 팝업에 표시되며, 다음과 같은 이메일을 받은 것을 확인할 수 있습니다. 팝업을 취소 버튼을 클릭하여 닫습니다.

14단계 - 새 사용자 생성
기본 Zabbix 사용자는 어떤 종류의 알림도 받을 수 있도록 구성되어 있지 않습니다. 그렇게 할 수 있지만, 기본 사용자는 사용하기에 안전하지 않습니다. 가장 좋은 방법은 새 사용자를 생성한 다음 기본 사용자를 비활성화하는 것입니다.
메뉴의 관리 >> 사용자 섹션으로 이동하여 오른쪽 상단의 사용자 생성 버튼을 클릭하여 다음 페이지를 엽니다.

사용자 세부정보를 입력합니다. 사용자 그룹으로 Zabbix 관리자를 선택합니다. 완료되면 미디어 탭을 클릭합니다. 추가 버튼을 클릭하고 이메일 (HTML)을 유형으로 선택합니다.

보낼 주소 필드에 이메일 주소를 입력하고 추가 버튼을 클릭하여 이메일 옵션을 추가합니다. 다음으로 권한 탭으로 전환하고 슈퍼 관리자 역할을 추가하기 위해 선택 버튼을 클릭합니다.

사용자 추가를 완료하려면 추가 버튼을 클릭합니다. 다음으로 프론트엔드에서 로그아웃한 후 새 사용자로 다시 로그인하고 사용자 페이지로 돌아갑니다. Admin 사용자를 클릭하고 비활성화 그룹을 선택한 후 사용자를 업데이트합니다. 이렇게 하면 기본 사용자가 사용되지 않도록 비활성화됩니다.
15단계 - 테스트 알림 보내기
기본적으로 Zabbix는 서버의 여유 공간을 추적합니다. 모든 디스크 마운트를 감지하고 정기적으로 검사를 수행합니다.
첫 번째 단계는 Zabbix가 모든 관리자에게 알림을 보낼 수 있도록 알림 트리거를 활성화하는 것입니다. Zabbix에는 기본적으로 트리거가 이미 구성되어 있습니다. 이를 작동하도록 활성화해야 합니다. 구성 >> 작업 >> 트리거 작업으로 이동하여 비활성화 상태를 클릭하여 활성화로 변경합니다.

다음으로 Zabbix 노드에 로그인하고 디스크 사용량 알림을 트리거할 만큼 큰 임시 파일을 생성합니다.
먼저 서버의 여유 공간을 확인합니다.
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 780M 51M 730M 7% /run
/dev/vda2 94G 12G 78G 13% /
/dev/vda1 260M 7.0M 253M 3% /boot/efi
tmpfs 390M 4.0K 390M 1% /run/user/1001
이것은 약 78GB의 여유 공간이 있음을 보여줍니다. 다음으로 fallocate 명령을 사용하여 디스크 공간의 80% 이상을 미리 할당합니다. 이는 알림을 트리거할 만큼 충분히 큽니다.
$ fallocate -l 74G /tmp/temp.img
디스크 사용량을 다시 확인합니다.
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 780M 54M 726M 7% /run
/dev/vda2 94G 86G 3.9G 96% /
/dev/vda1 260M 7.0M 253M 3% /boot/efi
tmpfs 390M 4.0K 390M 1% /run/user/1001
Zabbix는 디스크 공간에 대한 알림을 트리거하고 이에 대한 이메일 알림을 보냅니다. 이메일은 다음과 같이 표시됩니다.

대시보드에서 알림을 확인할 수도 있으며, 몇 초 이내에 나타나야 합니다.

작업이 완료되면 임시 파일을 삭제합니다.
$ rm -f /tmp/temp.img
문제가 해결되었다는 알림이 포함된 또 다른 이메일을 받을 수 있습니다.

16단계 - Linux 노드에 대한 자동 등록 구성
Zabbix 서버에 여러 노드를 추가해야 할 때 프로세스가 다소 번거로울 수 있습니다. 다행히도 Zabbix 프론트엔드는 자동 등록을 사용하여 프로세스를 자동화할 수 있습니다.
작업 >> 자동 등록 작업으로 이동하여 오른쪽 상단의 작업 생성 버튼을 클릭합니다.

새 화면에서 작업 이름( Linux 서버의 자동 등록)을 지정합니다.
조건 아래의 추가 버튼을 클릭하여 조건을 추가하고 호스트 메타데이터를 유형으로 선택하고, 포함을 연산자로 선택하고, Linux를 값으로 선택합니다.

추가를 클릭하여 진행하고 작업 생성 페이지는 다음과 같아야 합니다.

작업 탭을 클릭하고 호스트 그룹에 추가를 작업으로 선택하고 Linux 서버를 호스트 그룹으로 선택합니다. 추가 버튼을 클릭하여 완료합니다.

PSK 암호화를 사용하려면 이를 구성할 수도 있습니다. 관리 >> 일반 >> 자동 등록 메뉴로 이동하여 두 가지 암호화 옵션을 모두 활성화합니다. Zabbix 서버에서 생성한 PSK ID와 PSK 키를 입력합니다. 이 PSK ID와 키를 모든 노드에서 사용할 수 있으며, 이러한 값으로 암호화됩니다.

이제부터 Linux 서버에서 Zabbix 에이전트를 설치하고 구성할 때마다 자동으로 Zabbix 프론트엔드에 추가됩니다.
결론
이로써 Rocky Linux 9 시스템에 Zabbix 서버를 설치하고 구성하는 튜토리얼이 마무리되었습니다. 또한 원격 서버에 Zabbix 에이전트를 설치하여 서버와 연결했습니다. 질문이 있으시면 아래 댓글에 남겨주세요.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.