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

이 글을 공유하기

댓글(0)

Designed by JB FACTORY