Using Discovery Rules on ZABBIX
자빅스의 디스커버리 룰 활용 가이드
Discovery Rules 기능이 필요한 여러가지 상황이 있지만 가장 간단하게 한 가지 예들 들어 보겠습니다.
아마존 웹 서비스(AWS) 를 사용하고 있습니다. 이 때, 오토스케일링 기능을 사용하면 수 많은 인스턴스들이 추가 되었다가 삭제되기도 합니다. 자빅스를 이용하여 모니터링 하고 싶지만 자빅스에 등록하고 삭제 하는 과정을 수작업으로 하기에는 무리가 있습니다.
이 상황에서 자빅스에 자동으로 인스턴스를 추가 하고 삭제할 수 있다면 얼마나 편할까요? 자빅스에서는 이런 상황을 해결해 주는 기능으로 Autoregistration(이하 오토 레지스트레이션) 과 Discovery Rules(이하 디스커버리 룰) 두 종류가 있습니다.
오토 레지스트레이션은 Active 모드일 때만 사용 가능하며, Passive 모드에서는 디스커버리 룰을 사용해야 합니다.
디스커버리 룰 생성
Configuration -> Discovery -> Create discovery rule
Name 은 디스커버리 룰의 이름입니다. 원하시는 이름을 적고 인스턴스를 추가할 IP Range 및 Update interval 등을 설정 해 줍니다.
각 항목에 대한 설명은 1 Configuring a network discovery rule [Zabbix Documentation 4.0] 페이지에서 자세하게 보실 수 있으며 간단하게 아래 표에서 정리하였습니다.
Name | 디스커버리 룰에 대한 고유 이름 |
Discovery by proxy | 프록시를 사용하는 경우 프록시 선택 |
IP Range | 검색할 IP 주소의 범위IP : 192.168.0.1 과 같이 단일 IP 이용 가능 IP 범 위 : 192.168.0.1-255 와 같이 – 를 이용하여 범위 지정 가능 IP 마스크 : 192.168.0.1/24 와 같이 MASK 지정 가능 - IPv4 는 /16 ~ /30 까지, IPv6 는 /112 ~ /128 까지 지원 자빅스 3.0 부터는 공백(space), 콤마(,) 또는 줄바꿈(multiple lines) 이용하여 여러 개 지정 가능 |
Update interval | 디스커버리 룰 실행 간격 자빅스 3.4 부터는 30, 1m, 2h, 1d 와 같은 형식으로도 지정 가능 자빅스 3.4 부터는 사용자 매크로도 지원 |
Checks | 검색을 위해 체크하는 방법 설정 SSH, LDAP, SMTP, FTP, HTTP, HTTPS, POP, NNTP, IMAP, TCP, 텔넷, Zabbix 에이전트, SNMPv1 에이전트, SNMPv2 에이전트, SNMPv3 에이전트, ICMP 핑 등을 이용하여 체크 가능 |
Device uniqueness criteria | 고유성 기준 설정 고유성 기준은 기본적으로 IP 주소를 가지고 판단하며, Checks 에서 Zabbix 에이전트나 SNMP를 검색 유형으로 선택하게 되면 그에 따른 고유성 기준을 설정할 수 있게 추가 표시 됩니다. 고유성 기준은 해당 기준을 확인하여 동일한 장치가 존재하는 경우 이미 검색된 것으로 간주되며 중복으로 새 호스트가 등록되지 않도록 하기 위한 기능으로 활용 됩니다. |
Enabled | 디스커버리 룰의 활성화, 비활성화 여부 선택 |
Checks -> New
Checks 에서 Check type, Port range, Key 를 선택하고 Add 를 해줍니다. Check type 은 Zabbix agent 를 선택하고 Port range 는 자빅스 기본값인 10050, Key 는 system.uname 으로 설정하였습니다.
위 작업이 완료 되면 Device uniqueness criteria(고유성 기준 설정)에 Zabbix agent “system.uname” 이 추가됩니다. 만약 추가되지 않았다면 디스커버리 룰을 Add 해 준 뒤 다시 편집화면에 들어오면 나타납니다. 예제에서는 기본값인 IP address 를 이용할 것이기 때문에 큰 의미는 없습니다.
추가 완료 후의 리스트 화면입니다.
디스커버리 룰 등록이 완료되면 Update interval 설정에 따라 디스커버리 정보가 업데이트 됩니다. 최초 디스커버리 룰 실행은 자빅스 서버의 설정에 따라 달라질 수 있습니다.
등록한 디스커버리 룰은 Monitoring -> Discovery 메뉴에서 확인 가능합니다.
디스커버리 액션 생성
디스커버리 룰이 등록되었다고 해서 인스턴스가 자빅스에 자동으로 등록이 되지는 않습니다. 이제 Action 기능을 디스커버리 룰과 연동하여 자동으로 인스턴스를 추가해주는 작업을 해 보도록 하겠습니다.
Configuration -> Actions -> Event source -> Discovery -> Create action
Event source 는 Actions 메뉴를 클릭 후 우측 상단에 보시면 있습니다.
이름 및 컨디션을 추가해 줍니다. 컨디션에 대한 설명은 아래와 같습니다.
Label B. 검색된 호스트의 업타임/다운타임이 3600초 (1시간) 이상이고, (Uptime/Downtime is greater than or equals 3600)
Label C. 검색된 호스트의 상태가 디스커버리 룰에서 Up 상태이며, (Discovery status equals Up)
Label D. 검색된 호스트는 Zabbix agent 설치가 되어 있으며, (Service type equals Zabbix agent)
Label E. 디스커버리 룰 네임이 Local network 일때. (Discovery rule equals Local Network)
위 4개의 모든 조건이 맞을 때 액션을 동작 시킨다. (Type of calculation : And B and C and D and E)
각 항목에 대한 설명을 간단하게 표로 만들어 봤습니다.
Name | 액션에 대한 고유 이름 |
Type of Calculation | 컨디션이 여러개일 경우 나타나며 컨디션에 대한 조건부로 And, Or, And/Or 등의 조건을 선택 |
Conditions | 액션을 실행할 호스트의 조건을 선택합니다. 조건 타입으로는 Uptime/Downtime, Discovery status, Service type, Proxy 등을 선택할 수 있으며, 선택한 조건 타입에 매칭되는 조건값으로 크다, 작다, 같다, 다르다 등을 지정할 수 있습니다. |
Enabled | 액션의 활성화, 비활성화 여부 선택 |
액션에 대한 조건 설정이 완료되었습니다. 이제 실제 실행할 액션을 지정합니다. 예제에서는 Templates/Operating systems 그룹에 호스트를 추가하고 Template OS Linux 템플릿을 추가 하도록 설정 하였습니다.
각 항목에 대한 설명을 간단하게 표로 만들어 봤습니다.
Default subject | 디스커버리 알럿 발송에 사용할 제목입니다. |
Default message | 디스커버리 알럿 발송에 사용할 본문입니다. |
Operations | 실행될 액션입니다. Send message(알럿 발송), Remote command(원격 명령 실행), Add host(호스트 추가), Remove host(호스트 삭제), Add to host group(호스트 그룹 추가), Link to template(템플릿 추가) 등 여러가지를 할 수 있습니다. |
추가가 완료되면 아래 그림과 같이 리스트에서 간략하게 정보들을 확인할 수 있습니다.
위 방법을 활용하면 아래 이미지와 같이 특정 조건일 경우 호스트를 삭제하고 설정된 메세지로 알람을 보낼 수 있는 액션을 추가할 수도 있습니다.