서버
개요
Zabbix 서버는 Zabbix 소프트웨어의 핵심 프로세스입니다.
서버는 데이터 폴링과 트래핑을 수행하고, 트리거를 계산하며, 사용자에게 알림을 보냅니다. Zabbix 에이전트와 프록시가 시스템의 가용성과 무결성 데이터를 보고하는 핵심 구성 요소입니다. 서버는 단순 서비스 점검을 사용하여 네트워크 서비스(웹 서버 및 메일 서버 등)를 직접 원격으로 점검할 수도 있습니다.
서버는 모든 구성, 통계 및 운영 데이터가 저장되는 중앙 저장소이며, 모니터링하는 시스템에서 문제가 발생하면 관리자에게 능동적으로 알리는 Zabbix의 구성 요소입니다.
기본적인 Zabbix 서버의 기능은 Zabbix 서버, 웹 프런트엔드, 데이터베이스 저장소라는 세 가지 구성 요소로 나뉩니다.
Zabbix의 모든 구성 정보는 데이터베이스에 저장되며, 서버와 웹 프런트엔드 모두 이 데이터베이스와 상호 작용합니다. 예를 들어 웹 프런트엔드(또는 API)에서 새 아이템을 생성하면 데이터베이스의 items 테이블에 추가됩니다. 그런 다음 Zabbix 서버는 약 1분마다 items 테이블을 조회하여 활성 아이템 목록을 가져오고, 이를 Zabbix 서버 내부 캐시에 저장합니다. 따라서 Zabbix 프런트엔드에서 변경한 내용이 최신 데이터 섹션에 반영되기까지 최대 2분이 걸릴 수 있습니다.
서버 실행
패키지로 설치한 경우
Zabbix 서버는 데몬 프로세스로 실행됩니다. 다음 명령을 실행하여 서버를 시작할 수 있습니다:
systemctl start zabbix-server
이 명령은 대부분의 GNU/Linux 시스템에서 작동합니다. 다른 시스템에서는 다음 명령을 실행해야 할 수도 있습니다:
/etc/init.d/zabbix-server start
마찬가지로 중지, 재시작, 상태 확인에는 다음 명령을 사용합니다:
systemctl stop zabbix-server
systemctl restart zabbix-server
systemctl status zabbix-server
수동으로 시작
위 방법이 작동하지 않으면 수동으로 시작해야 합니다.
다음 명령을 실행하려면 zabbix_server 바이너리의 경로를 찾으세요:
zabbix_server
Zabbix 서버에서 다음 명령줄 매개변수를 사용할 수 있습니다:
| 매개변수 | 설명 |
|---|---|
-c --config <config-file> |
구성 파일의 경로입니다. |
-f --foreground |
Zabbix 서버를 포그라운드에서 실행합니다. |
-R --runtime-control <option> |
관리 기능을 수행합니다. |
-T --test-config |
구성 파일의 유효성을 검사하고 종료합니다. |
-h --help |
도움말 정보를 출력하고 종료합니다. |
-V --version |
버전 번호를 표시합니다. |
명령줄 매개변수를 사용하여 Zabbix 서버를 실행하는 예:
zabbix_server -c /usr/local/etc/zabbix_server.conf
zabbix_server --help
zabbix_server -V
런타임 제어
런타임 제어 옵션:
| 옵션 | 설명 | 대상 |
|---|---|---|
config_cache_reload |
구성 캐시를 다시 불러옵니다. 현재 캐시를 불러오는 중이면 무시됩니다. | |
history_cache_clear=target |
ID로 지정한 아이템의 히스토리 캐시를 지웁니다. 첫 번째 값과 마지막 값을 제외한 아이템의 모든 값에 영향을 줍니다. |
target - 아이템의 ID |
diaginfo[=<section>] |
서버 로그 파일에 진단 정보를 수집합니다. | historycache - 히스토리 캐시 통계;valuecache - 값 캐시 통계;preprocessing - 전처리 관리자 통계;alerting - 알림 관리자 통계;lld - LLD 관리자 통계;locks - 뮤텍스 목록(BSD 시스템에서는 비어 있음);connector - 대기열이 가장 큰 커넥터의 통계. |
ha_status |
고가용성(HA) 클러스터 상태를 로그에 기록합니다. | |
ha_remove_node=target |
이름 또는 ID로 지정한 고가용성(HA) 노드를 제거합니다. 활성/대기 노드는 제거할 수 없습니다. |
target - 노드의 이름 또는 ID(확인하려면 ha_status 실행). |
ha_set_failover_delay=delay |
고가용성(HA) 장애 조치 지연 시간을 설정합니다. 시간 접미사를 지원합니다(예: 10s, 1m). |
|
proxy_config_cache_reload[=<target>] |
프록시 구성 캐시를 다시 불러옵니다. | target - 쉼표로 구분한 프록시 이름 목록. 대상을 지정하지 않으면 모든 프록시의 구성을 다시 불러옵니다. |
secrets_reload |
Vault에서 비밀 정보를 다시 불러옵니다. | |
service_cache_reload |
서비스 관리자 캐시를 다시 불러옵니다. | |
snmp_cache_reload |
SNMP 캐시를 다시 불러와 모든 호스트의 SNMP 엔진 속성(engine time, engine boots, engine id, 자격 증명)을 지웁니다. SNMP 문제를 해결할 때 전체 캐시를 강제로 지우는 데 사용합니다. | |
housekeeper_execute |
하우스키핑 절차를 시작합니다. 현재 하우스키핑 절차가 진행 중이면 무시됩니다. |
|
trigger_housekeeper_execute |
트리거 하우스키핑 절차를 시작합니다. 현재 트리거 하우스키핑 절차가 진행 중이면 무시됩니다. 트리거 하우스키핑 절차가 시작되기 전까지는 이미 삭제된 트리거로 인해 발생한 문제가 여전히 서비스 문제를 생성하고 이를 서비스에 할당할 수 있습니다. 자주 발견되거나 발견되지 않게 되는 트리거를 기반으로 하는 서비스 상태 계산 규칙이 구성에 많이 포함되어 있다면, 하우스키핑 절차의 실행 빈도를 높이도록 ProblemHousekeepingFrequency 서버 구성 매개변수를 조정하는 것을 고려하세요. |
|
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)프로파일링 대상으로 지원되는 프로세스 유형: alerter, alert manager, availability manager, configuration syncer, discovery manager, escalator, history poller, history syncer, housekeeper, http poller, icmp pinger, ipmi manager, ipmi poller, java poller, lld manager, lld worker, odbc poller, poller, preprocessing manager, proxy poller, self-monitoring, service manager, snmp trapper, task manager, timer, trapper, unreachable poller, vmware collector.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).프로파일링 대상으로 지원되는 프로세스 유형은 prof_enable를 참조하세요.process type,N - 프로세스 유형과 번호(예: history syncer,1).pid - 프로세스 식별자( 1 ~ 65535). 더 큰 값은 대상을 'process type,N' 형식으로 지정하세요. |
런타임 제어 대상으로 프로세스 유형을 지정하면 해당 유형의 실행 중인 프로세스에만 명령이 적용됩니다. 지정한 유형의 프로세스가 현재 실행 중이지 않으면 명령은 오류를 반환합니다:
zabbix_server -R log_level_increase='discovery manager'
Cannot redirect signal: "discovery manager" process does not exist
런타임 제어를 사용하여 서버 구성 캐시를 다시 불러오는 예:
zabbix_server -c /usr/local/etc/zabbix_server.conf -R config_cache_reload
런타임 제어를 사용하여 프록시 구성을 다시 불러오는 예:
# Reload configuration of all proxies:
zabbix_server -R proxy_config_cache_reload
# Reload configuration of Proxy1 and Proxy2:
zabbix_server -R proxy_config_cache_reload=Proxy1,Proxy2
런타임 제어를 사용하여 아이템의 히스토리 캐시를 지우는 예:
zabbix_server -c /usr/local/etc/zabbix_server.conf -R history_cache_clear=42243
런타임 제어를 사용하여 진단 정보를 수집하는 예:
# Gather all available diagnostic information in the server log file:
zabbix_server -R diaginfo
# Gather history cache statistics in the server log file:
zabbix_server -R diaginfo=historycache
런타임 제어를 사용하여 SNMP 캐시를 다시 불러오는 예:
zabbix_server -R snmp_cache_reload
Zabbix UI에서 SNMPv3 인터페이스를 업데이트하면 대부분의 경우 Zabbix가 해당 인터페이스의 새 SNMPv3 자격 증명을 자동으로 다시 불러옵니다. -R snmp_cache_reload 명령은 자격 증명을 변경한 후에도 폴링이 계속 실패하는 경우(예: engineBoots/engineID 불일치 또는 RFC를 준수하지 않는 장치로 인한 경우)나 문제 해결을 위해 전체 SNMP 캐시를 강제로 지워야 하는 경우에만 사용하세요.
런타임 제어를 사용하여 하우스키퍼 실행을 요청하는 예:
zabbix_server -c /usr/local/etc/zabbix_server.conf -R housekeeper_execute
런타임 제어를 사용하여 로그 수준을 변경하는 예:
# Increase log level of all processes:
zabbix_server -c /usr/local/etc/zabbix_server.conf -R log_level_increase
# Increase log level of second poller process:
zabbix_server -c /usr/local/etc/zabbix_server.conf -R log_level_increase=poller,2
# Increase log level of process with PID 1234:
zabbix_server -c /usr/local/etc/zabbix_server.conf -R log_level_increase=1234
# Decrease log level of all http poller processes:
zabbix_server -c /usr/local/etc/zabbix_server.conf -R log_level_decrease="http poller"
HA 장애 조치 지연 시간을 최솟값인 10초로 설정하는 예:
zabbix_server -R ha_set_failover_delay=10s
프로세스 실행 사용자
Zabbix 서버는 root가 아닌 사용자로 실행되도록 설계되었습니다. root가 아닌 사용자로 시작하면 해당 사용자로 실행됩니다. 따라서 root가 아닌 어떤 사용자로도 문제없이 서버를 실행할 수 있습니다.
'root'로 실행하려고 하면 하드코딩된 'zabbix' 사용자로 전환되며, 이 사용자는 시스템에 존재해야 합니다. 서버 구성 파일의 'AllowRoot' 매개변수를 적절히 수정한 경우에만 서버를 'root'로 실행할 수 있습니다.
Zabbix 서버와 에이전트를 같은 컴퓨터에서 실행하는 경우, 서버와 에이전트를 서로 다른 사용자로 실행하는 것이 좋습니다. 둘을 같은 사용자로 실행하면 에이전트가 서버 구성 파일에 접근할 수 있으므로, Zabbix에서 관리자 수준의 권한을 가진 사용자는 데이터베이스 비밀번호 등을 쉽게 알아낼 수 있습니다.
구성 파일
구성 파일의 기본 경로는 운영 체제와 Zabbix 설치 방법에 따라 다릅니다:
- 소스에서 설치한 경우:
/usr/local/etc/zabbix_server.conf또는 컴파일 시 지정한 변수--sysconfdir또는--prefix에 설정된 경로. - 패키지로 설치한 경우:
/etc/zabbix/zabbix_server.conf.
다음 구성 파일 옵션에서 zabbix_server 구성에 대한 자세한 내용을 확인하세요.
시작 스크립트
이 스크립트는 시스템 시작/종료 시 Zabbix 프로세스를 자동으로 시작/중지하는 데 사용됩니다. 스크립트는 misc/init.d 디렉터리에 있습니다.
서버 프로세스 유형 및 스레드
agent poller- 작업자 스레드를 사용하는 패시브 점검용 비동기 폴러 프로세스;alert manager- 알림 대기열 관리자;alert syncer- 알림 DB 기록 프로세스;alerter- 알림 전송 프로세스;availability manager- 호스트 가용성 업데이트 프로세스;browser poller- 브라우저 아이템 점검용 폴러;configuration syncer- 구성 데이터의 인메모리 캐시 관리 프로세스;configuration syncer worker- 아이템 이름의 사용자 매크로 값을 해석하고 동기화하는 프로세스;connector manager- 커넥터 관리 프로세스;connector worker- 커넥터 관리자의 요청을 처리하는 프로세스;discovery manager- 장치 검색 관리 프로세스;discovery worker- 검색 관리자의 검색 작업을 처리하는 프로세스;escalator- 액션 에스컬레이션 프로세스;ha manager- 고가용성 관리 프로세스;history poller- 데이터베이스 연결이 필요한 계산형 점검을 처리하는 프로세스;history syncer- 히스토리 DB 기록 프로세스;housekeeper- 오래된 데이터(아이템 히스토리 및 추세, 사용자 세션, 이벤트 등)와 삭제된 객체가 남긴 데이터를 제거하는 프로세스;http agent poller- 작업자 스레드를 사용하는 HTTP 점검용 비동기 폴러 프로세스;http poller- 웹 모니터링 폴러;icmp pinger- icmpping 점검용 폴러;internal poller- 내부 점검용 폴러;ipmi manager- IPMI 폴러 관리자;ipmi poller- IPMI 점검용 폴러;java poller- Java 점검용 폴러;lld manager- 로우 레벨 디스커버리 작업 관리 프로세스;lld worker- 로우 레벨 디스커버리 작업자 프로세스;odbc poller- ODBC 점검용 폴러;poller- 패시브 점검용 일반 폴러;preprocessing manager- 전처리 작업자 스레드를 사용하는 전처리 작업 관리자;preprocessing worker- 데이터 전처리 스레드;proxy poller- 패시브 프록시용 폴러;proxy group manager- 프록시 부하 분산 및 고가용성 관리자;report manager- 예약된 보고서 생성 작업 관리자;report writer- 예약된 보고서 생성 프로세스;self-monitoring- 서버 내부 통계 수집 프로세스;service manager- history syncer, task manager, alert manager에서 문제, 문제 태그, 문제 복구에 대한 정보를 받아 서비스를 관리하는 프로세스;snmp poller- 작업자 스레드를 사용하는 SNMP 점검용 비동기 폴러 프로세스(walk[OID]및get[OID]아이템만 해당);snmp trapper- SNMP 트랩용 트래퍼;task manager- 다른 구성 요소가 요청한 작업(예: 문제 종료, 문제 확인, 지금 아이템 값 확인, 원격 명령 기능)을 원격으로 실행하는 프로세스;timer- 유지보수 처리용 타이머;trapper- 액티브 점검, 트랩, 프록시 통신용 트래퍼;trigger housekeeper- 이미 삭제된 트리거가 생성한 문제와 이벤트를 제거하는 프로세스;unreachable poller- 연결할 수 없는 장치용 폴러;vmware collector- VMware 서비스에서 데이터를 수집하는 VMware 데이터 수집기.
서버 로그 파일에서 이러한 프로세스 유형을 확인할 수 있습니다.
Zabbix 7.4.6부터 서버 로그 파일은 파일 소유자에게만 읽기 및 쓰기 권한을 부여하여 생성됩니다. 소유 그룹에는 읽기 권한도 부여됩니다. 그 외의 모든 권한은 허용되지 않습니다.
다양한 유형의 Zabbix 서버 프로세스는 zabbix[process,<type>,<mode>,<state>] 내부 아이템을 사용하여 모니터링할 수 있습니다.
히스토리 동기화 프로세스 트랜잭션 통계
history syncer 프로세스 제목에는 해당 프로세스의 트랜잭션에 대한 자세한 통계가 표시됩니다:
205182 ? S 0:00 zabbix_server: history syncer #2 [processed 0 values, 0+0 triggers in 0.000021 (0.000000,0.000000,0.000000,0.000000,0.000000) sec, idle 1 sec]
205183 ? S 0:00 zabbix_server: history syncer #3 [processed 18 values, 7+0 triggers in 0.002612 (0.001108,0.000000,0.000000,0.001208,0.000014) sec, idle 1 sec]
205184 ? S 0:00 zabbix_server: history syncer #4 [processed 0 values, 0+0 triggers in 0.000027 (0.000000,0.000000,0.000000,0.000000,0.000000) sec, idle 1 sec]
"A+B triggers"에서:
- A - 히스토리 값으로 인해 처리된 트리거;
- B - 타이머로 인해 처리된 트리거.
processed...in N (<timings>) sec의 시간 값은 다음과 같습니다:
- 아이템 값을 데이터베이스에 기록하는 데 걸린 시간;
- 아이템 데이터(상태, 오류, 호스트 인벤토리 등)를 업데이트하는 데 걸린 시간;
- 추세 데이터를 데이터베이스에 기록하는 데 걸린 시간;
- 트리거를 계산하는 데 걸린 시간;
- 이벤트와 액션을 처리하는 데 걸린 시간.
지원 플랫폼
서버 운영의 보안 요구 사항과 업무상 중요성을 고려할 때, UNIX는 필요한 성능, 내결함성, 복원력을 일관되게 제공할 수 있는 유일한 운영 체제입니다. Zabbix는 시장을 선도하는 UNIX 버전에서 작동합니다.
Zabbix 서버는 다음 플랫폼에서 테스트되었습니다:
- Linux
- Solaris
- AIX
- HP-UX
- Mac OS X
- FreeBSD
- OpenBSD
- NetBSD
- SCO Open Server
Zabbix는 다른 Unix 계열 운영 체제에서도 작동할 수 있습니다.
로캘
서버에서 일부 텍스트 아이템을 올바르게 해석하려면 UTF-8 로캘이 필요합니다. 대부분의 최신 Unix 계열 시스템은 UTF-8 로캘을 기본값으로 사용하지만, 일부 시스템에서는 별도로 설정해야 할 수도 있습니다.