프록시
개요
Zabbix 프록시는 하나 이상의 모니터링 대상 장치에서 모니터링 데이터를 수집하고 Zabbix 서버로 전송할 수 있는 프로세스로, 기본적으로 서버를 대신하여 작업합니다. 수집한 모든 데이터는 로컬에 버퍼링된 후 해당 프록시가 속한 Zabbix 서버로 전송됩니다.
프록시 배포는 선택 사항이지만, 단일 Zabbix 서버의 부하를 분산하는 데 매우 유용할 수 있습니다. 프록시만 데이터를 수집하면 서버의 처리에 필요한 CPU와 디스크 I/O 사용량이 줄어듭니다.
Zabbix 프록시는 로컬 관리자가 없는 원격 위치, 지사 및 네트워크를 중앙에서 모니터링하는 데 이상적인 솔루션입니다.
Zabbix 프록시에는 별도의 데이터베이스가 필요합니다.
Zabbix 프록시가 지원하는 데이터베이스는 SQLite, MySQL 및 PostgreSQL입니다.
참고: 분산 환경에서 프록시 사용
프록시 실행
패키지로 설치한 경우
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 프록시에서 다음 명령줄 매개변수를 사용할 수 있습니다:
| 매개변수 | 설명 |
|---|---|
-c --config <config-file> |
설정 파일의 경로입니다. |
-f --foreground |
Zabbix 프록시를 포그라운드에서 실행합니다. |
-R --runtime-control <option> |
관리 기능을 수행합니다. |
-T --test-config |
설정 파일의 유효성을 검사하고 종료합니다. |
-h --help |
도움말 정보를 출력하고 종료합니다. |
-V --version |
버전 번호를 표시합니다. |
명령줄 매개변수로 Zabbix 프록시를 실행하는 예:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf
zabbix_proxy --help
zabbix_proxy -V
런타임 제어
런타임 제어 옵션:
| 옵션 | 설명 | 대상 |
|---|---|---|
config_cache_reload |
설정 캐시를 다시 로드합니다. 현재 캐시를 로드 중이면 무시됩니다. 액티브 Zabbix 프록시는 Zabbix 서버에 연결하여 설정 데이터를 요청합니다. 패시브 Zabbix 프록시는 다음에 서버가 프록시에 연결할 때 Zabbix 서버에 설정 데이터를 요청합니다. |
|
history_cache_clear=target |
ID로 지정한 아이템의 히스토리 캐시를 지웁니다. 첫 번째와 마지막 값을 제외한 아이템의 모든 값에 영향을 줍니다. |
target - 아이템의 ID입니다. |
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>] |
프로파일링을 활성화합니다. 대상이 지정되지 않으면 모든 프로세스에 영향을 줍니다. 프로파일링을 활성화하면 모든 읽기/쓰기 잠금과 뮤텍스의 상세 정보를 함수 이름별로 제공합니다. |
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 -R log_level_increase='data sender'
Cannot redirect signal: "data sender" process does not exist
런타임 제어로 프록시 설정 캐시를 다시 로드하는 예:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R config_cache_reload
런타임 제어로 아이템의 히스토리 캐시를 지우는 예:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R history_cache_clear=42243
런타임 제어로 진단 정보를 수집하는 예:
# Gather all available diagnostic information in the proxy log file:
zabbix_proxy -R diaginfo
# Gather history cache statistics in the proxy log file:
zabbix_proxy -R diaginfo=historycache
런타임 제어로 SNMP 캐시를 다시 로드하는 예:
zabbix_proxy -R snmp_cache_reload
Zabbix UI에서 SNMPv3 인터페이스를 업데이트하면 대부분의 경우 Zabbix가 해당 인터페이스의 새 SNMPv3 인증 정보를 자동으로 다시 로드합니다. -R snmp_cache_reload는 인증 정보를 변경한 후에도 폴링이 실패하는 경우(예: engineBoots/engineID 불일치 또는 RFC를 준수하지 않는 장치로 인한 경우)나 문제 해결을 위해 전체 SNMP 캐시를 강제로 지워야 하는 경우에만 사용하세요.
런타임 제어로 정리 프로세스 실행을 트리거하는 예:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R housekeeper_execute
런타임 제어로 로그 수준을 변경하는 예:
# Increase log level of all processes:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_increase
# Increase log level of second poller process:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_increase=poller,2
# Increase log level of process with PID 1234:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_increase=1234
# Decrease log level of all http poller processes:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_decrease="http poller"
프로세스 실행 사용자
Zabbix 프록시는 root가 아닌 사용자로 실행되도록 설계되었습니다. root가 아닌 사용자가 시작하면 해당 사용자로 실행됩니다. 따라서 root가 아닌 어떤 사용자로든 프록시를 문제없이 실행할 수 있습니다.
'root'로 실행하려고 하면 하드코딩된 'zabbix' 사용자로 전환되므로, 이 사용자가 시스템에 존재해야 합니다.
프록시를 'root'로 실행하려면 프록시 설정 파일의 AllowRoot 매개변수를 그에 맞게 수정해야 합니다.
설정 파일
설정 파일의 기본 경로는 운영 체제와 Zabbix 설치 방법에 따라 다릅니다:
- 소스에서 설치한 경우:
/usr/local/etc/zabbix_proxy.conf또는 컴파일 시점의 변수--sysconfdir또는--prefix로 설정한 경로. - 패키지로 설치한 경우:
/etc/zabbix/zabbix_proxy.conf.
다음 설정 파일 옵션에서 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.4.6부터 프록시 로그 파일은 파일 소유자에게만 읽기 및 쓰기 권한을 부여하여 생성됩니다. 소유 그룹에는 읽기 권한도 부여됩니다. 그 외의 모든 권한은 거부됩니다.
다음 zabbix[process,<type>,<mode>,<state>] 내부 아이템을 사용하여 다양한 유형의 Zabbix 프록시 프로세스를 모니터링할 수 있습니다.
히스토리 동기화 프로세스의 트랜잭션 통계
히스토리 동기화 프로세스의 제목에는 히스토리 동기화 트랜잭션에 대한 상세 통계가 표시됩니다.
205276 ? S 0:00 zabbix_proxy: history syncer #1 [processed 1 values in 0.001179 (0.001167,0.000000) sec, idle 1 sec]
205277 ? S 0:00 zabbix_proxy: history syncer #2 [processed 0 values in 0.000022 (0.000000,0.000000) sec, idle 1 sec]
다음 processed...in N (<timings>) sec에 표시된 시간은 다음과 같습니다:
- 아이템 값을 데이터베이스에 기록하는 데 걸린 시간.
- 아이템 데이터(상태, 오류)를 업데이트하는 데 걸린 시간.
지원 플랫폼
Zabbix 프록시는 Zabbix 서버와 동일한 지원 플랫폼에서 실행됩니다.
메모리 버퍼
메모리 버퍼를 사용하면 데이터베이스에 접근하지 않고도 새 데이터(아이템 값, 네트워크 검색, 호스트 자동 등록)를 버퍼에 저장하고 Zabbix 서버로 업로드할 수 있습니다. 프록시용 메모리 버퍼는 Zabbix 7.0에서 도입되었습니다.
Zabbix 7.0 이전 버전에서는 수집한 데이터를 Zabbix 서버로 업로드하기 전에 데이터베이스에 저장했습니다. 이러한 설치 환경에서는 Zabbix 7.0으로 업그레이드한 후에도 이 방식이 기본 동작으로 유지됩니다.
성능을 최적화하려면 프록시에서 메모리 버퍼를 사용하도록 설정하는 것이 좋습니다.
이를 위해 ProxyBufferMode 값을 disk(기존 설치 환경에 하드코딩된 기본값)에서 hybrid(권장) 또는 memory로 변경하면 됩니다.
메모리 버퍼 크기(ProxyMemoryBufferSize 매개변수)도 설정해야 합니다.
하이브리드 모드에서는 프록시가 중지되거나 버퍼가 가득 차거나 데이터가 너무 오래되면 미전송 데이터를 데이터베이스에 기록하여 데이터 손실을 방지합니다. 모든 값을 데이터베이스에 기록한 후에는 프록시가 다시 메모리 버퍼를 사용합니다.
메모리 모드에서는 메모리 버퍼를 사용하지만 데이터 손실을 방지하는 기능은 없습니다. 프록시가 중지되거나 메모리가 가득 차면 미전송 데이터가 삭제됩니다.
하이브리드 모드(ProxyBufferMode=hybrid)는 Zabbix 7.0부터 모든 신규 설치에 적용됩니다.
추가 매개변수인 ProxyMemoryBufferSize 및 ProxyMemoryBufferAge는 각각 메모리 버퍼 크기와 버퍼에 데이터를 보관할 수 있는 최대 시간을 정의합니다.
설정이 서로 충돌하면 프록시가 오류를 출력하고 시작하지 못합니다. 예를 들어 다음과 같은 경우입니다:
ProxyBufferMode가hybrid또는memory로 설정되어 있고ProxyMemoryBufferSize가0인 경우.ProxyBufferMode가hybrid또는memory로 설정되어 있고ProxyLocalBuffer가0이 아닌 경우.
로캘
프록시에서 일부 텍스트 아이템을 올바르게 해석하려면 UTF-8 로캘이 필요합니다. 대부분의 최신 Unix 계열 시스템에서는 UTF-8 로캘이 기본값이지만, 일부 시스템에서는 이를 명시적으로 설정해야 할 수도 있습니다.
유지보수 중 대기열 계산
Zabbix 프록시는 유지보수 기간을 인식하지 못합니다. 자세한 내용은 유지보수 중 대기열 계산을 참조하세요.