2 외부 시스템으로의 스트리밍
원본 보기2 외부 시스템으로 스트리밍
개요
Zabbix에서 HTTP를 통해 외부 시스템으로 아이템 값과 이벤트를 스트리밍하는 것이 가능합니다 (프로토콜 세부사항 참조).
태그 필터를 사용하여 아이템 값 또는 이벤트의 하위 집합을 스트리밍할 수 있습니다.
두 개의 Zabbix 서버 프로세스 유형이 데이터 스트리밍을 담당합니다: connector manager와 connector worker.
Zabbix 내부 아이템인 zabbix[connector_queue]를 통해 커넥터 큐에 대기 중인 값의 수를 모니터링할 수 있습니다.
설정
외부 시스템으로 데이터를 스트리밍하도록 설정하려면 다음 단계가 필요합니다:
1. Zabbix로부터 데이터를 수신할 원격 시스템을 설정합니다. 이를 위해 다음 도구들을 사용할 수 있습니다:
- 수신된 정보를
events.ndjson과history.ndjson파일에 기록하는 간단한 수신기의 예시입니다. - Zabbix server용 Kafka 커넥터 - Go로 작성된 경량 서버로, Zabbix 서버에서 Kafka 브로커로 아이템 값과 이벤트를 전달하도록 설계되었습니다.
2. zabbix_server.conf에서 StartConnectors 매개변수를 조정하여 Zabbix에서 필요한 수의 커넥터 작업자를 설정합니다.
커넥터 작업자의 수는 Zabbix 프론트엔드에서 설정된 커넥터 수와 일치해야 합니다(동시 세션이 1개 이상인 경우 초과해야 함).
그 다음 Zabbix 서버를 다시 시작합니다.
3. Zabbix 프론트엔드에서 새 커넥터를 설정하고(관리 > 일반 > 커넥터) zabbix_server -R config_cache_reload 명령으로 서버 캐시를 다시 로드합니다.

