네트워크 디스커버리
개요
Zabbix는 효과적이고 매우 유연한 자동 네트워크 디스커버리 기능을 제공합니다.
네트워크 디스커버리를 올바르게 설정하면 다음과 같은 작업을 수행할 수 있습니다.
- Zabbix 배포 속도 향상
- 관리 간소화
- 과도한 관리 작업 없이 빠르게 변화하는 환경에서 Zabbix 사용
Zabbix 네트워크 디스커버리는 다음 정보를 기반으로 합니다.
- IP 범위
- 외부 서비스의 가용성(FTP, SSH, WEB, POP3, IMAP, TCP 등)
- Zabbix 에이전트에서 수신한 정보(암호화되지 않은 모드만 지원)
- SNMP 에이전트에서 수신한 정보
다음 기능은 제공하지 않습니다.
- 네트워크 토폴로지 디스커버리
네트워크 디스커버리는 기본적으로 디스커버리와 작업의 두 단계로 구성됩니다.
디스커버리
Zabbix는 네트워크 디스커버리 규칙에 정의된 IP 범위를 주기적으로 스캔합니다. 검사 주기는 각 규칙별로 설정할 수 있습니다.
각 규칙에는 해당 IP 범위에서 수행할 서비스 검사 집합이 정의되어 있습니다.
디스커버리 규칙은 디스커버리 관리자가 처리합니다. 디스커버리 관리자는 각 규칙에 대해 작업(네트워크 검사) 목록이 포함된 잡을 생성합니다. 네트워크 검사는 사용 가능한 디스커버리 워커가 병렬로 수행합니다(워커 수는 프런트엔드에서 각 규칙별로 설정할 수 있음). 단, SNMPv3 검사는 단일 워커가 처리합니다. 일부 장치는 동일한 포트에서 병렬 연결을 허용하지 않으므로 IP와 포트가 같은 검사만 순차적으로 예약됩니다.
네트워크 검사 대기열 크기는 2000000개 또는 약 4 GB의 메모리로 제한됩니다.
대기열이 가득 차면 디스커버리 규칙을 건너뛰고 로그에 경고 메시지가 출력됩니다.
zabbix[discovery_queue] 내부 아이템을 사용하여 대기열의 디스커버리 검사 수를 모니터링할 수 있습니다.
디스커버리 검사는 다른 검사와 독립적으로 처리됩니다. 검사 중 서비스가 발견되지 않거나 검사가 실패하더라도 다른 검사는 계속 처리됩니다.
디스커버리 규칙이 실행 중에 변경되면 현재 디스커버리 실행이 중단됩니다.
네트워크 디스커버리 모듈이 수행하는 모든 서비스 및 호스트(IP) 검사는 디스커버리 이벤트를 생성합니다.
| 이벤트 | 서비스 검사 결과 |
|---|---|
| 서비스 발견됨 | 서비스가 '중단' 상태였다가 '가동' 상태가 되었거나 처음 발견되었습니다. |
| 서비스 가동 | 서비스가 이미 '가동' 상태였으며 현재도 '가동' 상태입니다. |
| 서비스 손실됨 | 서비스가 '가동' 상태였다가 '중단' 상태가 되었습니다. |
| 서비스 중단 | 서비스가 이미 '중단' 상태였으며 현재도 '중단' 상태입니다. |
| 호스트 발견됨 | 호스트의 모든 서비스가 '중단' 상태였다가 하나 이상의 서비스가 '가동' 상태가 되었거나, 등록되지 않은 호스트에 속한 서비스가 발견되었습니다. |
| 호스트 가동 | 호스트의 서비스 중 하나 이상이 이미 '가동' 상태였으며 현재도 하나 이상의 서비스가 '가동' 상태입니다. |
| 호스트 손실됨 | 하나 이상의 서비스가 '가동' 상태였다가 호스트의 모든 서비스가 '중단' 상태가 되었습니다. |
| 호스트 중단 | 호스트의 모든 서비스가 이미 '중단' 상태였으며 현재도 '중단' 상태입니다. |
작업
디스커버리 이벤트를 기반으로 다음과 같은 관련 작업을 수행할 수 있습니다.
- 알림 전송
- 호스트 추가/제거
- 호스트 활성화/비활성화
- 그룹에 호스트 추가
- 그룹에서 호스트 제거
- 호스트에 태그 추가
- 호스트에서 태그 제거
- 호스트에 템플릿 연결/호스트에서 템플릿 연결 해제
- 원격 스크립트 실행
이러한 작업은 장치 유형, IP, 상태, 가동 시간/중단 시간 등을 기준으로 설정할 수 있습니다. 네트워크 디스커버리 기반 이벤트의 작업 설정에 대한 자세한 내용은 작업 동작 및 조건 페이지를 참조하십시오.
네트워크 디스커버리 작업은 이벤트 기반이므로 발견된 호스트가 온라인일 때와 오프라인일 때 모두 트리거됩니다. 작업 조건 디스커버리 상태: 가동을 추가하여 호스트 추가와 같은 작업이 서비스 손실됨/서비스 중단 이벤트에서 트리거되지 않도록 하는 것이 좋습니다. 그렇지 않으면 발견된 호스트를 수동으로 제거해도 서비스 손실됨/서비스 중단 이벤트가 계속 생성되어 다음 디스커버리 주기에 호스트가 다시 생성됩니다.
연결 가능한 템플릿 중 하나에 있는 고유 엔터티(예: 아이템 키)가 호스트 또는 다른 연결 가능한 템플릿에 이미 있는 고유 엔터티(예: 아이템 키)와 같으면 발견된 호스트에 대한 템플릿 연결이 모두 실패합니다.
호스트 생성
호스트 추가 동작을 선택하면 호스트가 추가됩니다. 호스트 추가 동작이 없더라도 호스트에 대한 작업을 수행하는 동작을 선택하면 호스트가 추가됩니다. 해당 동작은 다음과 같습니다.
- 호스트 활성화
- 호스트 비활성화
- 호스트 그룹에 호스트 추가
- 호스트에 템플릿 연결
생성된 호스트는 발견된 호스트 그룹에 추가됩니다(기본값이며 관리 > 일반 > 기타에서 설정 가능). 호스트를 다른 그룹에 추가하려면 호스트가 반드시 호스트 그룹에 속해야 하므로 호스트 그룹에서 제거 동작("발견된 호스트" 지정)과 호스트 그룹에 추가 동작(다른 호스트 그룹 지정)을 함께 추가하십시오.
발견된 장치의 IP 주소와 디스커버리 소스(Zabbix 서버, Zabbix 프록시 또는 프록시 그룹), 인터페이스 유형이 시스템에서 호스트를 찾는 기준으로 사용됩니다. IP 주소, 인터페이스 유형 및 디스커버리 소스가 같은 호스트가 이미 있으면 해당 호스트를 대상으로 동작을 수행합니다. 디스커버리 소스가 다르면 발견된 엔터티는 다른 호스트로 처리되며 새 호스트가 생성될 수 있습니다.
발견된 호스트의 IP 주소가 변경되거나 인터페이스가 삭제되면 다음 디스커버리 시 새 호스트가 생성됩니다.
호스트 이름 지정
호스트를 추가할 때 호스트 이름은 역방향 DNS 조회 결과로 지정되며, 역방향 조회가 실패하면 IP 주소로 지정됩니다. 조회는 디스커버리를 수행하는 Zabbix 서버 또는 Zabbix 프록시에서 이루어집니다. 프록시에서 조회가 실패해도 서버에서 다시 시도하지 않습니다. 해당 이름의 호스트가 이미 있으면 다음 호스트 이름에 _2가 추가되고, 이후에는 _3과 같은 방식으로 추가됩니다.
DNS/IP 조회를 재정의하고 대신 아이템 값을 호스트 이름으로 사용할 수도 있습니다. 예:
- Zabbix 에이전트 아이템을 디스커버리에 사용하여 Zabbix 에이전트가 실행 중인 여러 서버를 발견하고, 해당 아이템이 반환하는 문자열 값을 기반으로 올바른 이름을 자동으로 할당할 수 있습니다.
- SNMP 에이전트 아이템을 디스커버리에 사용하여 여러 SNMP 네트워크 장치를 발견하고, 해당 아이템이 반환하는 문자열 값을 기반으로 올바른 이름을 자동으로 할당할 수 있습니다.
아이템 값을 사용하여 호스트 이름을 설정한 경우 이후 디스커버리 검사에서 이름이 업데이트되지 않습니다. 아이템 값을 사용하여 호스트 이름을 설정할 수 없으면 기본값(DNS 이름)이 사용됩니다.
발견된 IP 주소를 가진 호스트가 이미 있고 디스커버리 소스(Zabbix 서버, 프록시 또는 프록시 그룹)가 변경되지 않았다면 새 호스트가 생성되지 않습니다. 디스커버리 소스가 다르면 발견된 엔터티는 별개의 엔터티로 처리되며 새 호스트가 생성될 수 있습니다. 그러나 디스커버리 작업에 동작(템플릿 연결, 호스트 그룹에 추가 등)이 포함되어 있으면 IP 주소, 인터페이스 유형 및 디스커버리 소스가 일치하는 기존 호스트에서 해당 동작이 수행됩니다.
호스트 제거
네트워크 디스커버리 규칙으로 발견된 호스트는 발견된 엔터티가 더 이상 규칙의 IP 범위에 포함되지 않으면 모니터링 > 디스커버리에서 자동으로 제거됩니다. 호스트는 즉시 제거됩니다.
호스트 추가 시 인터페이스 생성
네트워크 디스커버리 결과로 호스트가 추가되면 다음 규칙에 따라 인터페이스가 생성됩니다.
- 감지된 서비스에 따라 생성됩니다. 예를 들어 SNMP 검사가 성공하면 SNMP 인터페이스가 생성됩니다.
- 호스트가 Zabbix 에이전트 및 SNMP 요청에 모두 응답하면 두 유형의 인터페이스가 모두 생성됩니다.
- 고유성 기준이 Zabbix 에이전트 또는 SNMP가 반환한 데이터인 경우 호스트에서 처음 발견된 인터페이스가 기본 인터페이스로 생성됩니다. 기본 인터페이스가 중단되지 않는 한 다른 IP 주소는 무시됩니다. 기본 인터페이스가 중단된 경우 다른 IP 주소 중 가장 작은 주소가 기본 인터페이스를 대체합니다. 작업 조건(예: 호스트 IP)은 인터페이스 추가에 영향을 주지 않습니다. 이 기능은 모든 인터페이스가 동일한 디스커버리 규칙에 의해 발견된 경우에 작동한다는 점에 유의하십시오. 다른 디스커버리 규칙이 동일한 호스트의 다른 인터페이스를 발견하면 호스트가 추가로 생성됩니다.
- 호스트가 에이전트 검사에만 응답하면 에이전트 인터페이스만 있는 호스트로 생성됩니다. 나중에 SNMP에도 응답하기 시작하면 SNMP 인터페이스가 추가됩니다.
- 처음에 "IP" 고유성 기준으로 발견되어 별도의 호스트 3개가 생성된 후 호스트 A, B, C의 고유성 기준 결과가 같도록 디스커버리 규칙이 수정되면 B와 C는 첫 번째 호스트인 A의 추가 인터페이스로 생성됩니다. 개별 호스트 B와 C는 그대로 유지됩니다. 모니터링 > 디스커버리에서 추가된 인터페이스는 "발견된 장치" 열에 검은색 글꼴로 들여쓰기되어 표시되지만, "모니터링되는 호스트" 열에는 처음 생성된 호스트인 A만 표시됩니다. 추가 인터페이스로 간주되는 IP의 "가동 시간/중단 시간"은 측정되지 않습니다.
프록시 설정 변경
서로 다른 프록시에서 발견된 호스트가 항상 서로 다른 호스트로 처리되는 것은 아닙니다. 디스커버리 및 고유성 검사는 프록시 그룹 구조에 따라 달라집니다. 프록시가 디스커버리 규칙을 실행하여 호스트를 생성하면 해당 호스트는 프록시 자체에 할당되지 않고 프록시의 상위 프록시 그룹에 추가됩니다. Zabbix는 디스커버리 중 IP 고유성을 평가할 때 상위 프록시 그룹이 모니터링하는 호스트를 검사합니다. 해당 그룹 내 개별 프록시(디스커버리를 실행한 프록시 포함)가 모니터링하는 호스트는 고유성 검사에서 무시되므로 여러 프록시가 서로 겹치는 서브넷을 모니터링하면 중복 호스트가 생성될 수 있습니다.
이 동작을 통해 서로 다른 서브넷에서 사용하는 서로 겹치는 IP 범위에 대해 디스커버리를 수행할 수 있지만, 이미 모니터링 중인 서브넷에 할당된 프록시를 변경하는 작업은 더 복잡합니다. 중복을 방지하려면 발견된 호스트와 상위 프록시 그룹의 구성원에 프록시 변경 사항을 일관되게 적용해야 하기 때문입니다.
예를 들어 디스커버리 규칙에서 프록시를 교체하는 단계는 다음과 같습니다.
- 디스커버리 규칙 비활성화
- 프록시 구성 동기화
- 디스커버리 규칙의 프록시 교체
- 이 규칙으로 발견된 모든 호스트의 프록시 교체(중복을 방지하려면 상위 프록시 그룹의 호스트와 해당 그룹 내 개별 프록시가 모니터링하는 모든 호스트가 업데이트되었는지 확인)
- 디스커버리 규칙 활성화