[모니터링] Rocky 8.5에 Zabbix 6 설치 방법
최근 Zabbix를 설치하려고 예전에 남겨놓은 블로그를 펼쳤을 때, 버전도 많이 바뀌어 새롭게 구성을 시도했다가 시행착오를 몇 번 거치게 되어 새로운 Rocky OS에 최신 Zabbix를 설치해보게 되었습니다.
Zabbix 홈페이지에 설치 가이드가 친절하지 않아 단순하고 빠르게 설치할 수 있는 방법을 남기려고 합니다.
1. 사전 준비물
외부 인터넷과 통신이 되는 Rocky 8.5 버전 (Minimal Version) 준비.
아래와 같이 파티셔닝.
가상머신인데 실제 루트(/)는 30G 디스크로 부트, 스왑 나눠놓았으며,
데이터 저장용 50G 디스크로 /data 파티션으로 마운트해놓았음.
----- 스냅샷 찍기 ---- (이제 스냅샷을 찍어놓고 다음 작업을 하면 좋습니다) -- 완료되면 스냅샷은 꼭 삭제 --
2. MySQL(Mariadb) 설치
** MariaDB 버전은 10.05 버전으로 설치해야 합니다. (Zabbix 6는 MariaDB 10.03 미지원)
yum install -y mariadb mariadb-server
...
<<설치 과정>>
물어보는 항목에서는 => y
...
Complete !
systemctl start mariadb
systemctl enable mariadb
mysql_secure_installation #기본적인 보안 설정
Enter current password for root (enter for none): Enter
Set root password? [Y/n] Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
3. MySQL (Mariadb) 설치는 되었는데 데이터 저장 위치를 변경하자. <<주의 : 변경하면 에러가 나는데 위치 변경은 건너띄고 우선 설치해봅시다>>
(1) 현재 Data저장 위치 확인 (select @@datadir;)
MariaDB [(none)]> select @@datadir;
+-----------------+
| @@datadir |
+-----------------+
| /var/lib/mysql/ |
+-----------------+
1 row in set (0.000 sec)
(2) 현재 Data저장 위치 확인 (select @@datadir;)
새로 추가한 /data 영역에 데이터를 쌓고 싶어, 아래 순서대로 작업함.
cd /data
mkdir mysql
rsync -av /var/lib/mysql /data/mysql
chown -R mysql:mysql /data/mysql
vi /etc/my.cnf
@@@ my.cnf 내용 @@@
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
[client-server]
socket=/data/mysql/mysql.sock
!includedir /etc/my.cnf.d
@@@ wq! 로 저장 @@@
systemctl restart mariadb
systemctl status mariadb
4. PHP & HTTPD 설치
(1) Rocky 8 기본 repository에는 php 7.2로 설치할 수 있음. 하지만 7.4로 설치해보려고 함.
yum module list php
Last metadata expiration check: 1:35:36 ago on Fri 22 Jul 2022 11:22:59 AM KST.
Rocky Linux 8 - AppStream
Name Stream Profiles Summary
php 7.2 [d] common [d], devel, minimal PHP scripting language
php 7.3 common [d], devel, minimal PHP scripting language
php 7.4 common [d], devel, minimal PHP scripting language
php 8.0 common [d], devel, minimal PHP scripting language
yum module enable php:7.4
yum install php
Dependencies resolved.
========================================================================================================================================================
Package Architecture Version Repository Size
========================================================================================================================================================
Installing:
php x86_64 7.4.19-3.module+el8.6.0+990+389ef54a appstream 1.5 M
(2) Zabbix 설치 전 PHP 및 HTTP config 파일 수정
- httpd.conf 수정
/etc/httpd/conf/httpd.conf ## IP주소 입력
ServerName 192.x.x.x:80
- php.ini 수정
sed -i 's/^;date.timezone =/date.timezone = Asia\/Seoul/' /etc/php.ini
sed -i 's/post_max_size = 8M/post_max_size = 16M/g' /etc/php.ini
sed -i 's/max_execution_time = 30/max_execution_time = 300/g' /etc/php.ini
sed -i 's/max_input_time = 60/max_input_time = 300/g' /etc/php.ini
위 설정 후,
systemctl start php-fpm
systemctl start httpd
5. Zabbix 6 설치
(1) Zabbix Source 파일 다운로드 및 압축 해제
https://www.zabbix.com/download_sources
[root@rockzabbix data]# tar -zxvf zabbix-6.2.0.tar.gz
....
압축해제중...
....
[root@rockzabbix data]# ls
mysql zabbix-6.2.0 zabbix-6.2.0.tar.gz
(2) Zabbix 설치
groupadd --system zabbix
useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix
chown -R zabbix:zabbix zabbix-6.2.0
yum install -y pcre*
yum install -y openssl-devel
yum install -y perl
yum install -y gcc
yum install -y curl curl-devel
yum install -y libevent-devel
yum install -y libxml2-devel
yum install -y libcurl-devel
yum install -y libcrypto.so.10
yum install -y libssl*
yum install -y libncurses.so.5
yum install -y libtinfo*
yum install -y net-tools
yum install -y net-snmp-devel
yum install -y make
yum install -y mariadb-devel
yum install -y php-mysqlnd
dnf --enablerepo=powertools install OpenIPMI-devel
sed -i 's/=enforcing/=disabled/' /etc/selinux/config
./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi
make; make install;
(3) Zabbix 설정 작업
설치는 완료 되었고, 수동으로 mysql 에 데이터베이스 넣어주는 작업이 필요함.
# mysql -u root -p
>> 패스워드 입력 후 접속하여 아래 SQL쿼리 날려주세요.
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by 'PASSWORD입력';
quit
Zabbix가 저장된 디렉토리에 보면 database 폴더가 있고 해당 폴더에 접속하여 DB데이터를 설치한 mariadb에 넣어주는 작업
mysql -uzabbix -p패스워드 zabbix < schema.sql
mysql -uzabbix -p패스워드 zabbix < images.sql
mysql -uzabbix -p패스워드 zabbix < data.sql
아래 경로에서 DBPassword 지정.
vi /usr/local/etc/zabbix_server.conf # DBHost, DBName, DBUser, DBPassword 확인
mkdir /var/www/html/zabbix
cp -R zabbix-6.2.0/ui/* /var/www/html/zabbix/
systemctl restart mariadb
systemctl restart php-fpm
systemctl restart httpd
vim /etc/systemd/system/zabbix-server.service
#######################################
[Unit] Description=Zabbix Server
After=syslog.target network.target mariadb.service
[Service] Type=oneshot
User=zabbix
ExecStart=/usr/local/sbin/zabbix_server
ExecReload=/usr/local/sbin/zabbix_server -R config_cache_reload
RemainAfterExit=yes
PIDFile=/var/run/zabbix/zabbix_server.pid
[Install] WantedBy=multi-user.target
######################################
systemctl daemon-reload
systemctl start zabbix-server
그리고 web browser에 설치한 서버의 IP주소/zabbix 로 접속하시면 됩니다.
timeout 에러가 난다면 방화벽을 모두 내려주세요.
systemctl stop firewalld
예외처리하고 싶으면,
firewall-cmd --add-port={80,10051,10050}/tcp --permanent
firewall-cmd --reload systemctl restart httpd
** Mariadb데이터 저장 디렉토리 변경을 하고 싶으나, 에러가 많이 나네요. 우선 데이터 저장 위치 변경은 무시하고 작성하였습니다. 타 블로그에서 mariadb 저장위치 변경만 확인하고 진행 하면 될 거 같습니다.
*** 위에까지 설정해놓고 나왔는데 다음 Step에서 Database Support | off | fail 에러로 진행이 안되었습니다.
php-mysqlnd 모듈 설치 후 성공하였습니다. (위 글 업데이트)
설치는 완료되었는데 이제부터 시작입니다. 모니터링 대상 서버들에 Agent를 설치해야 되는데 외부 통신이 가능하다면 아래 명령어로 설치가 가능합니다.
# yum install -y zabbix-agent
* 인터넷이 안되는 조건이면, 아래 사이트에서 해당 버전의 RPM (우분투면 Deb)다운받아 올려주고 명령어를 날려줍니다.
[명령어]
rpm -Uvh zabbix-agent-6.2.2-release1.el8.x86_64.rpm
https://repo.zabbix.com/zabbix/6.2/rhel/8/x86_64/
설치가 완료되면 " /etc/zabbix/zabbix_agentd.conf"파일에 아래 내용만 수정합니다.
- Server= Zabbix서버 IP주소 (대상 서버 X)
- Hostname=모니터링 대상 서버 인식할 Hostname
위와 같이 설정하고 zabbix 웹 화면에서 Host 등록 후 템플릿(모니터링 메트릭 템플릿)을 적용하면 아래와 같이 모니터링 화면 구성이 가능합니다.