Zabbix Agent Install - Linux [CentOS]

    Zabbix Agent Install - Linux [CentOS]

    Zabbix Server 가 설치가 되었으니 이제 감시를 걸어야 할 서버에 Agent를 설치해야 됩니다.
    그중 Linux CentOS 서버에 버전별 설치를 진행하도록 하겠습니다. Agent는 공식 홈페이지에 이미 컴파일이 완료된 소스파일을 다운로드할 수 있습니다만 커널 OS별로 분류했기 때문에 Linux의 경우는 커널 3.X 까지 즉 CentOS 8부터 커널 4.X OS를 기본으로 하는 서버에서는 다운로드할 곳이 없습니다. 커널 4.X 이상이 설치된 서버는 Zabbix 저장소에 업로드된 RPM 패키지 파일을 다운로드하여 설치하는 게 좋습니다.

    ■ 진행하기전 참고사항

    ※ Zabbix Server 준비 [포스팅 참고]

    ※ Agent를 설치할 서버의 CentOS 버전 및 Kernel 버전 확인

    □ CentOS 버전

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

     

    □ Kernel 버전 확인

    [root@localhost ~]# uname -r

    5.7.2-1.el8.elrepo.x86_64

     

    [root@localhost ~]# hostnamectl | grep Kernel

    Kernel: Linux 5.7.2-1.el8.elrepo.x86_64

    Kernel 2.4.X / 2.6.X / 3.X 이용하는 CentOS 5/6/7 서버는 이미 컴파일 완료된 공식 홈페이지 소스파일 직접 [다운로드] 설치

    [추천(쉬움)] CentOS 7/8 Kernel 4.X 이상일 경우는 [Zabbix 저장소] 업로드된 RPM 패키지 파일 설치 권장 

    ※ Agent는 독립적인 호환이므로 Zabbix Server 버전에 상관없이 하위 버전이라도 OS에 맞는 Agent를 설치할 것

    ■진행순서


    1. 감시할 서버 CentOS 8 - Zabbix Agent 설치

    □ [방법 1] YUM 설치

    ※ zabbix-release-5.0-1.el8.noarch.rpm Zabbix 저장소를 설치했다면 YUM 미러사이트에서 자동으로 설치 가능

    [root@localhost ~]# yum install zabbix-agent

    ============================================================ 
     Package                   Architecture           Version           Repository           Size
    ============================================================
    Installing:
     zabbix-agent               x86_64               5.0.1-1.el8         zabbix              454 k

    Transaction Summary
    ============================================================
    설치  1 Package

    Total download size: 454 k
    Installed size: 1.9 M
    Is this ok [y/N]: y

    ...

      zabbix-agent-5.0.1-1.el8.x86_64

    완료되었습니다!

    □ [방법 2] YUM미러를 찾지 못해 설치를 못하는 경우는 직접 [Zabbix 저장소]에서 버전에 맞는 RPM 패키지 설치

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

    http://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-agent-5.0.1-1.el8.x86_64.rpm

    Verifying...          ################# [100%]
    준비 중...              ########### [100%]
    Updating / installing...
       1:zabbix-agent-5.0.1-1.el8         ############ [100%]

    [/usr/lib/tmpfiles.d/mdadm.conf:1] Line references path below legacy directory /var/run/,

    updating /var/run/mdadm → /run/mdadm; please update the tmpfiles.d/ drop-in file accordingly.

    [/usr/lib/tmpfiles.d/pesign.conf:1] Line references path below legacy directory /var/run/,

    updating /var/run/pesign → /run/pesign; please update the tmpfiles.d/ drop-in file accordingly.

    [해당 문구는 무시할 것]

    2. Zabbix Agent 세팅[수정 후 저장]

    □ YUM/RPM 어느 것을 설치해도 기본 디폴트 경로는 같습니다.

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

         13 PidFile=/var/run/zabbix/zabbix_agentd.pid        [기본 설정]

         32 LogFile=/var/log/zabbix/zabbix_agentd.log        [기본 설정]

        119 Server=192.168.232.128                                               [Zabbix Server의 IP 또는 호스트 이름]

        160 #ServerActive=127.0.0.1                                               [주석(#) 처리]

        171 Hostname=192.168.232.129                                       [Agent 설치 서버의 IP 또는 호스트 이름]

    3. Zabbix Agent 서비스 구동

    □ 서비스 구동

    [root@localhost ~]# systemctl start zabbix-agent

     

    □ 부팅 시 자동 활성화

    [root@localhost ~]# systemctl enable zabbix-agent

    □ 프로세스 확인[아래 listener까지 나와야 정상]

    [root@localhost ~]# ps -ef |grep zabbix
    zabbix    21139      1  0 01:25 ?        00:00:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf

    zabbix    21140  21139  0 01:25 ?        00:00:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec]
    zabbix    21141  21139  0 01:25 ?        00:00:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection]
    zabbix    21142  21139  0 01:25 ?        00:00:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection]
    zabbix    21144  21139  0 01:25 ?        00:00:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection]

    4. 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 10050 -j ACCEPT    [Zabbix Agent 포트 (추가)]
    -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 ~]# iptables -nL |grep 10050
    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:10050

    5. Zabbix Server 관리자에서 감시할 호스트 등록 하기

    5-1 [설정] ▷ [호스트] ▷ [호스트 작성]

    5-2 호스트 작성 등록

    □ [*필수 입력] 호스트 명 - Agent 서버를 명시하는 이름으로 임의 입력하시면 되나 구분할 수 있도록 할 것

    □ [*필수 입력] 그룹 - 그룹을 별도로 만들 수 있으나 아직 없으므로 기본 등록되어있는 그룹 선택[Linux servers]

    □ [*필수 입력] Interfaces - 호스트 등록된 게 없으면 일반적으로 Agent 서버의 IP를 입력하는 것을 권고

    (※ 한글 메뉴에서는 포트 부분이 인터페이스 겹치는 문제가 있습니다. 기본 포트 10050 이므로 문제는 없습니다.)

    5-3 템플릿 부분 등록

    □ [선택] ▷ 템플릿 호스트 그룹[선택] ▷ Templates/Operationg systems [클릭] ▷ Template OS Linux by Zabbix agent [클릭] ▷ 최종 선택 후 [추가] 시 등록 완료 

    6. 등록 후 연결 확인

    □ 정상 연결 시 상태에 [ZBX] 초록색 표시로 됩니다.

    □ 실패 예시)

    실패 시 [ZBX] 빨간색 표시로 마우스 클릭 시 실패 사유가 나옵니다. 참고하시어 설정 변경하시면 됩니다.

    ■ 버전별 Agent 패키지 설치[예시]

    □ CentOS 7 64bit

    [root@localhost ~]# rpm -ivh http://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-agent-5.0.1-1.el7.x86_64.rpm

     

    □ CentOS 6 64bit

    [root@localhost ~]# rpm -ivh http://repo.zabbix.com/zabbix/5.0/rhel/6/x86_64/zabbix-agent-5.0.1-1.el6.x86_64.rpm

     

    □ CentOS 5 64bit

    [root@localhost ~]# rpm -ivh http://repo.zabbix.com/zabbix/5.0/rhel/5/x86_64/zabbix-agent-5.0.1-1.el5.x86_64.rpm

     

    이렇게 저장소를 잘 이용하면 굳이 소스파일 다운로드하여서 일일이 세팅할 필요 없이 RPM 파일로 쉽게 에이전트를 설치할 수 있습니다. 설치 경로 및 실행 방법은 전부 동일하며 아래와 같이 버전별로 연결된 것을 확인할 수 있습니다.

    ■ Zabbix-agent 시작 에러 발생 시

    [root@localhost zabbix]# systemctl start zabbix-agent
    Job for zabbix-agent.service failed. See "systemctl status zabbix-agent.service" and "journalctl -xe" for details.

    □ journalctl 에러 로그

    [root@localhost zabbix]# journalctl -xe

    -- Unit zabbix-agent.service has begun starting up.
    7월 02 16:56:25 localhost.localdomain systemd[1]:

    Can't open PID file /run/zabbix/zabbix_agentd.pid (yet?) after start: No such file or directory

     7월 02 16:56:25 localhost.localdomain systemd[1]: Daemon never wrote its PID file. Failing.
     7월 02 16:56:25 localhost.localdomain systemd[1]: Failed to start Zabbix Agent.
    -- Subject: Unit zabbix-agent.service has failed

    □ zabbix-agent 에러 로그

    [root@localhost ~]# vi /var/log/zabbix/zabbix_agentd.log

      2564:20200702:165503.496 using configuration file: /etc/zabbix/zabbix_agentd.conf

      2564:20200702:165503.496 cannot set resource limit: [13] Permission denied
      2564:20200702:165503.496 cannot disable core dump, exiting...
      2564:20200702:165503.496 Zabbix Agent stopped. Zabbix 5.0.1 (revision c2a0b03480).

    두 개의 로그를 보면 권한 거부로 인한 /run/zabbix/zabbix_agentd.pid 경로에 PID 파일을 생성하지 못해 Agent를 실행하지 못하는 에러 로그입니다. YUM/RPM 설치는 계정 생성 및 폴더 경로 권한 등 이미 설정이 다 되어있기 때문에 변경할 필요가 없습니다.

    □ 계정 생성 확인

    [root@localhost ~]# cat /etc/passwd | grep zabbix
    zabbix:x:989:985:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin [계정 문제없음]

     

    □ PID생성 위치 권한 확인

    [root@localhost ~]# ls -al /var/run/ | grep zabbix
    drwxr-xr-x   2 zabbix         zabbix           60  7월  2 20:50 zabbix  [권한 문제없음]

    그래도 실행했을 때 Permission denied 에러가 발생한다면 거의 99% Selinux 보안에 의한 문제입니다. 아래와 같이 진행

    ※ SELinux(Security-Enhanced Linux) [공식 홈페이지 참고]

    관리자가 시스템 액세스 권한을 제한할 수 있는 Linux 시스템용 보안 설정이며 적용되어 있을 경우 어플리케이션,프로세스,파일실행에 대한 액세스를 제어하기 때문에 권한 실행 에러로 인한 문제가 많이 발생합니다. 그래서 대부분의 솔루션 업체가 이 권한을 해제하는 이유입니다. 물론 보안을 위해 정책에 맞게 허용을 해주면 좋겠지만 설정 방법과 관리하기 어렵기 때문에 사용을 안 하는 편입니다.

    □ Selinux 보안 해제 [적용 후 서버 재시작 필요]

    [root@localhost ~]# vi /etc/selinux/config

     

    # This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    #     enforcing - SELinux security policy is enforced.
    #     permissive - SELinux prints warnings instead of enforcing.
    #     disabled - No SELinux policy is loaded.
    SELINUX=disabled                [enforcing → disabled 변경]
    # SELINUXTYPE= can take one of these three values:
    #     targeted - Targeted processes are protected,
    #     minimum - Modification of targeted policy. Only selected processes are protected.
    #     mls - Multi Level Security protection.
    SELINUXTYPE=targeted

    추후 OS별로 업로드를 진행하겠지만 방식은 전부 비슷합니다. 참고하시어 진행하시면 어려움 없이 에이전트를 등록하실 수 있을 것으로 판단됩니다.

    Designed by JB FACTORY