태그 보관물: Zabbix

Zabbix Server 설치

개요

Zabbix Server 설치는 리눅스 서버 및 네트워크 장비의 성능과 가용성을 모니터링하는 오픈소스 모니터링 플랫폼 구축의 첫 단계입니다. Zabbix는 에이전트 기반 모니터링, SNMP, IPMI 등 다양한 수집 방식을 지원하며 웹 기반 대시보드를 제공합니다. 이 글에서는 CentOS 7 환경에서 Zabbix Server를 설치하는 절차를 정리합니다.

※ 설치 시기가 오래된 관계로 최근 버전과 설치 방식이 상이할 수 있습니다.

Zabbix 아키텍처 개요

Zabbix는 크게 Zabbix Server, Zabbix Agent, Zabbix Web UI로 구성됩니다. Server는 수집된 데이터를 MariaDB에 저장하고 트리거를 평가하여 알림을 발송하는 핵심 컴포넌트입니다. Agent는 모니터링 대상 서버에 설치되어 CPU, 메모리, 디스크, 프로세스 등의 메트릭을 수집해 Server에 전달합니다. Web UI는 Apache + PHP 기반으로 대시보드, 트리거 설정, 알림 설정 등을 관리합니다.

Zabbix는 에이전트 방식 외에도 SNMP(네트워크 장비), IPMI(서버 BMC), JMX(Java 애플리케이션), ICMP(ping 기반) 수집 방식을 지원합니다. 수백 대 이상의 서버를 모니터링하는 대규모 환경에서는 Zabbix Proxy를 배치하여 Server의 부하를 분산합니다. 이 가이드는 Zabbix 2.4 버전 기준이며, 현재 최신 버전(7.x)은 패키지 설치 방식이 다를 수 있습니다.

사전 설치 환경 구성(Pre Configuration)

  • OS Version : CentOS(RHEL) 7 64bit
  • Web Service : Apache (httpd)
  • Language : PHP (Version 5.4)
# /etc/php.ini 수정
max_execution_time=300      #스크립트의 최대 실행 시간
post_max_size=16M           #POST 방식으로 넘겨질 최대 데이터 크기
max_input_time=300          #스크립트 페이지로 넘어가기 전 php엔진이 데이터를 업로드 받는 최대 시간
date.timezone="Asia/Seoul"  #지역 시간 지정
  • DBMS : MariaDB or MySQL(Version 5.5)
# yum install MariaDB-shared MariaDB-devel MariaDB-common MariaDB-server MariaDB-client
// MariaDB 서비스 시작

# mysql_secure_installation
// 보안 설정 진행 ('enter' / 'password' / 'password' / y / n / y / y)

# mysql -uroot -p'password'
MariaDB [(none)]> CREATE DATABASE zabbix CHARACTER SET UTF8;
Query OK, 1 row affected (0.00 sec)

create user 'zabbix'@'localhost' identified by 'password'; #사용자 생성
create user 'zabbix'@'%' identified by 'password'; #원격 접근 사용자 생성

MariaDB [(none)]> GRANT ALL PRIVILEGES on zabbix.* to 'zabbix'@'localhost' IDENTIFIED BY 'SECRET_PASSWORD';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
  • 관련 패키지 설치
# yum install net-snmp-devel curl-devel fping 2fsprogs-devel zlib-devel libgssapi-devel krd5-devel openssl-devel libidn-devel iksemel-devel libXpm openssh-clients php-xml php-xmlrpc sharutils net-snmp OpenIPMI-devel libssh2-devel php-bcmath php-gd php-mbstring -y
// 설치 실패 항목 존재시 Zabbix Pre Install Error 발생

Zabbix 설치(Version 2.4)

  • Zabbix 패키지 설치 및 설정
// Zabbix Repo 설치
# rpm -Uvh http://repo.zabbix.com/zabbix/2.4/rhel/7/x86_64/zabbix-release-2.4-1.el7.noarch.rpm

// Zabbix Server 설치
# yum install zabbix zabbix-server zabbix-web zabbix-server-mysqlzabbix-web-mysql zabbix-agent -y

// 환경설정 수정
# /etc/zabbix/zabbix_server.conf
DBName=zabbix
DBUser=zabbix
DBPassword='Database 접근 계정 비밀번호'
StartSNMPTrapper=1
ListenIP='NIC IP Address',127.0.0.1
CacheSize=128M
HistoryCacheSize=128M
TrendCacheSize=64M
HistoryTextCacheSize=128M
Timeout=30
  • DB Schema Insert
// 스키마 생성(DB Table 생성 및 Data 입력)
# mysql -u zabbix -p zabbix < /usr/share/doc/zabbix-server-mysql-2.4.6/create/schema.sql

// 이미지 생성(3.0  버전 이후 zcat create.sql.gz | mysql -u root zabbix)
# mysql -u zabbix -p zabbix < /usr/share/doc/zabbix-server-mysql-2.4.6/create/images.sql

// 데이터 생성
# mysql -u zabbix -p zabbix < /usr/share/doc/zabbix-server-mysql-2.4.6/create/data.sql

Zabbix WEB 설치

  • WEB Document root 변경 : /usr/share/zabbix 디렉토리를 아파치의 기본 경로로 변경 하거나 Document root로 복사
  • 아파치 재시작 후 웹브라우저로 해당 웨서버 접속
  • 설치 과정 진행(캡쳐 화면은 2.2 버전을 활용한 것으로 실제와 차이가 다소 있습니다.)
