Monitoring/Zabbix

[모니터링] Rocky 8.5에 Zabbix 6 설치 방법

인프라보이 2022. 7. 22. 17:09

최근 Zabbix를 설치하려고 예전에 남겨놓은 블로그를 펼쳤을 때, 버전도 많이 바뀌어 새롭게 구성을 시도했다가 시행착오를 몇 번 거치게 되어 새로운 Rocky OS에 최신 Zabbix를 설치해보게 되었습니다.

Zabbix 홈페이지에 설치 가이드가 친절하지 않아 단순하고 빠르게 설치할 수 있는 방법을 남기려고 합니다.

1. 사전 준비물

 외부 인터넷과 통신이 되는 Rocky 8.5 버전 (Minimal Version) 준비. 
 
 아래와 같이 파티셔닝. 
 가상머신인데 실제 루트(/)는 30G 디스크로 부트, 스왑 나눠놓았으며, 
 데이터 저장용 50G 디스크로 /data 파티션으로 마운트해놓았음.

Zabbix 설치 대상 서버 파티셔닝 정보

----- 스냅샷 찍기 ----  (이제 스냅샷을 찍어놓고 다음 작업을 하면 좋습니다) -- 완료되면 스냅샷은 꼭 삭제 --

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

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

 

Download Zabbix sources

 

www.zabbix.com

다운로드 링크 주소 복사
source파일 다운로드

 

[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

configure 실행 하고 난 후.

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/

 

Zabbix Official Repository

 

repo.zabbix.com

 설치가 완료되면 " /etc/zabbix/zabbix_agentd.conf"파일에 아래 내용만 수정합니다.
  - Server= Zabbix서버 IP주소 (대상 서버 X)
  - Hostname=모니터링 대상 서버 인식할 Hostname

위와 같이 설정하고 zabbix 웹 화면에서 Host 등록 후 템플릿(모니터링 메트릭 템플릿)을 적용하면 아래와 같이 모니터링 화면 구성이 가능합니다. 

728x90