본문 바로가기
  • 테크에 관한 모든 것.
IT

Zabbix(시스템 모니터링 도구)

by @TA 2024. 3. 22.
Zabbix: 시스템 모니터링의 꽃, 활용 방법과 알림 설정까지 알아보기

"Zabbix은 오픈 소스 시스템 모니터링 도구로, 서버와 네트워크 상태를 실시간으로 모니터링하고 문제가 발생할 경우 즉각적으로 경고를 제공합니다. 이 글에서는 Zabbix의 특성, 다양한 연동 방법, 그리고 알림 설정에 대해 알아보겠습니다. Zabbix의 활용 방법과 유용한 기능들을 살펴보세요!"

 

Zabbix

Zabbix는 오픈 소스의 네트워크 모니터링 및 경고 시스템으로, 시스템 및 네트워크 리소스의 상태와 퍼포먼스를 모니터링하고 문제가 발생할 경우 경고를 생성하는 데 사용됩니다. 

 

Zabbix 주요 특징

모니터링 기능: Zabbix는 서버, 네트워크 장치 및 애플리케이션 등 다양한 유형의 IT 자원을 모니터링할 수 있습니다. CPU 사용량, 메모리 사용량, 디스크 공간, 네트워크 트래픽 등의 지표를 모니터링할 수 있습니다.

다양한 데이터 수집 방법: Zabbix는 다양한 방법을 통해 데이터를 수집합니다. 에이전트를 사용하여 서버에 직접 데이터를 수집하거나 SNMP, ICMP, TCP, SSH, Telnet 등의 프로토콜을 사용하여 네트워크 장치를 모니터링할 수 있습니다.

유연한 경고 시스템: Zabbix는 모니터링 데이터에 기반하여 경고를 생성할 수 있습니다. 임계값을 설정하여 성능 문제나 장애를 빠르게 감지하고, 이메일, SMS, 대시보드 알림 등 다양한 방법으로 경고를 전송할 수 있습니다.

대시보드 및 리포팅: Zabbix는 사용자 정의 대시보드를 통해 모니터링 데이터를 시각적으로 표시하고, 사용자가 필요로 하는 정보를 쉽게 확인할 수 있도록 합니다. 또한, 리포트 기능을 제공하여 모니터링 데이터의 추세 및 통계를 확인할 수 있습니다.

자동화 및 스크립팅: Zabbix는 API를 통해 다양한 자동화 작업을 지원합니다. 사용자는 API를 사용하여 모니터링 구성을 자동화하거나, 모니터링 데이터를 외부 시스템과 통합할 수 있습니다.

확장성: Zabbix는 대규모 환경에서도 확장 가능합니다. 분산된 아키텍처를 통해 수천 대의 장치를 모니터링할 수 있으며, 프록시 서버를 사용하여 원격 위치의 장치를 모니터링할 수 있습니다.

커뮤니티 및 지원: Zabbix는 활발한 커뮤니티를 가지고 있으며, 다양한 문서와 포럼을 통해 지원을 제공합니다. 또한, 상용 서비스와 지원도 제공되므로 기업 환경에서도 안정적으로 운영할 수 있습니다.

요약하면, Zabbix는 네트워크 및 시스템 모니터링에 필요한 다양한 기능을 제공하며, 유연성과 확장성을 갖춘 오픈 소스 솔루션입니다.

 

Zabbix 버전에 따른 주요 특성 비교

특성 Zabbix 4.0 Zabbix 5.0 Zabbix 6.0
표준 지원 기능 Basic Monitoring Advanced Monitoring Extended Monitoring
UI 개선 Improved UI Redesigned UI Enhanced UI
보안 강화 Enhanced Security Security Improvements Further Security Enhancements
스크립팅 및 자동화 Scripting and Automation Enhanced Scripting Capabilities Advanced Automation Features
성능 향상 Performance Improvements Optimized Performance Further Performance Enhancements
API 추가 기능 Additional API Features Extended API Functionality Advanced API Capabilities
분석 및 보고서 Basic Analysis and Reporting Enhanced Analytics and Reporting Advanced Data Analysis and Reporting

 

(참고) Zabbix 구성 과정 

1. 요구 사항 파악 및 계획 수립: Zabbix를 사용하여 모니터링할 대상 및 필요한 모니터링 항목을 파악하고, 시스템 요구 사항에 맞게 서버 및 네트워크 환경을 계획합니다.

2. Zabbix 서버 설치: Zabbix 서버를 설치하고 구성합니다. 이때 필요한 데이터베이스 (MySQL, PostgreSQL 등)도 함께 설치하고 구성합니다.

3. Zabbix 웹 인터페이스 설정: 설치된 Zabbix 서버에 대한 웹 인터페이스를 구성하고, 관리자 계정을 생성합니다.

