4 Proxy
원본 보기4 Proxy
개요
Zabbix proxy는 하나 이상의 모니터링 대상 장치에서 모니터링 데이터를 수집하고 Zabbix 서버에 정보를 전송할 수 있는 프로세스로, 본질적으로 서버를 대신하여 작동합니다. 모든 수집된 데이터는 로컬에서 버퍼링된 후 해당 프록시가 속한 Zabbix 서버로 전송됩니다.
프록시 배포는 선택사항이지만, 단일 Zabbix 서버의 부하를 분산하는 데 매우 유용할 수 있습니다. 프록시만 데이터를 수집하는 경우, 서버에서의 처리는 CPU 및 디스크 I/O 사용량이 줄어듭니다.
Zabbix proxy는 로컬 관리자가 없는 원격 위치, 지사 및 네트워크의 중앙 집중식 모니터링을 위한 이상적인 솔루션입니다.
Zabbix proxy는 별도의 데이터베이스가 필요합니다.
Zabbix proxy에서 지원되는 데이터베이스는 SQLite, MySQL 및 PostgreSQL입니다. Oracle 사용은 사용자 책임이며 예를 들어 저수준 발견 규칙의 반환 값과 같은 일부 제한사항이 있을 수 있습니다.
참고: 분산 환경에서 프록시 사용
프록시 실행
패키지로 설치한 경우
Zabbix 프록시는 데몬 프로세스로 실행됩니다. 프록시는 다음 명령어를 실행하여 시작할 수 있습니다:
systemctl start zabbix-proxy
이는 대부분의 GNU/Linux 시스템에서 작동합니다. 다른 시스템에서는 다음을 실행해야 할 수 있습니다:
/etc/init.d/zabbix-proxy start
마찬가지로 Zabbix 프록시를 중지/재시작/상태 확인하려면 다음 명령어를 사용하세요:
systemctl stop zabbix-proxy
systemctl restart zabbix-proxy
systemctl status zabbix-proxy
수동으로 시작하기
위의 방법이 작동하지 않으면 수동으로 시작해야 합니다. zabbix_proxy 바이너리의 경로를 찾아서 다음을 실행하세요:
zabbix_proxy
Zabbix proxy에서 다음과 같은 명령줄 매개변수를 사용할 수 있습니다:
-c --config <file> 설정 파일의 경로
-f --foreground Zabbix proxy를 포그라운드에서 실행
-R --runtime-control <option> 관리 기능 수행
-T --test-config 설정 파일 검증 후 종료
-h --help 이 도움말 표시
-V --version 버전 번호 표시
명령줄 매개변수와 함께 Zabbix proxy를 실행하는 예시:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf
zabbix_proxy --help
zabbix_proxy -V
런타임 제어
런타임 제어 옵션:
| 옵션 | 설명 | 대상 |
|---|---|---|
| config_cache_reload | 구성 캐시를 다시 로드합니다. 캐시가 현재 로드 중이면 무시됩니다. 능동형 Zabbix 프록시는 Zabbix 서버에 연결하여 구성 데이터를 요청합니다. 수동형 Zabbix 프록시는 서버가 다음번에 프록시에 연결할 때 Zabbix 서버로부터 구성 데이터를 요청합니다. |
|
| diaginfo[=<section>] | 프록시 로그 파일에서 진단 정보를 수집합니다. | historycache - 히스토리 캐시 통계 preprocessing - 전처리 관리자 통계 locks - 뮤텍스 목록 (BSD 시스템에서는 비어있음) |
| snmp_cache_reload | SNMP 캐시를 다시 로드합니다 — 모든 호스트의 SNMP 엔진 속성(엔진 시간, 엔진 부팅, 엔진 ID, 자격 증명)을 지웁니다. SNMP 문제 해결 시 전역 캐시 지우기를 강제로 수행하려면 사용하세요. | |
| housekeeper_execute | 하우스키핑 절차를 시작합니다. 하우스키핑 절차가 현재 진행 중이면 무시됩니다. | |
| log_level_increase[=<target>] | 로그 레벨을 증가시킵니다. 대상이 지정되지 않으면 모든 프로세스에 영향을 줍니다. BSD 시스템에서는 지원되지 않습니다. |
process type - 지정된 유형의 모든 프로세스 (예: poller) 모든 프록시 프로세스 유형을 참조하세요. process type,N - 프로세스 유형과 번호 (예: poller,3) pid - 프로세스 식별자 (1부터 65535까지). 더 큰 값의 경우 대상을 'process type,N'으로 지정하세요. |
| log_level_decrease[=<target>] | 로그 레벨을 감소시킵니다. 대상이 지정되지 않으면 모든 프로세스에 영향을 줍니다. BSD 시스템에서는 지원되지 않습니다. |
|
| prof_enable[=<target>] | 프로파일링을 활성화합니다. 대상이 지정되지 않으면 모든 프로세스에 영향을 줍니다. 활성화된 프로파일링은 함수명별로 모든 rwlocks/mutexes의 세부 정보를 제공합니다. |
process type - 지정된 유형의 모든 프로세스 (예: history syncer) 모든 프록시 프로세스 유형을 참조하세요. process type,N - 프로세스 유형과 번호 (예: history syncer,1) pid - 프로세스 식별자 (1부터 65535까지). 더 큰 값의 경우 대상을 'process type,N'으로 지정하세요. scope - rwlock, mutex, processing은 프로세스 유형과 번호와 함께 사용할 수 있습니다 (예: history syncer,1,processing) 또는 해당 유형의 모든 프로세스와 함께 사용할 수 있습니다 (예: history syncer,rwlock) |
| prof_disable[=<target>] | 프로파일링을 비활성화합니다. 대상이 지정되지 않으면 모든 프로세스에 영향을 줍니다. |
process type - 지정된 유형의 모든 프로세스 (예: history syncer) 모든 프록시 프로세스 유형을 참조하세요. process type,N - 프로세스 유형과 번호 (예: history syncer,1) pid - 프로세스 식별자 (1부터 65535까지). 더 큰 값의 경우 대상을 'process type,N'으로 지정하세요. |
런타임 제어를 사용하여 프록시 구성 캐시를 다시 로드하는 예제:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R config_cache_reload
런타임 제어를 사용하여 진단 정보를 수집하는 예제:
# 프록시 로그 파일에서 사용 가능한 모든 진단 정보를 수집합니다:
zabbix_proxy -R diaginfo
# 프록시 로그 파일에서 히스토리 캐시 통계를 수집합니다:
zabbix_proxy -R diaginfo=historycache
런타임 제어를 사용하여 SNMP 캐시를 다시 로드하는 예제:
zabbix_proxy -R snmp_cache_reload
SNMPv3 인터페이스가 Zabbix UI를 통해 업데이트되면, Zabbix는 대부분의 경우 해당 인터페이스의 새로운 SNMPv3 자격 증명을 자동으로 다시 로드합니다. -R snmp_cache_reload는 자격 증명 변경 후에도 폴링이 여전히 실패하는 경우(예: engineBoots/engineID 불일치 또는 비표준 RFC 장치로 인해)나 문제 해결을 위해 전역 SNMP 캐시 지우기를 강제로 수행해야 하는 경우에만 사용하세요.
런타임 제어를 사용하여 하우스키퍼 실행을 트리거하는 예제:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R housekeeper_execute
런타임 제어를 사용하여 로그 레벨을 변경하는 예제:
# 모든 프로세스의 로그 레벨을 증가시킵니다:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_increase
# 두 번째 poller 프로세스의 로그 레벨을 증가시킵니다:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_increase=poller,2
# PID 1234인 프로세스의 로그 레벨을 증가시킵니다:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_increase=1234
# 모든 http poller 프로세스의 로그 레벨을 감소시킵니다:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_decrease="http poller"
프로세스 사용자
Zabbix proxy는 non-root 사용자로 실행되도록 설계되었습니다. 시작할 때 지정된 non-root 사용자로 실행됩니다. 따라서 어떤 non-root 사용자로든 문제없이 proxy를 실행할 수 있습니다.
'root'로 실행하려고 하면, 시스템에 반드시 존재해야 하는 하드코딩된 'zabbix' 사용자로 전환됩니다. proxy 설정 파일에서 'AllowRoot' 매개변수를 적절히 수정한 경우에만 'root'로 proxy를 실행할 수 있습니다.
설정 파일
zabbix_proxy 설정에 대한 자세한 내용은 설정 파일 옵션을 참조하세요.
프록시 프로세스 유형 및 스레드
agent poller- 워커 스레드를 사용하여 수동 검사를 위한 비동기 폴러 프로세스availability manager- 호스트 가용성 업데이트를 위한 프로세스browser poller- 브라우저 아이템 검사를 위한 폴러configuration syncer- 구성 데이터의 메모리 내 캐시를 관리하는 프로세스data sender- 프록시 데이터 전송기discovery manager- 디바이스 검색을 위한 관리자 프로세스discovery worker- 검색 관리자로부터의 검색 작업을 처리하는 프로세스history syncer- 히스토리 DB 작성기housekeeper- 오래된 아이템 히스토리를 제거하는 프로세스http agent poller- 워커 스레드를 사용하여 HTTP 검사를 위한 비동기 폴러 프로세스http poller- 웹 모니터링 폴러icmp pinger- icmpping 검사를 위한 폴러internal poller- 내부 검사를 위한 폴러ipmi manager- IPMI 폴러 관리자ipmi poller- IPMI 검사를 위한 폴러java poller- Java 검사를 위한 폴러odbc poller- ODBC 검사를 위한 폴러poller- 수동 검사를 위한 일반 폴러preprocessing manager- 전처리 워커 스레드를 가진 전처리 작업 관리자preprocessing worker- 데이터 전처리를 위한 스레드self-monitoring- 내부 서버 통계 수집을 위한 프로세스snmp poller- 워커 스레드를 사용하여 SNMP 검사를 위한 비동기 폴러 프로세스 (walk[OID]및get[OID]아이템만)snmp trapper- SNMP trap을 위한 트래퍼task manager- 다른 구성요소에서 요청한 작업의 원격 실행을 위한 프로세스 (예: 문제 해결, 문제 승인, 아이템 값 즉시 확인, 원격 명령 기능)trapper- 능동 검사, trap, 프록시 통신을 위한 트래퍼unreachable poller- 연결할 수 없는 디바이스를 위한 폴러vmware collector- VMware 서비스에서 데이터 수집을 담당하는 VMware 데이터 수집기
프록시 로그 파일을 사용하여 이러한 프로세스 유형들을 관찰할 수 있습니다.
Zabbix 7.0.22부터 프록시 로그 파일은 파일 소유자만 읽기-쓰기 권한을 가지고 생성됩니다. 또한 소유자 그룹에서 파일을 읽을 수 있습니다. 다른 모든 권한은 거부됩니다.
다양한 유형의 Zabbix 프록시 프로세스는 zabbix[process,<type>,<mode>,<state>] 내부 아이템을 사용하여 모니터링할 수 있습니다.
지원되는 플랫폼
Zabbix proxy는 Zabbix server와 동일한 지원되는 플랫폼 목록에서 실행됩니다.
메모리 버퍼
메모리 버퍼는 새로운 데이터(아이템 값, 네트워크 디스커버리, 호스트 자동 등록)를 버퍼에 저장하고 데이터베이스에 접근하지 않고 Zabbix 서버에 업로드할 수 있게 해줍니다. 메모리 버퍼는 Zabbix 7.0의 프록시에 도입되었습니다.
Zabbix 7.0 이전 설치에서는 수집된 데이터가 Zabbix 서버로 업로드되기 전에 데이터베이스에 저장되었습니다. 이러한 설치의 경우 Zabbix 7.0으로 업그레이드한 후에도 이것이 기본 동작으로 유지됩니다.
최적화된 성능을 위해서는 프록시에서 메모리 버퍼 사용을 구성하는 것이 권장됩니다. 이는 ProxyBufferMode의 값을 "disk"(기존 설치의 하드코딩된 기본값)에서 "hybrid"(권장) 또는 "memory"로 수정하여 가능합니다. 또한 메모리 버퍼 크기(ProxyMemoryBufferSize 매개변수)를 설정해야 합니다.
hybrid 모드에서는 프록시가 중지되거나 버퍼가 가득 차거나 데이터가 너무 오래된 경우 전송되지 않은 데이터를 데이터베이스로 플러시하여 데이터 손실로부터 버퍼를 보호합니다. 모든 값이 데이터베이스로 플러시되면 프록시는 다시 메모리 버퍼를 사용합니다.
memory 모드에서는 메모리 버퍼가 사용되지만 데이터 손실에 대한 보호는 없습니다. 프록시가 중지되거나 메모리가 초과 채워지면 전송되지 않은 데이터가 삭제됩니다.
hybrid 모드(ProxyBufferMode=hybrid)는 Zabbix 7.0부터 모든 새 설치에 적용됩니다.
ProxyMemoryBufferSize 및 ProxyMemoryBufferAge와 같은 추가 매개변수는 각각 메모리 버퍼 크기와 버퍼에 있는 데이터의 최대 보존 기간을 정의합니다.
주의: 구성이 충돌하는 경우 프록시는 오류를 출력하고 시작에 실패합니다. 예를 들어:
- ProxyBufferMode가 "hybrid" 또는 "memory"로 설정되고 ProxyMemoryBufferSize가 "0"인 경우;
- ProxyBufferMode가 "hybrid" 또는 "memory"로 설정되고 ProxyLocalBuffer가 "0"이 아닌 경우.
Locale
프록시가 일부 텍스트 항목을 올바르게 해석할 수 있도록 UTF-8 로케일이 필요합니다. 대부분의 현대 Unix 계열 시스템은 기본적으로 UTF-8 로케일을 사용하지만, 일부 시스템에서는 이를 별도로 설정해야 할 수도 있습니다.
유지보수 기간 중 대기열 계산
Zabbix proxy는 유지보수 기간을 인식하지 못합니다. 자세한 내용은 유지보수 기간 중 대기열 계산을 참조하세요.