CentOS 8 - Zabbix(자빅스) 5.0 LTS 오픈소스용 모니터링 설치

    CentOS 8 - Monitoring install for Zabbix 5.0 LTS open source

    자빅스(Zabbix) [공식 홈페이지]
    간단하게 말하면 네트워크나 서버(가상)등을 포함한 서비스들을 감시하고 실시간으로 자원을 체크하여 관리자에게 신속히 알리기 위한 네트워크 관리 솔루션 소프트웨어입니다. Zabbix 에이전트를 Unix, Linux, Windows 등의 OS에 설치하여 CPU, MEM, 파일 시스템(용량), 특정 TCP 등을 포함한 많은 정보를 포함하여 감시를 할 수 있으며 장애 대비 모니터링으로써도 탁월합니다.

    해외 소프트웨어이긴 하지만 무료 모니터링 오픈소스이며 무료라고 해서 기능이 제한적이거나 하지 않습니다. 거의 우리나라 상용 모니터링 솔루션과 비교해도 될 만큼 그 기능이 다양하며 접근성이 용이합니다. 필요하다면 솔루션 업체에 상담 및 일정 비용을 지불하여 원격지원을 받을 수도 있습니다.

    ■ [설치환경 및 준비물]
    릴리즈 설치 테스트 : 2020-06-29
    CentOS 8 리눅스 설치 서버 [포스팅 참고]

    OS 버전
    [root@localhost ~]# cat /etc/redhat-release
    CentOS Linux release 8.1.1911 (Core)

     

    ※ CentOS 8 커널 5.7 적용 후 테스트 진행 [기본 커널에서 작업해도 상관없음]
    [root@localhost ~]# uname -r

    5.7.2-1.el8.elrepo.x86_64

    ■ 진행순서


    1. Yum 설치를 위한 Zabbix 저장소 추가

    [root@localhost ~]# rpm -ivh http://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm

    ...

    Updating / installing...
       1:zabbix-release-5.0-1.el8         ################################# [100%]

    ※ Zabbix 공식 저장소[스크린샷 참고] - http://repo.zabbix.com/zabbix/

    ※ Zabbix 공식 매뉴얼[한국어는 없음] - https://www.zabbix.com/manuals

    접속을 하면 버전별로 파일이 업로드되어있습니다. 설치하려는 버전에 맞게 RPM 정보를 가져오면 됩니다.

    릴리즈 버전 [2020-05-20] : zabbix-release-5.0-1.el8.noarch.rpm

    2. Zabbix / DB(MariaDB) / WEB(Apache) / PHP 한 번에 설치 진행

    [root@localhost ~]# yum install zabbix-server-mysql zabbix-web-mysql mariadb-server zabbix-apache-conf zabbix-agent

     

    ==========================================================================================
     Package                                           Arch                Version                                 Repository                      Size
    ==========================================================================================
    Installing:
     mariadb-server                          x86_64        3:10.3.17-1.module_el8.1.0+257+48736ea6        AppStream          16 M
     zabbix-agent                               x86_64        5.0.1-1.el8                                   zabbix                         454 k
     zabbix-apache-conf                 noarch        5.0.1-1.el8                                   zabbix                         17 k
     zabbix-server-mysql                x86_64        5.0.1-1.el8                                   zabbix                         2.6 M
     zabbix-web-mysql                    noarch        5.0.1-1.el8                                   zabbix                         16 k
    Installing dependencies:
     apr                                                  x86_64         1.6.3-9.el8                                 AppStream                 125 k
     apr-util                                          x86_64        1.6.1-6.el8                                  AppStream                 105 k
     httpd                                              x86_64        2.4.37-21.module_el8.2.0+382+15b0afa8          AppStream            1.7 M
     httpd-filesystem                       noarch        2.4.37-21.module_el8.2.0+382+15b0afa8           AppStream            36 k
     httpd-tools                                 x86_64        2.4.37-21.module_el8.2.0+382+15b0afa8            AppStream           103 k
     mariadb                                       x86_64        3:10.3.17-1.module_el8.1.0+257+48736ea6       AppStream            6.1 M
     mariadb-common                   x86_64        3:10.3.17-1.module_el8.1.0+257+48736ea6       AppStream            62 k
     mariadb-connector-c                 x86_64     3.0.7-1.el8                                  AppStream                148 k
     mariadb-connector-c-config   noarch     3.0.7-1.el8                                  AppStream                 13 k
     mariadb-errmsg                      x86_64         3:10.3.17-1.module_el8.1.0+257+48736ea6       AppStream             232 k
     mod_http2                                x86_64         1.11.3-3.module_el8.2.0+307+4d18d695             AppStream             157 k
     nginx-filesystem                      noarch        1:1.14.1-9.module_el8.0.0+184+e34fea82           AppStream              24 k
     perl-DBD-MySQL                     x86_64        4.046-3.module_el8.1.0+203+e45423dc               AppStream             156 k
     perl-DBI                                      x86_64         1.641-3.module_el8.1.0+199+8f0a6bbd               AppStream             740 k
     php-bcmath                             x86_64         7.2.24-1.module_el8.2.0+313+b04d0a66             AppStream              79 k
     php-common                          x86_64         7.2.24-1.module_el8.2.0+313+b04d0a66             AppStream              661 k
     php-fpm                                    x86_64          7.2.24-1.module_el8.2.0+313+b04d0a66            AppStream              1.6 M
     php-gd                                       x86_64          7.2.24-1.module_el8.2.0+313+b04d0a66            AppStream              84 k
     php-json                                    x86_64         7.2.24-1.module_el8.2.0+313+b04d0a66            AppStream               73 k
     php-ldap                                   x86_64         7.2.24-1.module_el8.2.0+313+b04d0a66            AppStream               79 k
     php-mbstring                         x86_64         7.2.24-1.module_el8.2.0+313+b04d0a66            AppStream               580 k
     php-mysqlnd                          x86_64         7.2.24-1.module_el8.2.0+313+b04d0a66            AppStream              190 k
     php-pdo                                    x86_64         7.2.24-1.module_el8.2.0+313+b04d0a66            AppStream              122 k
     php-xml                                    x86_64          7.2.24-1.module_el8.2.0+313+b04d0a66            AppStream              188 k
     unixODBC                                 x86_64          2.3.7-1.el8                                    AppStream                458 k
     OpenIPMI-libs                         x86_64          2.0.27-1.el8                                  BaseOS                      507 k
     centos-logos-httpd              noarch          80.5-2.el8                                      BaseOS                       24 k
     dejavu-fonts-common        noarch         2.35-6.el8                                       BaseOS                      74 k
     dejavu-sans-fonts                 noarch         2.35-6.el8                                       BaseOS                      1.5 M
     net-snmp-libs                         x86_64         1:5.8-14.el8                                    BaseOS                      821 k
     perl-Math-BigInt                    noarch         1:1.9998.11-7.el8                        BaseOS                      196 k
     perl-Math-Complex              noarch         1.59-416.el8                                  BaseOS                      108 k
     zabbix-web                              noarch         5.0.1-1.el8                                      zabbix                        3.1 M
     fping                                           x86_64         3.16-1.el8                                        zabbix-non-supported      51 k
    Installing weak dependencies:
     apr-util-bdb                            x86_64         1.6.1-6.el8                                      AppStream               25 k
     apr-util-openssl                    x86_64         1.6.1-6.el8                                      AppStream               27 k
     mariadb-backup                   x86_64         3:10.3.17-1.module_el8.1.0+257+48736ea6       AppStream            6.0 M
     mariadb-gssapi-server       x86_64         3:10.3.17-1.module_el8.1.0+257+48736ea6       AppStream             49 k
     mariadb-server-utils           x86_64         3:10.3.17-1.module_el8.1.0+257+48736ea6       AppStream            1.6 M
    Enabling module streams:
     httpd                                            2.4
     mariadb                                      10.3
     nginx                                            1.14
     perl-DBD-MySQL                     4.046
     perl-DBI                                      1.641
     php                                               7.2

    Transaction Summary
    ========================================================================================
    설치  44 Package

     

    Total download size: 47 M
    Installed size: 232 M
    Is this ok [y/N]: y

     

    설치됨:
      mariadb-server-3:10.3.17-1.module_el8.1.0+257+48736ea6.x86_64    zabbix-agent-5.0.1-1.el8.x86_64

      zabbix-apache-conf-5.0.1-1.el8.noarch              zabbix-server-mysql-5.0.1-1.el8.x86_64

      zabbix-web-mysql-5.0.1-1.el8.noarch

      apr-util-bdb-1.6.1-6.el8.x86_64                              apr-util-openssl-1.6.1-6.el8.x86_64
      mariadb-backup-3:10.3.17-1.module_el8.1.0+257+48736ea6.x86_64
      mariadb-gssapi-server-3:10.3.17-1.module_el8.1.0+257+48736ea6.x86_64
      mariadb-server-utils-3:10.3.17-1.module_el8.1.0+257+48736ea6.x86_64
      apr-1.6.3-9.el8.x86_64                                                apr-util-1.6.1-6.el8.x86_64

      httpd-2.4.37-21.module_el8.2.0+382+15b0afa8.x86_64

      httpd-filesystem-2.4.37-21.module_el8.2.0+382+15b0afa8.noarch

      httpd-tools-2.4.37-21.module_el8.2.0+382+15b0afa8.x86_64
      mariadb-3:10.3.17-1.module_el8.1.0+257+48736ea6.x86_64
      mariadb-common-3:10.3.17-1.module_el8.1.0+257+48736ea6.x86_64
      mariadb-connector-c-3.0.7-1.el8.x86_64        mariadb-connector-c-config-3.0.7-1.el8.noarch

      mariadb-errmsg-3:10.3.17-1.module_el8.1.0+257+48736ea6.x86_64
      mod_http2-1.11.3-3.module_el8.2.0+307+4d18d695.x86_64

      nginx-filesystem-1:1.14.1-9.module_el8.0.0+184+e34fea82.noarch

      perl-DBD-MySQL-4.046-3.module_el8.1.0+203+e45423dc.x86_64
      perl-DBI-1.641-3.module_el8.1.0+199+8f0a6bbd.x86_64
      php-bcmath-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64
      php-common-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64
      php-fpm-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64
      php-gd-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64
      php-json-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64
      php-ldap-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64
      php-mbstring-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64
      php-mysqlnd-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64
      php-pdo-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64
      php-xml-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64
      unixODBC-2.3.7-1.el8.x86_64                                                OpenIPMI-libs-2.0.27-1.el8.x86_64

    centos-logos-httpd-80.5-2.el8.noarch

    dejavu-fonts-common-2.35-6.el8.noarch                        dejavu-sans-fonts-2.35-6.el8.noarch

    net-snmp-libs-1:5.8-14.el8.x86_64

    perl-Math-BigInt-1:1.9998.11-7.el8.noarch                      perl-Math-Complex-1.59-416.el8.noarch

    zabbix-web-5.0.1-1.el8.noarch                                              fping-3.16-1.el8.x86_64

    3. DB(MariaDB) 실행 및 설정

    3-1  DB 구동 및 프로세스 확인

    □ MariaDB 구동

    [root@localhost ~]# systemctl start mariadb

     

    □ 부팅 시 자동 시작 활성화

    [root@localhost ~]# systemctl enable mariadb

     

    □ 프로세스 확인

    [root@localhost ~]# ps -ef | grep mysql
    mysql      9817      1  2 22:55?        00:00:00 /usr/libexec/mysqld --basedir=/usr

    3-2 MariaDB 기본 설정

    [root@localhost ~]# mysql_secure_installation

    NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
          SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

    In order to log into MariaDB to secure it, we'll need the current
    password for the root user.  If you've just installed MariaDB, and
    you haven't set the root password yet, the password will be blank,
    so you should just press enter here.

    Enter current password for root (enter for none): [패스워드가 없기 때문에 엔터]

    OK, successfully used password, moving on...

    Setting the root password ensures that nobody can log into the MariaDB
    root user without the proper authorisation.

    Set root password? [Y/n] Y    [DB ROOT 패스워드 설정]
    New password: 패스워드 입력
    Re-enter new password: 패스워드 재입력
    Password updated successfully!
    Reloading privilege tables..
     ... Success!

     

    By default, a MariaDB installation has an anonymous user, allowing anyone
    to log into MariaDB without having to have a user account created for
    them.  This is intended only for testing, and to make the installation
    go a bit smoother.  You should remove them before moving into a
    production environment.

    Remove anonymous users? [Y/n] Y    [익명의 접근을 막을 것인지? 보안을 위해 Y 엔터]

     ... Success!

    Normally, root should only be allowed to connect from 'localhost'.  This
    ensures that someone cannot guess at the root password from the network.

    Disallow root login remotely? [Y/n] Y    [DB ROOT 원격을 막을 것인지? 보안을 위해 Y 엔터]

     ... Success!

    By default, MariaDB comes with a database named 'test' that anyone can
    access.  This is also intended only for testing, and should be removed
    before moving into a production environment.

    Remove test database and access to it? [Y/n] Y  [Test 용으로 생성된 데이터베이스를 삭제할 것인가? Y 엔터]

     - Dropping test database...
     ... Success!
     - Removing privileges on test database...
     ... Success!

    Reloading the privilege tables will ensure that all changes made so far
    will take effect immediately.

    Reload privilege tables now? [Y/n] Y  [현재 설정한 값을 적용할 것인지? 당연히 Y 엔터]

     ... Success!

    Cleaning up...

    All done!  If you've completed all of the above steps, your MariaDB
    installation should now be secure.

    Thanks for using MariaDB! [완료]

    3-3 MariaDB 접속 및 Zabbix 데이터베이스 생성

    [root@localhost ~]# mysql -u root -p
    Enter password: 패스워드 입력
    Welcome to the MariaDB monitor.  Commands end with ; or \g.
    Your MariaDB connection id is 16
    Server version: 10.3.17-MariaDB MariaDB Server

    Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

     

    □ Zabbix 데이터 베이스 생성[ ※ 중요! UTF8 생성]
    MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;

    Query OK, 1 row affected (0.001 sec)

    □ 권한 부여

    MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'test123';
    Query OK, 0 rows affected (0.001 sec)

     

    □ 적용 후 종료

    MariaDB [(none)]> flush privileges;
    Query OK, 0 rows affected (0.001 sec)

     

    MariaDB [(none)]> exit
    Bye

    4. Zabbix 초기 테이블 값 정보 데이터베이스에 적용

    □ 경로 이동

    [root@localhost ~]# cd /usr/share/doc/zabbix-server-mysql/


    □ 압축해제

    [root@localhost zabbix-server-mysql]# gunzip create.sql.gz

    [root@localhost zabbix-server-mysql]# ls

    AUTHORS  COPYING  ChangeLog  NEWS  README  create.sql (파일 확인)  double.sql


    □ Zabbix 데이터베이스에 복원

    [root@localhost zabbix-server-mysql]# mysql -u root -p zabbix < create.sql

    Enter password: 패스워드 입력

    5. Zabbix Config 설정[수정 후 저장]

    [root@localhost ~]# vi /etc/zabbix/zabbix_server.conf

         38 LogFile=/var/log/zabbix/zabbix_server.log      [기본 설정]

         72 PidFile=/var/run/zabbix/zabbix_server.pid      [기본 설정]

         82 SocketDir=/var/run/zabbix                                      [기본 설정]

         91 DBHost=localhost                                                        [주석(#) 제거]

        100 DBName=zabbix                                                         [DB 생성 이름과 동일하게 설정]

        116 DBUser=zabbix                                                            [DB 유저 생성 이름과 동일하게 설정]

        124 DBPassword=test123                                               [주석(#) 제거 후 DB 유저 패스워드와 동일하게 설정]

    6. Zabbix PHP-FPM Config 설정[수정 후 저장]

    □ 기본 셋팅되어 있으므로 하나의 라인만 수정

    [root@localhost zabbix-server-mysql]# vi /etc/php-fpm.d/zabbix.conf

     

    [zabbix]
    user = apache
    group = apache

    listen = /run/php-fpm/zabbix.sock

    listen.acl_users = apache,nginx
    listen.allowed_clients = 127.0.0.1

    pm = dynamic
    pm.max_children = 50
    pm.start_servers = 5
    pm.min_spare_servers = 5
    pm.max_spare_servers = 35

    php_value[session.save_handler] = files
    php_value[session.save_path]    = /var/lib/php/session

    php_value[max_execution_time] = 300
    php_value[memory_limit] = 128M
    php_value[post_max_size] = 16M
    php_value[upload_max_filesize] = 2M
    php_value[max_input_time] = 300
    php_value[max_input_vars] = 10000
    php_value[date.timezone] = Asia/Seoul     [주석(;) 제거 후 한국 시간으로 수정]

    7. IPTABLES 방화벽 포트 허용 및 재시작

    □ 수정 후 저장

    [root@localhost ~]# vi /etc/sysconfig/iptables

    # sample configuration for iptables service
    # you can edit this manually or use system-config-firewall
    # please do not ask us to add additional ports/services to this default configuration
    *filter
    :INPUT ACCEPT [0:0]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [0:0]
    -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A INPUT -p icmp -j ACCEPT
    -A INPUT -i lo -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 8888 -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT                  [HTTP 웹포트 (추가)]
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 10050 -j ACCEPT          [Zabbix Agent 포트 (추가)]
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 10051 -j ACCEPT          [Zabbix Server 포트 (추가)]
    -A INPUT -j REJECT --reject-with icmp-host-prohibited
    -A FORWARD -j REJECT --reject-with icmp-host-prohibited
    COMMIT

     

    □ 재시작

    [root@localhost ~]# systemctl restart iptables

     

    □ 적용 확인[허용된 포트 확인]

    [root@localhost zabbix-server-mysql]# iptables -nL

    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:80
    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:10050
    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:10051

    8. Zabbix Server / HTTPD / PHP-FPM 서비스 구동

    □ 전체 구동

    [root@localhost ~]# systemctl start zabbix-server httpd php-fpm

     

    □ 부팅 시 자동 활성화

    [root@localhost ~]# systemctl enable zabbix-server httpd php-fpm

     

    □ 프로세스 구동 확인[Zabbix의 경우는 스크린샷 참고]

    [root@localhost ~]# ps -ef | egrep "httpd|zabbix"

    zabbix    10162      1  0 01:06 ?        00:00:00 /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf
    apache    10477  10470  0 01:11 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND

    apache    10478  10471  0 01:11 ?        00:00:00 php-fpm: pool zabbix

    9. Zabbix Web 설치 페이지 접속 [http://서버IP 또는 호스트네임/zabbix]

     

    9-1 본인 PC에서 [ URL : http://192.168.232.128/zabbix ] 접속을 합니다. NEXT

    9-2 미리 세팅되어 있으므로 바로 NEXT

    9-3 DB 세팅 정보에 맞게 설정 후 NEXT

    9-4 빈칸으로 넘어가거나 입력 후 NEXT

    9-5 최종 세팅 확인

    9-6 설치 완료

    9-7 설치 후 처음 웹 관리자 로그인 페이지 접속 정보는 [ ID : Admin / PASS : zabbix ]입니다. [대소문자 주의]

    9-8 최초 메인 인터페이스 접속 화면

    10. 웹 관리자 기본 설정 [Administration ▷ Users ▷ Admin 계정 클릭]

    ※ Alias - Admin 관리자 ID 수정 가능

    ※ Password - 관리자 패스워드 변경 HIGH!

    ※ Language - 언어 설정[Korean (ko_KR)][디폴트 언어는 영어와 한국어만 있으므로 그 외에는 언어팩 설치해야 가능]

    ※ Theme - 스킨 테마 설정[개인적으로 High-contrast light를 추천함]

    11. 업데이트 후 한글이 적용된 관리자 페이지

     

    다음과 같이 순차적으로 진행하면 10분 안에 모니터링 서버를 만들 수 있습니다.

     

    PS.

    저의 경우는 자빅스를 처음 2.X 접하고 3.X부터 본격적으로 이용을 하였으며 현재는 4.X 안정화 버전을 이용하여 약 100대 이상의 서버[Linux/Windows/일부 네트워크 장비]를 감시하고 있습니다. 하드웨어는 VM 가상화를 이용하고 있으며 인텔 코어 기준 [Intel(R) Xeon(R) CPU E7- 4850  @ 2.00 GHz] 물리 코어 X4 / 메모리 4G / 용량 100GB 할당하여 솔루션 설치 옵션도 기본으로 이용하고 있지만 1년 동안 아무 문제가 없었으며 상당히 가볍게 운행되고 있습니다. Zabbix도 무료 오픈소스이지만 많이 대중화되었으며 공식 한국어 매뉴얼은 없지만 일부 한국 대기업에서도 이 Zabbix를 이용하고 있기 때문에 검색하면 자료도 많습니다. 국내 모니터링 솔루션 라이선스는 부르는 게 값이다 보니 비용이 부담스러운 신 분들은 자빅스를 이용해 보는 것도 하나의 대안이 될 것으로 보입니다.

    Designed by JB FACTORY