인사이트

인사이트리포트

디지털프렌스포메이션 최신 정보 및 트렌드를 제공합니다.

SW 테크놀로지 오픈소스 SW

Zabbix 이벤트 처리를 Ansible로 자동화

2026.03.04김유성 프로
다운로드

들어가며

Zabbix는 서버, 네트워크, 애플리케이션 등 IT 인프라의 성능과 상태를 실시간으로 모니터링하고 관리하는 오픈 소스 기반의 IT 모니터링 솔루션이다.
사용자는 Zabbix를 통해 장애 상황을 신속하게 감지하고, 데이터를 수집하여 시각적으로 확인할 수 있으며, 장애 발생 시 알림을 받아 문제를 해결할 수 있다.
Zabbix와 EDA(Event-Drivern Ansible)을 함께 사용하면 Zabbix에서 발생한 이벤트를 Ansible이 처리하는 방식으로 IT 프로세스를 자동화할 수 있다.
이 글에서는 Zabbix에서 EDA로 이벤트를 전송하고 이 이벤트를 Ansible로 자동화 하는 방법을 자세히 살펴본다.

 

 

Event-Driven Ansible(EDA) 이란?

Event-Driven Ansible(EDA) 이란, Red Hat Ansible Automation Platform의 구성 요소로, 특정 조건의 이벤트에 해당하는 대응을 정의할 수 있다.
이를 도입하여 시스템이 IT 환경 내의 다양한 이벤트에 동적으로 대응할 수 있다.

 

 

자동화 시나리오

  1. 자동화된 문제 해결

  • Zabbix : 웹 서버 다운이나 서비스 장애 등의 문제를 감지하고 EDA에 이벤트를 전송
  • EDA : 사전 정의된 Ansible 플레이북을 실행하여 서비스를 다시 시작하거나, 애플리케이션을 다시 배포

  2. 사전 예방적 시스템 유지 관리

  • Zabbix : 성능 저하 또는 자원 고갈이 임계값에 접근하는 것을 감지
  • EDA : 심각한 오류가 발생하기 전에 임시 파일 지우기, 디스크 공간 확장, 리소스 조정과 같은 사전 예방적 유지 관리 작업을 수행하는 Ansible 플레이북을 수행

  3. 보안 사고 대응

  • Zabbix : 시스템에서 의심스러운 활동이나 보안 취약점을 감지
  • EDA : 감지된 이벤트를 기반으로 보안 패치를 자동으로 적용하고, 손상된 시스템을 격리하거나, 다른 보안 시정 조치를 수행하는 Ansible 플레이북을 수행

 

 

이벤트 전달 과정

Zabbix

  1. Zabbix에서 이벤트가 생성된다.
  2. Zabbix 서버는 이벤트가 Action의 조건을 만족하는지 확인한다. 조건을 만족하면 Action에 정의된 Operations을 수행한다.
  3. Operations는 EDA Media type으로 이벤트를 보내도록 설정되어 있다. User media에 지정된 주소와 포트가 목적지로 사용된다.
  4. Media type은 이벤트를 JSON으로 변경하여 EDA로 전송한다.

Ansible

  1. Zabbix에서 전송된 이벤트가 지정된 주소와 포트에 도착한다. 웹훅 플러그인은 이 포트를 Listen한다.
  2. 이벤트를 수신한 후, ansible-rulebook은 수신된 이벤트가 Conditions을 만족하는 Rule이 있는지 확인한다.
  3. Conditions을 만족하는 Rule이 있는 경우, 지정된 Action을 수행한다.

Zabbix 웹훅 설정

Zabbix 이벤트 알림 방법(Media type)은  이메일, SMS, 쉘 스크립트, 웹훅이 있다.

웹훅은 텔레그램, 라인과 같은 메신저, Jira, GitHub, EDA 등 외부 서비스와 연동하는데 사용된다.

EDA 웹훅을 사용하려면 EDA 주소를 가지고 있는 User를 생성해야 한다.

그런 다음 조건을 만족하는 이벤트가 발생할 때마다 지정된 User에게 알림을 보낸다.