4. Zabbix 에이전트 설치 및 구성(Optional): Zabbix 에이전트를 대상 호스트에 설치하여 추가 모니터링을 수행하고자 할 경우, 에이전트를 설치하고 Zabbix 서버와의 통신을 구성합니다.

5. 장치 및 애플리케이션 모니터링 설정: Zabbix 서버에 모니터링할 장치 및 애플리케이션을 추가합니다. 이때 SNMP, ICMP, TCP 등의 프로토콜을 사용하여 네트워크 장치를 모니터링할 수 있습니다.

6. 트리거 및 액션 설정: 모니터링 항목에 대한 트리거를 설정하여 임계값을 정의하고, 이에 따른 액션을 구성하여 필요 시 알림을 생성하도록 설정합니다.

7. 대시보드 및 보고서 생성: Zabbix 웹 인터페이스를 사용하여 사용자 정의 대시보드 및 리포트를 생성하여 모니터링 데이터를 시각화하고 분석할 수 있도록 합니다.

8. 알림 설정: 이메일, SMS 등 다양한 경로로 알림을 받을 수 있도록 알림 설정을 구성합니다.

9. 백업 및 유지 보수 계획: 구성된 Zabbix 환경에 대한 백업 및 정기적인 유지 보수 계획을 수립하여 시스템의 안정성과 신뢰성을 유지합니다.

10. 검토 및 최적화: 설정된 Zabbix 환경을 주기적으로 검토하고 성능을 최적화하여 모니터링 시스템의 효율성을 높입니다.

 

Zabbix 7.0을 리눅스 시스템(CentOS/RHEL 계열)에 설치하는 과정 설명 (예시)

# 1. Zabbix 릴리스 RPM 저장소 추가
sudo rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rhel/8/x86_64/zabbix-release-7.0-1.el8.noarch.rpm

# 2. Zabbix 서버, 에이전트 및 웹 인터페이스 패키지 설치
sudo dnf install zabbix-server-mysql zabbix-web-mysql zabbix-agent

# 3. MySQL 데이터베이스 서버 설치 (만약 MySQL이 이미 설치되어 있다면 이 단계는 건너뛰세요)
sudo dnf install mariadb-server

# 4. MySQL 데이터베이스 초기화 및 설정
sudo systemctl start mariadb
sudo mysql_secure_installation

# 5. Zabbix 데이터베이스 생성 및 권한 부여
sudo mysql -uroot -p
CREATE DATABASE zabbix character set utf8 collate utf8_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit;

# 6. Zabbix 스키마 및 초기 데이터 로드
sudo zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

# 7. Zabbix 서버 및 에이전트 설정 파일 수정
sudo nano /etc/zabbix/zabbix_server.conf
# DBPassword=your_password

sudo nano /etc/zabbix/zabbix_agentd.conf
# Server=127.0.0.1
# ServerActive=127.0.0.1
# Hostname=your_hostname

# 8. Zabbix 서버 및 에이전트 시작 및 부팅시 자동 실행 설정
sudo systemctl start zabbix-server zabbix-agent
sudo systemctl enable zabbix-server zabbix-agent

# 9. 방화벽 설정 (Zabbix 웹 인터페이스 포트인 80 또는 443을 허용하세요)
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --reload

# 10. Zabbix 웹 인터페이스 설정
# 웹 브라우저에서 http://your_server_ip_address/zabbix 로 접속하여 설치 마법사를 완료하세요.

# 11. 설치 완료 후 재부팅 (옵션)
sudo reboot

 

위 코드는 Zabbix 7.0을 CentOS/RHEL 8 기반 시스템에 설치하는 과정을 보여줍니다. 사용하시는 배포판에 따라 패키지 관리자(apt, yum, dnf 등)와 방화벽 설정 명령이 다를 수 있으니 적절히 수정하여 사용하시기 바랍니다. 또한, 중요한 설정은 알맞게 사용자 환경에 맞게 변경해야 합니다.

 

Python 활용한 시스템 Zabbix 연동 소스 (예시)

import requests
import json

# Zabbix API URL 및 인증 정보 설정
url = 'http://your_zabbix_server/api_jsonrpc.php'
username = 'your_username'
password = 'your_password'

# Zabbix API에 필요한 요청 데이터 설정
headers = {'Content-Type': 'application/json-rpc'}
data = {
    "jsonrpc": "2.0",
    "method": "user.login",
    "params": {
        "user": username,
        "password": password
    },
    "id": 1
}

# Zabbix API에 로그인 요청 보내기
response = requests.post(url, headers=headers, data=json.dumps(data))
result = response.json()

