스크립트 아이템
개요
스크립트 아이템은 사용자 정의 JavaScript 코드를 실행하여 데이터를 수집하는 데 사용할 수 있으며, HTTP/HTTPS를 통해 데이터를 가져올 수 있는 기능을 제공합니다. 스크립트 외에도 파라미터(이름과 값의 쌍) 목록과 타임아웃을 선택적으로 지정할 수 있습니다.
이 아이템 유형은 여러 단계나 복잡한 로직이 필요한 데이터 수집 시나리오에서 유용합니다. 예를 들어 스크립트 아이템은 HTTP 호출을 수행한 다음 첫 번째 단계에서 받은 데이터를 어떤 방식으로 처리하고, 변환된 값을 두 번째 HTTP 호출에 전달하도록 구성할 수 있습니다.
스크립트 아이템은 Zabbix server 또는 proxy poller가 처리합니다.
구성
아이템 구성 폼의 Type 필드에서 Script를 선택한 다음 필수 필드를 입력합니다.

모든 필수 입력 필드는 빨간색 별표로 표시되어 있습니다.
스크립트 아이템에 특정 정보가 필요한 필드는 다음과 같습니다.
| 필드 | 설명 |
|---|---|
| Key | 아이템을 식별하는 데 사용할 고유 키를 입력합니다. |
| Parameters | 스크립트에 전달할 변수를 속성과 값의 쌍으로 지정합니다. 사용자 매크로를 지원합니다. 어떤 내장 매크로가 지원되는지 확인하려면 지원되는 매크로 표에서 "Script-type item"을 검색하세요. |
| Script | 파라미터 필드를 클릭하거나 그 옆의 연필 아이콘을 클릭하면 열리는 모달 편집기에 JavaScript 코드를 입력합니다. 이 코드는 메트릭 값을 반환하는 로직을 제공해야 합니다. 이 코드는 모든 파라미터와 Zabbix가 추가한 모든 추가 JavaScript 객체에 접근할 수 있습니다. 참고: JavaScript Guide. |
| Timeout | JavaScript 실행 타임아웃(1-600초, 초과 시 오류가 반환됨). 스크립트에 따라 타임아웃이 발생하기까지 더 오래 걸릴 수 있습니다. Timeout 파라미터에 대한 자세한 내용은 일반 아이템 속성을 참고하세요. |
예제
간단한 데이터 수집
*https://www.example.com/release\_notes*:의 콘텐츠 수집:
- 유형이 "Script"인 아이템을 생성합니다.
- Script 필드에 다음을 입력합니다.
var request = new HttpRequest();
return request.get("https://www.example.com/release_notes");
파라미터를 사용한 데이터 수집
특정 페이지의 콘텐츠를 수집하고 파라미터를 활용:
- 유형이 "Script"이고 파라미터가 두 개인 아이템을 생성합니다.
- url : {$DOMAIN} (사용자 매크로 {$DOMAIN}은 정의되어 있어야 하며, 가급적 호스트 수준에서 정의하는 것이 좋습니다)
- subpage : /release_notes

- Script 필드에 다음을 입력합니다.
var obj = JSON.parse(value);
var url = obj.url;
var subpage = obj.subpage;
var request = new HttpRequest();
return request.get(url + subpage);
다중 HTTP 요청
https://www.example.com와 *https://www.example.com/release\_notes*: 둘 다의 콘텐츠 수집:
- 유형이 "Script"인 아이템을 생성합니다.
- Script 필드에 다음을 입력합니다.
var request = new HttpRequest();
return request.get("https://www.example.com") + request.get("https://www.example.com/release_notes");
로깅
Zabbix server 로그에 "Log test" 항목을 추가하고 아이템 값 "1"을 반환받기:
- 유형이 "Script"인 아이템을 생성합니다.
- Script 필드에 다음을 입력합니다.
Zabbix.log(3, 'Log test');
return 1;