EDA Media type 생성

  1. Alerts 메뉴에서Media types 선택한다.
  2. Event-Driven Ansible가 존재하지 않으면 화면 우상단의Import 버튼을 클릭하여media_event_driven_ansible.yaml 파일을 지정한다.
  3. Event-Driven Ansible가 존재하고, Disabled 상태이면 Enabled 상태로 변경한다.

 

 

알림을 받을 사용자 생성

  1. Users메뉴에서 Users 선택한다.
  2. 화면 우상단의Create user클릭하여 사용자 생성한다.

주의 : 호스트의 알림을 받기 위해서는 해당 호스트의 읽기 접근 권한이 있어야 한다.

3.Media탭에 가서 Media 박스 안에 Add 버튼 클릭한다.

4. Media를 설정한다.

  • Type 을Event-Driven Ansible로 설정한다.
  • Send to필드에 IP 주소와 포트를 설정한다.
  • Add 버튼을 눌러서 Media를 저장한다.

    5. User 설정창에서Add 를 클릭하여 사용자 저장한다.

 주의: 룰북마다 별도의 포트가 필요하므로, 룰북마다 User를 생성해야 한다.

    6. Action에 Event-Driven Ansible User로 이벤트를 전달하도록 설정한다.

 

7. 설정 완료 되었다. 조건을 만족하는 이벤트가 발생 하면 EDA로 전송된다.

 

 

EDA 웹훅 설정

  1. ansible-rulebook 을 설치한다. 아래 예는 RHEL9에서 pip를 이용하여 설치하였다

2. EDA에는 ansible.eda 표준 컬렉션의 웹훅 플러그인이 사용된다. 이 컬렉션이 없는 경우 다음 명령을 실행하여 설치할 수 있다.

3. 디버그 룰북을 생성한다.

ansible.eda.webhook를 이벤트 소스로 지정한다. 수신 주소와 포트를 지정한다.

rules 섹션에서 필요한 action을 설정한다.

 

4. 다음 명령으로 룰북을 실행할 수 있다.

위 룰북의 “debug:” action은 이벤트를 JSON 형태로 출력한다.

5. 이벤트의 세부 항목을 이용하여 원하는 조건의 이벤트를 처리하는 룰북을 만들 수 있다. 아래 룰북은 이벤트의 호스트가 “Web servers”, “Berlin” 호스트그룹에 포함되고, 이벤트 태그의 컴포넌트가 “configuration”이면 nginx를 배포하는 플레이북을 수행한다.

 

 

 

마치며

Zabbix와 EDA(Event-Drivern Ansible)을 함께 사용하여 Zabbix에서 발생한 이벤트를 Ansible이 처리하는 방식으로 IT 프로세스를 자동화하는 방법을 살펴 보았다.

이벤트 처리를 자동화함으로 휴먼 에러를 줄일 수 있고, 관리자들의 삶은 편해지며 프로세스를 개선하는 일에 집중할 수 있다.

# References

- https://blog.zabbix.com/forward-zabbix-events-to-event-driven-ansible-and-automate-your-workflows/25893/
- https://www.zabbix.com/integrations/ansible#event_driven_ansible
- https://ansible.readthedocs.io/projects/rulebook/en/latest/installation.html#installing-with-pip
- https://www.zabbix.com/documentation/guidelines/en/webhooks
- https://blog.zabbix.com/how-to-write-a-webhook-for-zabbix/25298/

김유성 프로

김유성 프로

오픈소스사업부 오픈소스기술팀

Kubernetes , Istio 기술 지원을 하였으며, 현재는 Zabbix 기술 지원을 하고 있습니다.

연관 아티클

  • Search AI 플랫폼의 완성: Elasticsearch 9가 실현하는 고성능 벡터 엔진과 통합 거버넌스
    SW 테크놀로지2026.03.26

    Search AI 플랫폼의 완성: Elasticsearch 9가 실현하는 고성능 벡터 엔진과 통합 거버넌스

    자세히 보기
  • Redis Persistence 설정 끄고 사용하기
    2026.03.18

    Redis Persistence 설정 끄고 사용하기

    자세히 보기
  • 쿠버네티스를 꼭 사용해야 할까?
    2026.02.20

    쿠버네티스를 꼭 사용해야 할까?

    자세히 보기