필수 필드는 별표(*)로 표시됩니다.
| 매개변수 | 설명 |
|---|---|
| 이름 | 커넥터 이름을 입력합니다. |
| 데이터 유형 | 스트리밍할 데이터 유형을 선택합니다: 아이템 값 - Zabbix에서 외부 시스템으로 아이템 값을 스트리밍; 이벤트 - Zabbix에서 외부 시스템으로 이벤트를 스트리밍. |
| URL | 수신기 URL을 입력합니다. 사용자 매크로가 지원됩니다. |
| 태그 필터 | 태그 필터와 일치하는 아이템 값이나 이벤트만 내보냅니다. 설정하지 않으면 모든 것을 내보냅니다. 특정 태그와 태그 값을 포함하거나 제외할 수 있습니다. 여러 조건을 설정할 수 있습니다. 태그 이름 매칭은 항상 대소문자를 구분합니다. 각 조건에 대해 여러 연산자를 사용할 수 있습니다: 존재함 - 지정된 태그 이름을 포함; 같음 - 지정된 태그 이름과 값을 포함(대소문자 구분); 포함 - 태그 값이 입력된 문자열을 포함하는 지정된 태그 이름을 포함(부분 문자열 매치, 대소문자 구분 안 함); 존재하지 않음 - 지정된 태그 이름을 제외; 같지 않음 - 지정된 태그 이름과 값을 제외(대소문자 구분); 포함하지 않음 - 태그 값이 입력된 문자열을 포함하는 지정된 태그 이름을 제외(부분 문자열 매치, 대소문자 구분 안 함). 조건에 대한 두 가지 계산 유형이 있습니다: And/Or - 모든 조건이 충족되어야 하며, 같은 태그 이름을 가진 조건들은 Or 조건으로 그룹화됩니다; Or - 하나의 조건만 충족되면 충분합니다. |
| 정보 유형 | 커넥터가 스트리밍해야 하는 아이템 값을 필터링할 정보 유형(숫자(부호 없음), 숫자(실수), 문자 등)을 선택합니다. 이 필드는 데이터 유형이 "아이템 값"으로 설정된 경우에 사용할 수 있습니다. |
| HTTP 인증 | 인증 옵션을 선택합니다: 없음 - 인증 사용 안 함; Basic - 기본 인증 사용; NTLM - NTLM (Windows NT LAN Manager) 인증 사용; Kerberos - Kerberos 인증 사용 (참조: Zabbix와 Kerberos 설정); Digest - Digest 인증 사용; Bearer - Bearer 인증 사용. |
| 사용자명 | 사용자 이름을 입력합니다(최대 255자). 사용자 매크로가 지원됩니다. 이 필드는 HTTP 인증이 "Basic", "NTLM", "Kerberos" 또는 "Digest"로 설정된 경우에 사용할 수 있습니다. |
| 비밀번호 | 사용자 비밀번호를 입력합니다(최대 255자). 사용자 매크로가 지원됩니다. 이 필드는 HTTP 인증이 "Basic", "NTLM", "Kerberos" 또는 "Digest"로 설정된 경우에 사용할 수 있습니다. |
| Bearer 토큰 | Bearer 토큰을 입력합니다. 사용자 매크로가 지원됩니다. 이 필드는 HTTP 인증이 "Bearer"로 설정된 경우에 사용할 수 있으며 필수입니다. |
| 고급 설정 | 고급 설정 라벨을 클릭하면 고급 설정 옵션이 표시됩니다(아래 참조). |
| 메시지당 최대 레코드 수 | 하나의 메시지 내에서 스트리밍할 수 있는 값이나 이벤트의 최대 개수를 지정합니다. |
| 동시 세션 | 이 커넥터에 대해 실행할 전송자 프로세스 수를 선택합니다. 최대 100개의 세션을 지정할 수 있으며, 기본값은 "1"입니다. |
| 시도 횟수 | 데이터 스트리밍 시도 횟수입니다. 최대 5번까지 시도할 수 있으며, 기본값은 "1"입니다. |
| 시도 간격 | 데이터 스트리밍 시도가 실패한 후 커넥터가 대기해야 하는 시간을 지정합니다. 최대 10초까지 지정할 수 있으며, 기본값은 "5s"입니다. 이 필드는 시도 횟수가 "2" 이상으로 설정된 경우에 사용할 수 있습니다. 실패한 시도는 연결 설정이 실패했거나 HTTP 응답 코드가 200, 201, 202, 203, 204가 아닌 경우입니다. 재시도는 통신 오류가 발생하거나 HTTP 응답 코드가 200, 201, 202, 203, 204, 400, 401, 403, 404, 405, 415, 422가 아닌 경우에 트리거됩니다. 리디렉션은 따라가므로 302 -> 200은 양의 응답이지만, 302 -> 503은 재시도를 트리거합니다. |
| 타임아웃 | 메시지 타임아웃을 지정합니다(1-60초, 기본값 - 5초). 시간 접미사가 지원됩니다(예: 30s, 1m). 사용자 매크로가 지원됩니다. |
| HTTP 프록시 | 다음 형식으로 사용할 HTTP 프록시를 지정할 수 있습니다:[protocol://][username[:password]@]proxy.example.com[:port]사용자 매크로가 지원됩니다. 선택적 protocol:// 접두사를 사용하여 대체 프록시 프로토콜을 지정할 수 있습니다(프로토콜 접두사 지원은 cURL 7.21.7에서 추가됨). 프로토콜을 지정하지 않으면 프록시는 HTTP 프록시로 처리됩니다. 기본적으로 1080 포트가 사용됩니다.HTTP 프록시가 지정되면, 프록시는 http_proxy, HTTPS_PROXY와 같은 프록시 관련 환경 변수를 덮어씁니다. 지정하지 않으면 프록시는 프록시 관련 환경 변수를 덮어쓰지 않습니다. 입력된 값은 그대로 전달되며, 정상성 검사는 수행되지 않습니다.SOCKS 프록시 주소도 입력할 수 있습니다. 잘못된 프로토콜을 지정하면 커넥터가 Zabbix에서 아이템 값이나 이벤트를 스트리밍하지 못합니다. HTTP 프록시에서는 단순 인증만 지원됩니다. |
| SSL 피어 확인 | 웹 서버의 SSL 인증서를 확인하려면 체크박스를 선택합니다. 서버 인증서는 시스템 전체 인증 기관(CA) 위치에서 자동으로 가져옵니다. Zabbix 서버 또는 프록시 설정 매개변수 SSLCALocation을 사용하여 CA 파일 위치를 재정의할 수 있습니다. |
| SSL 호스트 확인 | 웹 서버 인증서의 Common Name 필드나 Subject Alternate Name 필드가 일치하는지 확인하려면 체크박스를 선택합니다. 이는 CURLOPT_SSL_VERIFYHOST cURL 옵션을 설정합니다. |
| SSL 인증서 파일 | 클라이언트 인증에 사용되는 SSL 인증서 파일 이름입니다. 인증서 파일은 PEM1 형식이어야 합니다. 사용자 매크로가 지원됩니다. 인증서 파일에 개인키도 포함되어 있으면 SSL 키 파일 필드를 비워둡니다. 키가 암호화되어 있으면 SSL 키 비밀번호 필드에 비밀번호를 지정합니다. 이 파일이 있는 디렉토리는 Zabbix 서버 또는 프록시 설정 매개변수 SSLCertLocation으로 지정됩니다. |
| SSL 키 파일 | 클라이언트 인증에 사용되는 SSL 개인키 파일 이름입니다. 개인키 파일은 PEM1 형식이어야 합니다. 사용자 매크로가 지원됩니다. 이 파일이 있는 디렉토리는 Zabbix 서버 또는 프록시 설정 매개변수 SSLKeyLocation으로 지정됩니다. |
| SSL 키 비밀번호 | SSL 개인키 파일 비밀번호입니다. 사용자 매크로가 지원됩니다. |
| 설명 | 커넥터 설명을 입력합니다. |
| 활성화 | 커넥터를 활성화하려면 체크박스를 선택합니다. |
Kafka 커넥터가 쉼표로 구분된 부트스트랩 브로커 주소 목록으로 설정된 경우(예: Kafka.URL=kafka1.example.com:9093,kafka2.example.com:9093), Kafka 클라이언트는 가장 먼저 응답하는 브로커에 연결하고 해당 클러스터 메타데이터를 사용합니다.
목록에 서로 다른 Kafka 클러스터의 주소가 포함된 경우, 가장 빠르게 응답하는 클러스터만 사용되고 다른 주소들은 사용할 수 없는 것으로 기록됩니다. 그 결과, 커넥터가 연결되어 있어도 다음과 같은 시작 경고가 나타날 수 있습니다:
kafka cluster connected, but broker(s) "kafka1.example.com:9093, kafka2.example.com:9093" unavailable; will retry on message send if active brokers fail
일부 환경(사설 네트워크, 컨테이너 네트워크 또는 비표준 DNS/hosts 설정)에서는 호스트명이나 IP가 루프백 주소(예: 127.0.0.1/localhost)로 확인되거나 클라이언트에 의해 정규화될 수 있으며, 이는 이러한 경고를 오해의 소지가 있게 만들 수 있습니다.
혼동을 줄이려면 모든 Kafka.URL 주소가 같은 Kafka 클러스터에 속하도록 하고, 커넥터 호스트에서 DNS 해석과 브로커의 advertised.listeners를 확인하며, 브로커의 광고된 주소로 해석되는 주소를 선호합니다.
프로토콜
서버와 수신자 간의 통신은 REST API, NDJSON, "Content-Type: application/x-ndjson"을 사용하여 HTTP를 통해 이루어집니다.
자세한 내용은 줄바꿈으로 구분된 JSON 내보내기 프로토콜을 참조하세요.
Server request
Example of streaming item values:
POST /v1/history HTTP/1.1
Host: localhost:8080
Accept: */*
Accept-Encoding: deflate, gzip, br, zstd
Content-Length: 628
Content-Type: application/x-ndjson
{"host":{"host":"Zabbix server","name":"Zabbix server"},"groups":["Zabbix servers"],"item_tags":[{"tag":"foo","value":"test"}],"itemid":44457,"name":"foo","clock":1673454303,"ns":800155804,"value":0,"type":3}
{"host":{"host":"Zabbix server","name":"Zabbix server"},"groups":["Zabbix servers"],"item_tags":[{"tag":"foo","value":"test"}],"itemid":44457,"name":"foo","clock":1673454303,"ns":832290669,"value":1,"type":3}
{"host":{"host":"Zabbix server","name":"Zabbix server"},"groups":["Zabbix servers"],"item_tags":[{"tag":"bar","value":"test"}],"itemid":44458,"name":"bar","clock":1673454303,"ns":867770366,"value":123,"type":3}
Example of streaming events:
POST /v1/events HTTP/1.1
Host: localhost:8080
Accept: */*
Accept-Encoding: deflate, gzip, br, zstd
Content-Length: 333
Content-Type: application/x-ndjson
{"clock":1673454303,"ns":800155804,"value":1,"eventid":5,"name":"trigger for foo being 0","severity":0,"hosts":[{"host":"Zabbix server","name":"Zabbix server"}],"groups":["Zabbix servers"],"tags":[{"tag":"foo_trig","value":"test"},{"tag":"foo","value":"test"}]}
{"clock":1673454303,"ns":832290669,"value":0,"eventid":6,"p_eventid":5}
Receiver response
The response consists of the HTTP response status code and the JSON payload. The HTTP response status code must be "200", "201", "202", "203", or "204" for requests that were handled successfully, other for failed requests.
Example of success:
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
Date: Tue, 21 Apr 2026 10:13:04 GMT
Content-Length: 23
{"response":"success"}
Example with errors:
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
X-Content-Type-Options: nosniff
Date: Tue, 21 Apr 2026 12:15:01 GMT
Content-Length: 55
{"error":"invalid character '{' after top-level value"}