정상 접속 상태 Next 이동
Required를 모두 충족 하면 OK상태 Fail이 하나라도 있으면 진행안됨
Required를 참고 하여 모두 적용 후 Next 이동
Database 정보 입력 모두 입력 후(MySQL 또는 MariaDB 선택, 기본 포트 미변경시 0 유지)
Test connection에 성공 하면 Next 이동
Host의 localhost 또는 IP 및 Port Num 확인 후 Next 이동
설정 확인 후 Next 이동
Fail 발생시 /usr/share/zabbix/conf/zabbix.conf.php.example 파일을 Document root 의 conf/zabbix.conf.php로 복사
Retry 재시도
OK 상태 확인 후 Finish 이동
// zabbix-server 등록
# systemctl enable zabbix-server

// zabbix-server 시작
# systemctl start zabbix-server
※시작 오류 발생시 yum update trousers
Zabbix WEB 로그인 후 정상 페이징 상태 확인(admin/zabbix)

Zabbix 운영 및 트러블슈팅

Zabbix Server 기동 후 로그(/var/log/zabbix/zabbix_server.log)에서 오류를 확인합니다. 가장 흔한 기동 오류는 DB 접속 실패(DBHost/DBUser/DBPassword 불일치)와 필수 패키지 미설치로 인한 라이브러리 오류입니다. trousers 패키지 오류가 발생하면 yum update trousers로 해결할 수 있습니다. Agent 연결이 안 될 경우 방화벽에서 10050/10051 포트(agent/server 기본 포트)가 열려 있는지 확인합니다.

Zabbix-agent 환경 설정

  • 설정 및 서비스 재시작
# /etc/zabbix/zabbix_agentd.conf 수정
Server=127.0.0.1          # 로컬호스트가 아닌 경우 실제 IP 입력
Hostname=hostname         # 호스트네임 적용
# ServerActive=127.0.0.1  # 주석처리

// zabbix-agent 등록
# systemctl enable zabbix-agent

// zabbix-agent 시작
# systemctl start zabbix-agent
  • Zabbix 관리 페이지에서 Hosts에 agent를 추가하여 모니터링 시작

참고

참고 문서: Zabbix 공식 설치 문서 · Zabbix 다운로드 페이지

Zabbix Maps 예시

개요

Zabbix Maps는 모니터링 대상 호스트와 네트워크 장비를 시각적으로 배치하여 네트워크 토폴로지를 한눈에 파악할 수 있는 기능입니다. 아이콘, 링크, 레이블을 자유롭게 배치하고 호스트 상태를 실시간으로 색상으로 표시할 수 있어 운영 대시보드로 활용하기 좋습니다.

Zabbix로 모니터링중인 홈서버 자산 목록을 간단히 그려봤습니다.

L3와 L2, 가운데 Maintree를 제외하고는 모두 VM이지만 리눅스와 윈도우 모두 Zabbix로 모니터링 하는데는 크게 지장이 없습니다.

에이전트도 가벼운 편이어서 크게 부담은 없지만 서버를 수백대 이상 운영하는 환경에서는 Zabbix 서버 자체에 부하가 걸릴 가능성이 크고 수많은 이벤트로 인해 DB의 사용량이 상당히 커질 것이므로 DBMS의 적절한 저장 공간 할당 및 이벤트 삭제 스케쥴을 고려해야 할 것입니다.

Zabbix Maps 생성 방법

Zabbix Maps는 Monitoring → Maps 메뉴에서 생성하고 편집합니다. 맵 생성 시 배경 이미지(Background Image)와 캔버스 크기를 설정한 후, 호스트 아이콘을 드래그로 배치합니다. 각 아이콘은 Zabbix에 등록된 호스트와 연결되며, 호스트의 현재 트리거 상태(OK/Problem)에 따라 아이콘 색상이 실시간으로 변경됩니다.

Link는 두 호스트 또는 요소 간의 연결을 표현하며, 링크에 트리거를 연결하면 해당 트리거 상태에 따라 링크 색상이 변합니다. 이를 통해 스위치 포트 다운이나 네트워크 연결 끊김 같은 상태를 시각적으로 즉시 파악할 수 있습니다.

맵 아이콘과 상태 표시

Zabbix Maps에서 각 요소는 네 가지 상태 색상으로 표시됩니다. 녹색은 정상(OK), 빨간색은 Problem(트리거 발생), 주황색은 경고(Warning), 회색은 미모니터링(Maintenance) 또는 데이터 없음 상태입니다.

아이콘 이미지는 Zabbix 기본 제공 이미지 외에 커스텀 PNG/JPG를 Administration → General → Images에서 업로드하여 사용할 수 있습니다. 라우터, 스위치, 서버, 방화벽 등 장비 유형을 직관적으로 표현하는 아이콘을 사용하면 운영자가 장애 위치를 빠르게 특정할 수 있어 MTTR(평균 복구 시간) 단축에 기여합니다. 대규모 환경에서는 맵을 계층적으로 구성하여 상위 맵에서 하위 맵으로 드릴다운하는 방식으로 확장성을 확보할 수 있습니다.

Zabbix는 오픈소스 엔터프라이즈 모니터링 솔루션으로, 서버 수백 대 이상의 규모에서는 Zabbix 프록시를 통해 수집 부하를 분산하고 DB 파티셔닝이나 별도 이벤트 삭제 정책을 통해 장기 운영 시 성능을 유지할 수 있습니다.

참고

참고 문서: Zabbix Monitoring Maps 화면 설명 · Zabbix Action 알림 설정