# 로그인 성공 시 토큰 획득
if 'result' in result:
    auth_token = result['result']

    # 호스트 그룹 목록 가져오기
    data = {
        "jsonrpc": "2.0",
        "method": "hostgroup.get",
        "params": {
            "output": "extend"
        },
        "auth": auth_token,
        "id": 1
    }

    # Zabbix API에 호스트 그룹 요청 보내기
    response = requests.post(url, headers=headers, data=json.dumps(data))
    result = response.json()

    # 결과 출력
    if 'result' in result:
        hostgroups = result['result']
        for group in hostgroups:
            print("Host Group ID:", group['groupid'], "| Host Group Name:", group['name'])
    else:
        print("Failed to retrieve host groups:", result['error'])
else:
    print("Login failed:", result['error'])

 

운영 시스템을 Zabbix 와 연동하는 경우 이점은 다음과 같습니다.

구분 설명
실시간 모니터링 Zabbix를 통해 서버, 네트워크 및 애플리케이션의 상태를 실시간으로 모니터링하여 문제를 빠르게 감지할 수 있습니다.
자동화된 경고 시스템 트리거와 액션을 사용하여 임계값을 정의하고 이에 따라 자동으로 경고를 생성하여 운영팀이 즉시 대응할 수 있도록 합니다.
확장성 Zabbix는 대규모 환경에서도 확장 가능하며, 분산된 아키텍처를 통해 수천 대의 장치를 모니터링할 수 있습니다.
사용자 정의 대시보드 사용자가 필요로 하는 정보를 시각적으로 표시할 수 있는 대시보드를 생성하여 모니터링 데이터를 쉽게 확인할 수 있습니다.
알림 설정 다양한 경로로 알림을 수신할 수 있으며, 이메일, SMS 등을 통해 장애나 성능 문제를 신속하게 대응할 수 있습니다.
API 지원 Zabbix는 API를 통해 다양한 자동화 및 통합 작업을 수행할 수 있으며, 외부 시스템과의 통합이 용이합니다.
활발한 커뮤니티 Zabbix는 활발한 커뮤니티를 가지고 있어서 사용자들 간의 지식 공유와 문제 해결이 용이합니다.

 

Zabbix 시스템 연동 이후 알림 설정 (예시)

# 1. Zabbix 웹 인터페이스에 로그인합니다.
# 2. "Configuration" 메뉴로 이동하고 "Actions"을 선택합니다.
# 3. "Create action"을 클릭하여 새로운 액션을 생성합니다.

# 4. 액션 설정 페이지에서 다음을 입력합니다:
    - Name: 액션의 이름을 입력합니다.
    - Event source: "Trigger"를 선택합니다.
    - Enabled: 액션을 활성화하려면 체크합니다.
    
# 5. "Conditions" 탭에서 다음을 설정합니다:
    - New condition 추가: 필요에 따라 여러 조건을 추가할 수 있습니다. 예를 들어, 모든 트리거에 대한 알림을 받기 위해 "Trigger severity"를 "Disaster"로 설정할 수 있습니다.
    
# 6. "Operations" 탭에서 다음을 설정합니다:
    - Default operation step duration: 알림이 보내지기까지의 기간을 설정합니다.
    - New operation 추가: 이메일을 통한 알림을 받기 위해 "Send message to users"를 선택하고, "Send to"에서 이메일 주소를 입력합니다.

# 7. "Recovery operations" 탭에서는 트리거가 해결될 때 수행할 작업을 설정합니다. (선택사항)

# 8. "Recovery message" 탭에서 트리거가 해결될 때 보낼 알림 메시지를 설정합니다. (선택사항)

# 9. "Tags" 탭에서는 액션에 태그를 할당할 수 있습니다. (선택사항)

# 10. 모든 설정을 완료한 후 "Add" 또는 "Save" 버튼을 클릭하여 액션을 저장합니다.

# 이제 Zabbix에서 설정한 조건에 해당하는 트리거가 발생하면 지정된 이메일 주소로 알림이 전송됩니다.

 

Zabbix 7.0 관련 내용은 다음 블로그에서 확인 부탁드려요 :)

https://hunnie.co.kr/49

 

[정리] Zabbix 7.0 신규 기능 및 향상된 점

Zabbix 7.0 버전(Pre-Release)이 출시되어, 7.0 버전의 새로운 기능과 향상된 점을 정리해보았다. https://www.zabbix.com/documentation/devel/en/manual/introduction/whatsnew700 5 What's new in Zabbix 7.0.0 We greatly appreciate your con

hunnie.co.kr

 

반응형

'IT' 카테고리의 다른 글

Zabbix와 Grafana 연동하기  (1) 2024.03.22
Grafana(데이터 시각화 도구)  (0) 2024.03.22
[네트워크] L2/L3/L4(L7) 스위치  (0) 2024.03.21
블록체인(BlockChain)  (0) 2024.03.21
이더리움(Ethereum)  (1) 2024.03.21