웹 모니터링
개요
Zabbix로 웹사이트의 여러 가용성 측면을 확인할 수 있습니다.
웹 모니터링을 수행하려면 Zabbix 서버가 사전에 cURL(libcurl) 지원과 함께 구성되어 있어야 합니다.
웹 모니터링을 활성화하려면 웹 시나리오를 정의해야 합니다. 웹 시나리오는 하나 이상의 HTTP 요청, 즉 "단계(step)"로 구성됩니다. 단계는 사전에 정의된 순서대로 Zabbix 서버에 의해 주기적으로 실행됩니다. 호스트가 프록시로 모니터링되는 경우, 단계는 프록시가 실행합니다.
웹 시나리오는 아이템, 트리거 등과 동일한 방식으로 호스트/템플릿에 연결됩니다. 즉, 웹 시나리오도 템플릿 수준에서 만들어 여러 호스트에 한 번에 적용할 수 있습니다.
모든 웹 시나리오에서는 다음 정보가 수집됩니다:
- 전체 시나리오의 모든 단계에 대한 초당 평균 다운로드 속도
- 실패한 단계 번호
- 마지막 오류 메시지
모든 웹 시나리오 단계에서는 다음 정보가 수집됩니다:
- 초당 다운로드 속도
- 응답 시간
- 응답 코드
자세한 내용은 웹 모니터링 아이템을 참고하세요.
웹 시나리오 실행으로 수집된 데이터는 데이터베이스에 보관됩니다. 이 데이터는 그래프, 트리거, 알림에 자동으로 사용됩니다.
Zabbix는 가져온 HTML 페이지에 사전에 정의된 문자열이 포함되어 있는지도 확인할 수 있습니다. 시뮬레이션된 로그인을 수행하거나 페이지에서 마우스 클릭 경로를 시뮬레이션하며 따라갈 수도 있습니다.
Zabbix 웹 모니터링은 HTTP와 HTTPS를 모두 지원합니다. 웹 시나리오를 실행할 때, Zabbix는 선택적으로 리다이렉트를 따라갈 수 있습니다(아래 Follow redirects 옵션 참고). 최대 리다이렉트 횟수는 10회로 하드코딩되어 있습니다 (cURL 옵션 CURLOPT_MAXREDIRS 사용). 모든 쿠키는 단일 시나리오 실행 중에 보존됩니다.
웹 시나리오 구성
웹 시나리오를 구성하려면:
- 이동: Data collection > Hosts (또는 Templates)
- 호스트/템플릿 행에서 Web 클릭
- 오른쪽의 Create web scenario 클릭 (또는 기존 시나리오를 수정하려면 시나리오 이름 클릭)
- 폼에 시나리오 매개변수 입력
Scenario 탭에서 웹 시나리오의 일반 매개변수를 구성할 수 있습니다.

