문서
원본 보기4 Proxy
개요
Zabbix 프록시는 하나 이상의 모니터링 대상 장치로부터 모니터링 데이터를 수집하고 해당 정보를 Zabbix 서버로 전송하는 프로세스로, 본질적으로 서버를 대신해서 작동합니다. 수집된 모든 데이터는 로컬에서 버퍼링된 후 해당 프록시가 속한 Zabbix 서버로 전송됩니다.
프록시 배포는 선택사항이지만, 단일 Zabbix 서버의 부하를 분산시키는 데 매우 유용할 수 있습니다. 프록시만 데이터를 수집한다면, 서버에서의 처리는 CPU와 디스크 I/O 부담이 줄어듭니다.
Zabbix 프록시는 원격 지역, 지점 및 현지 관리자가 없는 네트워크의 중앙집중식 모니터링을 위한 이상적인 솔루션입니다.
Zabbix 프록시는 별도의 데이터베이스가 필요합니다.
Zabbix 프록시에서 지원되는 데이터베이스는 SQLite, MySQL, PostgreSQL입니다. Oracle 사용은 사용자 책임하에 진행되며, 예를 들어 저수준 디스커버리 규칙의 반환 값에서와 같이 일부 제한사항이 있을 수 있습니다.
참고: 분산 환경에서 프록시 사용하기
프록시 실행
패키지로 설치한 경우
Zabbix proxy는 데몬 프로세스로 실행됩니다. 다음 명령으로 proxy를 시작할 수 있습니다:
systemctl start zabbix-proxy
이는 대부분의 GNU/Linux 시스템에서 작동합니다. 다른 시스템에서는 다음 명령을 실행해야 할 수 있습니다:
/etc/init.d/zabbix-proxy start
마찬가지로, Zabbix proxy의 중지/재시작/상태 확인을 위해서는 다음 명령들을 사용하세요:
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 |
구성 캐시를 다시 로드합니다. 현재 캐시가 로드 중인 경우 무시됩니다. Active Zabbix 프록시는 Zabbix 서버에 연결하여 구성 데이터를 요청합니다. Passive 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 자격 증명을 자동으로 다시 로드합니다. 자격 증명 변경 후에도 폴링이 여전히 실패하는 경우(예: engineBoots/engineID 불일치 또는 비RFC 장치로 인해) 또는 문제 해결을 위해 전역 SNMP 캐시 지우기를 강제해야 하는 경우에만 -R snmp_cache_reload를 사용하세요.
하우스키퍼 실행을 트리거하기 위한 런타임 제어 사용 예:
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 트랩을 위한 트래퍼;task manager- 다른 구성 요소에서 요청한 작업의 원격 실행을 위한 프로세스 (예: 문제 닫기, 문제 승인, 아이템 값 즉시 확인, 원격 명령 기능);trapper- 능동 검사, 트랩 및 프록시 통신을 위한 트래퍼;unreachable poller- 접근 불가능한 장치를 위한 폴러;vmware collector- VMware 서비스에서 데이터를 수집하는 VMware 데이터 수집기.
프록시 로그 파일은 이러한 프로세스 유형을 관찰하는 데 사용할 수 있습니다.
Zabbix 7.0.22부터 프록시 로그 파일은 파일 소유자만 읽기-쓰기 권한으로 생성됩니다. 또한 파일은 소유자 그룹에서 읽을 수 있습니다. 다른 모든 권한은 거부됩니다.
다양한 유형의 Zabbix 프록시 프로세스는 zabbix[process,<type>,<mode>,<state>] 내부 아이템을 사용하여 모니터링할 수 있습니다.
지원 플랫폼
Zabbix 프록시는 Zabbix 서버와 동일한 지원 플랫폼 목록에서 실행됩니다.
메모리 버퍼
메모리 버퍼는 새로운 데이터(아이템 값, 네트워크 디스커버리, 호스트 자동 등록)를 버퍼에 저장하고 데이터베이스에 접근하지 않고 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이 아닌 경우.
로케일
프록시가 일부 텍스트 항목을 올바르게 해석할 수 있도록 UTF-8 로케일이 필요하다는 점에 유의하세요. 대부분의 최신 Unix 계열 시스템은 기본적으로 UTF-8 로케일을 사용하지만, 일부 시스템에서는 특별히 설정해야 할 수도 있습니다.
유지보수 중 큐 계산
Zabbix 프록시는 유지보수 기간을 인식하지 못합니다. 자세한 내용은 유지보수 중 큐 계산을 참조하세요.