모든 필수 입력 필드는 빨간색 별표로 표시되어 있습니다.
시나리오 매개변수:
| 매개변수 | 설명 |
|---|---|
| Name | 고유한 시나리오 이름. 사용자 매크로를 지원합니다. 사용자 매크로를 사용하는 경우, 해당 매크로는 웹 모니터링 아이템 이름에서는 해석되지 않은 채로 남는다는 점에 유의하세요. |
| Update interval | 시나리오가 실행되는 빈도. 시간 접미사를 지원합니다. 예: 30s, 1m, 2h, 1d. 사용자 매크로를 지원합니다. 사용자 매크로가 사용되고 그 값이 변경되면(예: 5m → 30s), 다음 확인은 이전 값에 따라 실행된다는 점에 유의하세요(예시 값 기준으로는 더 나중에 실행됨). 새 웹 시나리오는 생성 후 60초 이내에 확인됩니다. |
| Attempts | 웹 시나리오 단계를 실행하는 시도 횟수. 네트워크 문제(타임아웃, 연결 없음 등)가 발생하면 Zabbix는 단계 실행을 여러 번 반복할 수 있습니다. 설정한 수치는 시나리오의 각 단계에 동일하게 적용됩니다. 최대 10회까지 지정할 수 있으며, 기본값은 1입니다. 참고: Zabbix는 잘못된 응답 코드나 필수 문자열 불일치로 인해서는 단계를 반복하지 않습니다. |
| Agent | 클라이언트 에이전트를 선택합니다. Zabbix는 선택한 브라우저인 것처럼 동작합니다. 웹사이트가 브라우저별로 다른 콘텐츠를 반환할 때 유용합니다. 이 필드에는 사용자 매크로를 사용할 수 있습니다. |
| HTTP proxy | 사용할 HTTP 프록시를 [protocol://][username[:password]@]proxy.example.com[:port] 형식으로 지정할 수 있습니다.이 설정은 CURLOPT_PROXY cURL 옵션을 지정합니다. 선택적인 protocol:// 접두사를 사용해 대체 프록시 프로토콜을 지정할 수 있습니다(프로토콜 접두사 지원은 cURL 7.21.7에서 추가됨). 프로토콜을 지정하지 않으면 프록시는 HTTP 프록시로 처리됩니다.기본적으로 1080 포트가 사용됩니다. 값을 지정하면 http_proxy, HTTPS_PROXY 같은 프록시 관련 환경 변수를 덮어씁니다. 지정하지 않으면 프록시 관련 환경 변수를 덮어쓰지 않습니다. 입력한 값은 그대로 전달되며, 유효성 검사는 이루어지지 않습니다. SOCKS 프록시 주소도 입력할 수 있습니다. 잘못된 프로토콜을 지정하면 연결이 실패하고 아이템이 지원되지 않는 상태가 됩니다. HTTP 프록시에서는 단순 인증만 지원된다는 점에 유의하세요. 이 필드에는 사용자 매크로를 사용할 수 있습니다. |
| Variables | 시나리오 단계에서 사용할 수 있는 변수(URL, post 변수). 다음 형식을 따릅니다: {macro1}=value1 {macro2}=value2 {macro3}=regex:<regular expression> {macro4}=jsonpath:<jsonpath> {macro5}=xmlxpath:<xmlxpath> {macro6}={{macro}.function()} (매크로 함수 참고) 예를 들면: {username}=Alexei {password}=kj3h5kJ34bd {hostid}=regex:hostid is ([0-9]+) {url}=jsonpath:$.host_url {status}=xmlxpath://host/response/status {newvar}={{myvar}.btoa()} 이렇게 정의한 매크로는 단계에서 {username}, {password}, {hostid} 등으로 참조할 수 있습니다. Zabbix는 자동으로 이를 실제 값으로 치환합니다. regex:가 포함된 변수는 정규 표현식의 값을 얻기 위해 한 단계가 필요하므로, 추출된 값은 그다음 단계에서만 적용할 수 있다는 점에 유의하세요.값 부분이 regex:로 시작하면, 그 뒤의 부분은 웹 페이지를 검색하는 정규 표현식으로 처리되며, 일치하는 항목이 있으면 그 결과를 변수에 저장합니다. 일치한 값을 추출할 수 있도록 최소 하나의 하위 그룹이 있어야 합니다.사용자 매크로와 {HOST.*} 매크로를 지원합니다. 변수는 쿼리 필드나 post 변수의 폼 데이터에서 사용될 때는 자동으로 URL 인코딩되지만, raw post나 URL에 직접 사용될 때는 수동으로 URL 인코딩해야 합니다. |
| Headers | 요청을 수행할 때 사용되는 HTTP 헤더. 기본 헤더와 사용자 지정 헤더를 사용할 수 있습니다. 헤더는 시나리오 수준의 드롭다운 목록에서 선택한 Agent 유형에 따라 기본 설정으로 할당되며, 단계 수준에서 사용자 지정으로 정의되지 않는 한 모든 단계에 적용됩니다. 단계 수준에서 헤더를 정의하면, 시나리오 수준의 드롭다운 목록에서 'User-Agent'를 선택해 할당된 기본 헤더를 제외한 이전에 정의된 모든 헤더가 자동으로 폐기된다는 점에 유의해야 합니다. 그러나 'User-Agent' 기본 헤더조차도 단계 수준에서 지정하면 재정의할 수 있습니다. 시나리오 수준의 헤더를 해제하려면, 단계 수준에서 값 없이 헤더 이름만 지정하면 됩니다. 헤더는 HTTP 프로토콜에서 나타나는 것과 동일한 구문을 사용해 나열해야 하며, 선택적으로 CURLOPT_HTTPHEADER cURL 옵션이 지원하는 추가 기능을 사용할 수 있습니다. 예를 들면: Accept-Charset=utf-8 Accept-Language=en-US Content-Type=application/xml; charset=utf-8 사용자 매크로와 {HOST.*} 매크로를 지원합니다. |
| Enabled | 이 상자를 체크하면 시나리오가 활성화되고, 체크하지 않으면 비활성화됩니다. |
기존 시나리오를 수정할 때는 폼에 두 개의 추가 버튼이 제공된다는 점에 유의하세요:
![]() |
기존 시나리오의 속성을 기반으로 다른 시나리오를 만듭니다. |
![]() |
해당 시나리오의 이력 및 추세 데이터를 삭제합니다. 데이터 삭제 후 서버가 즉시 시나리오를 실행하게 됩니다. |
HTTP proxy 필드를 비워두는 경우, HTTP 프록시를 사용하는 또 다른 방법은 프록시 관련 환경 변수를 설정하는 것입니다.
HTTP 확인의 경우 - Zabbix 서버 사용자에 대해 http_proxy 환경 변수를 설정하세요. 예를 들면,
http_proxy=http://proxy_ip:proxy_port.
HTTPS 확인의 경우 - HTTPS_PROXY 환경 변수를 설정하세요. 예를 들면,
HTTPS_PROXY=http://proxy_ip:proxy_port. 자세한 내용은
셸 명령을 실행해 확인할 수 있습니다: # man curl.
Steps 탭에서 웹 시나리오 단계를 구성할 수 있습니다. 웹 시나리오 단계를 추가하려면 Steps 블록에서 Add를 클릭하세요.

비밀 사용자 매크로는 URL에서 사용해서는 안 됩니다. 사용 시 "******"로 해석됩니다.
단계 구성

단계 매개변수:
| 매개변수 | 설명 |
|---|---|
| Name | 고유한 단계 이름. 사용자 매크로를 지원합니다. 사용자 매크로를 사용하는 경우, 해당 매크로는 웹 모니터링 아이템 이름에서는 해석되지 않은 채로 남는다는 점에 유의하세요. |
| URL | 연결하여 데이터를 가져올 URL. 예를 들면: https://www.example.com http://www.example.com/download 도메인 이름은 유니코드 문자로 지정할 수 있습니다. 웹 시나리오 단계 실행 시 자동으로 퓨니코드(punycode)로 ASCII 변환됩니다. Parse 버튼을 사용하면 URL에서 선택적 쿼리 필드(예: ?name=Admin&password=mypassword)를 분리해, 해당 속성과 값을 자동 URL 인코딩을 위한 Query fields로 옮길 수 있습니다. URL에서는 {macro} 구문을 사용해 변수를 사용할 수 있습니다. 변수는 {{macro}.urlencode()} 구문으로 수동 URL 인코딩할 수 있습니다. 사용자 매크로와 {HOST.*} 매크로를 지원합니다. 2048자로 제한됩니다. |
| Query fields | URL에 대한 HTTP GET 변수. 속성과 값 쌍으로 지정합니다. 값은 자동으로 URL 인코딩됩니다. 시나리오 변수, 사용자 매크로, {HOST.*} 매크로의 값은 해석된 후 자동으로 URL 인코딩됩니다. {{macro}.urlencode()} 구문을 사용하면 이중 URL 인코딩됩니다. 사용자 매크로와 {HOST.*} 매크로를 지원합니다. |
| Post | HTTP POST 변수. Form data 모드에서는 속성과 값 쌍으로 지정합니다. 값은 자동으로 URL 인코딩됩니다. 시나리오 변수, 사용자 매크로, {HOST.*} 매크로의 값은 해석된 후 자동으로 URL 인코딩됩니다. Raw data 모드에서는 속성/값이 한 줄에 표시되며 & 기호로 연결됩니다. raw 값은 {{macro}.urlencode()} 또는 {{macro}.urldecode()} 구문을 사용해 수동으로 URL 인코딩/디코딩할 수 있습니다. 예를 들면: id=2345&userid={user} {user}가 웹 시나리오의 변수로 정의되어 있으면, 단계가 실행될 때 해당 값으로 치환됩니다. 변수를 URL 인코딩하려면 {user}를 {{user}.urlencode()}로 대체하세요. 사용자 매크로와 {HOST.*} 매크로를 지원합니다. |
| Variables | GET 및 POST 함수에 사용할 수 있는 단계 수준 변수. 속성과 값 쌍으로 지정합니다. 단계 수준 변수는 시나리오 수준 변수나 이전 단계의 변수를 덮어씁니다. 다만, 단계 수준 변수의 값은 그다음 단계에만 영향을 미치며(현재 단계에는 영향을 미치지 않음) 적용됩니다. 다음 형식을 따릅니다: {macro}=value {macro}=regex:<regular expression> 자세한 내용은 시나리오 수준의 변수 설명을 참고하세요. 변수는 쿼리 필드나 post 변수의 폼 데이터에서 사용될 때는 자동으로 URL 인코딩되지만, raw post나 URL에 직접 사용될 때는 수동으로 URL 인코딩해야 합니다. |
| Headers | 요청을 수행할 때 전송되는 사용자 지정 HTTP 헤더. 속성과 값 쌍으로 지정합니다. 단계 수준에서 정의한 헤더는 해당 단계에서만 사용됩니다. 단계 수준에서 헤더를 정의하면, 시나리오 수준의 드롭다운 목록에서 'User-Agent'를 선택해 할당된 기본 헤더를 제외한 이전에 정의된 모든 헤더가 자동으로 폐기된다는 점에 유의해야 합니다. 그러나 'User-Agent' 기본 헤더조차도 단계 수준에서 지정하면 재정의할 수 있습니다. 예를 들어, 헤더에 이름을 지정하되 값을 설정하지 않으면 시나리오 수준의 기본 헤더가 해제됩니다. 사용자 매크로와 {HOST.*} 매크로를 지원합니다. 이 설정은 CURLOPT_HTTPHEADER cURL 옵션을 지정합니다. |
| Follow redirects | HTTP 리다이렉트를 따라가려면 체크박스를 표시하세요. 이 설정은 CURLOPT_FOLLOWLOCATION cURL 옵션을 지정합니다. |
| Retrieve mode | 가져오기 모드를 선택하세요: Body - HTTP 응답에서 본문만 가져옵니다 Headers - HTTP 응답에서 헤더만 가져옵니다 Body and headers - HTTP 응답에서 본문과 헤더를 모두 가져옵니다 |
| Timeout | Zabbix는 URL 처리에 설정된 시간을 초과해 소요하지 않습니다(1초부터 최대 1시간까지). 실제로 이 매개변수는 URL에 연결하는 최대 시간과 HTTP 요청을 수행하는 최대 시간을 정의합니다. 따라서 Zabbix는 해당 단계에 2 x Timeout초를 초과해 소요하지 않습니다. 시간 접미사를 지원합니다. 예: 30s, 1m, 1h. 사용자 매크로를 지원합니다. |
| Required string | 필수 정규 표현식 패턴. 가져온 콘텐츠(HTML)가 필수 패턴과 일치하지 않으면 단계가 실패합니다. 비어 있으면 필수 문자열 확인을 수행하지 않습니다. 예를 들면: Homepage of Zabbix Welcome.*admin 참고: 이 필드에서는 Zabbix 프론트엔드에서 만든 정규 표현식을 참조하는 것을 지원하지 않습니다. 사용자 매크로와 {HOST.*} 매크로를 지원합니다. |
| Required status codes | 예상되는 HTTP 상태 코드 목록. Zabbix가 목록에 없는 코드를 받으면 해당 단계는 실패합니다. 비어 있으면 상태 코드 확인을 수행하지 않습니다. 예를 들면: 200,201,210-299 사용자 매크로를 지원합니다. |
웹 시나리오 단계의 변경 사항은 전체 시나리오가 저장될 때만 저장됩니다.
웹 모니터링 단계를 구성하는 방법에 대한 실제 사례도 참고하세요.
태그 구성
Tags 탭에서 시나리오 수준의 태그를 정의할 수 있습니다.

태깅을 통해 웹 시나리오와 웹 모니터링 아이템을 필터링할 수 있습니다.
인증 구성
Authentication 탭에서 시나리오 인증 옵션을 구성할 수 있습니다. 탭 이름 옆의 녹색 점은 일종의 HTTP 인증이 활성화되어 있음을 나타냅니다.

인증 매개변수:
| 매개변수 | 설명 |
|---|---|
| HTTP authentication | 인증 옵션을 선택하세요: None - 인증을 사용하지 않음; Basic - 기본 인증을 사용함; NTLM - NTLM(Windows NT LAN Manager) 인증을 사용함; Kerberos - Kerberos 인증을 사용함(참고: Zabbix에서 Kerberos 구성하기); Digest - Digest 인증을 사용함. |
| User | 사용자 이름을 입력하세요(최대 255자). 이 필드는 HTTP authentication이 Basic, NTLM, Kerberos, Digest로 설정된 경우 사용할 수 있습니다. 사용자 매크로를 지원합니다. |
| Password | 사용자 비밀번호를 입력하세요(최대 255자). 이 필드는 HTTP authentication이 Basic, NTLM, Kerberos, Digest로 설정된 경우 사용할 수 있습니다. 사용자 매크로를 지원합니다. |
| SSL verify peer | 웹 서버의 SSL 인증서를 검증하려면 체크박스를 표시하세요. 서버 인증서는 시스템 전역 인증 기관(CA) 위치에서 자동으로 가져옵니다. Zabbix 서버 또는 프록시 구성 매개변수 SSLCALocation을 사용해 CA 파일의 위치를 재정의할 수 있습니다. 이 설정은 CURLOPT_SSL_VERIFYPEER cURL 옵션을 지정합니다. |
| SSL verify host | 웹 서버 인증서의 Common Name 필드 또는 Subject Alternate Name 필드가 일치하는지 확인하려면 체크박스를 표시하세요. 이 설정은 CURLOPT_SSL_VERIFYHOST cURL 옵션을 지정합니다. |
| SSL certificate file | 클라이언트 인증에 사용되는 SSL 인증서 파일 이름. 인증서 파일은 PEM^1^ 형식이어야 합니다. 인증서 파일에 개인 키도 포함되어 있으면 SSL key file 필드는 비워두세요. 키가 암호화되어 있으면 SSL key password 필드에 비밀번호를 지정하세요. 이 파일이 포함된 디렉터리는 Zabbix 서버 또는 프록시 구성 매개변수 SSLCertLocation으로 지정됩니다. 이 필드에는 HOST.* 매크로와 사용자 매크로를 사용할 수 있습니다.이 설정은 CURLOPT_SSLCERT cURL 옵션을 지정합니다. |
| SSL key file | 클라이언트 인증에 사용되는 SSL 개인 키 파일 이름. 개인 키 파일은 PEM^1^ 형식이어야 합니다. 이 파일이 포함된 디렉터리는 Zabbix 서버 또는 프록시 구성 매개변수 SSLKeyLocation으로 지정됩니다. 이 필드에는 HOST.* 매크로와 사용자 매크로를 사용할 수 있습니다.이 설정은 CURLOPT_SSLKEY cURL 옵션을 지정합니다. |
| SSL key password | SSL 개인 키 파일 비밀번호. 이 필드에는 사용자 매크로를 사용할 수 있습니다. 이 설정은 CURLOPT_KEYPASSWD cURL 옵션을 지정합니다. |
[1] Zabbix는 PEM 형식의 인증서 및 개인 키 파일만 지원합니다. 인증서와 개인 키 데이터가 PKCS #12 형식 파일(보통 확장자가 *.p12 또는 *.pfx)로 되어 있는 경우, 다음 명령을 사용해 PEM 파일을 생성할 수 있습니다:
openssl pkcs12 -in ssl-cert.p12 -clcerts -nokeys -out ssl-cert.pem
openssl pkcs12 -in ssl-cert.p12 -nocerts -nodes -out ssl-cert.key
Zabbix 서버는 재시작 없이 인증서 변경 사항을 적용합니다.
클라이언트 인증서와 개인 키가 단일 파일에 있는 경우, "SSL certificate file" 필드에만 지정하고 "SSL key file" 필드는 비워두세요. 인증서와 키는 여전히 PEM 형식이어야 합니다. 인증서와 키를 결합하는 방법은 간단합니다:
cat client.crt client.key > client.pem
표시
호스트에 구성된 웹 시나리오를 보려면 Monitoring > Hosts로 이동해 목록에서 호스트를 찾은 후 마지막 열의 Web 하이퍼링크를 클릭하세요. 자세한 정보를 보려면 시나리오 이름을 클릭하세요.

웹 시나리오의 개요는 Web monitoring 위젯을 통해 Dashboards에도 표시할 수 있습니다.
웹 시나리오 실행의 최근 결과는 Monitoring > Latest data 섹션에서 확인할 수 있습니다.
확장 모니터링
때로는 수신한 HTML 페이지 콘텐츠를 로그로 남겨야 할 때가 있습니다.
이는 특히 일부 웹 시나리오 단계가 실패했을 때 유용합니다.
디버그 레벨 5(trace)가 이 목적으로 사용됩니다.
이 레벨은 서버 및 프록시 구성 파일에서 설정하거나, 런타임 제어 옵션(-R log_level_increase="http poller,N", 여기서 N은 프로세스 번호)을 사용해 설정할 수 있습니다.
다음 예시는 디버그 레벨 4가 이미 설정된 상태에서 확장 모니터링을 시작하는 방법을 보여줍니다:
# Increase log level of all http pollers:
zabbix_server -R log_level_increase="http poller"
# Increase log level of second http poller:
zabbix_server -R log_level_increase="http poller,2"
확장 웹 모니터링이 더 이상 필요하지 않으면
-R log_level_decrease 옵션을 사용해 중지할 수 있습니다.

