en	# 9 Web monitoring
pt-br	# 9. Monitoramento web

en	#### Overview With Zabbix you can check several availability aspects of web sites.\ ::: noteimportant To perform web monitoring Zabbix server must be initially [configured](/manual/installation/install#from_the_sources) with cURL (libcurl) support. ::: To activate web monitoring you need to define web scenarios. A web scenario consists of one or several HTTP requests or "steps". The steps are periodically executed by Zabbix server in a pre-defined order. If a host is monitored by proxy, the steps are executed by the proxy. Web scenarios are attached to hosts/templates in the same way as items, triggers, etc. That means that web scenarios can also be created on a template level and then applied to multiple hosts in one move. The following information is collected in any web scenario: - average download speed per second for all steps of whole scenario - number of the step that failed - last error message The following information is collected in any web scenario step: - download speed per second - response time - response code For more details, see [web monitoring items](/manual/web_monitoring/items). Data collected from executing web scenarios is kept in the database. The data is automatically used for graphs, triggers and notifications. Zabbix can also check if a retrieved HTML page contains a pre-defined string. It can execute a simulated login and follow a path of simulated mouse clicks on the page. Zabbix web monitoring supports both HTTP and HTTPS. When running a web scenario, Zabbix will optionally follow redirects (see option *Follow redirects* below). Maximum number of redirects is hard-coded to 10 (using cURL option [CURLOPT\_MAXREDIRS](http://curl.haxx.se/libcurl/c/CURLOPT_MAXREDIRS.html)). All cookies are preserved during the execution of a single scenario.
pt-br	#### Visão geral Com o Zabbix, você pode verificar vários aspectos de disponibilidade de sites.\ ::: noteimportant Para realizar o monitoramento web, o Zabbix server deve ser inicialmente [configurado](/manual/installation/install#from_the_sources) com suporte a cURL (libcurl). ::: Para ativar o monitoramento web, você precisa definir cenários web. Um cenário web consiste em uma ou várias requisições HTTP ou "etapas". As etapas são executadas periodicamente pelo Zabbix server em uma ordem predefinida. Se um host for monitorado por um proxy, as etapas são executadas pelo proxy. Os cenários web são vinculados a hosts/templates da mesma forma que items, triggers, etc. Isso significa que os cenários web também podem ser criados em nível de template e, em seguida, aplicados a vários hosts de uma só vez. As seguintes informações são coletadas em qualquer cenário web: - velocidade média de download por segundo para todas as etapas de todo o cenário - número da etapa que falhou - última mensagem de erro As seguintes informações são coletadas em qualquer etapa de cenário web: - velocidade de download por segundo - tempo de resposta - código de resposta Para mais detalhes, consulte [itens de monitoramento web](/manual/web_monitoring/items). Os dados coletados a partir da execução de cenários web são mantidos no banco de dados. Os dados são usados automaticamente para gráficos, triggers e notificações. O Zabbix também pode verificar se uma página HTML recuperada contém uma string predefinida. Ele pode executar um login simulado e seguir um caminho de cliques simulados do mouse na página. O monitoramento web do Zabbix suporta HTTP e HTTPS. Ao executar um cenário web, o Zabbix seguirá opcionalmente os redirecionamentos (veja a opção *Seguir redirecionamentos* abaixo). O número máximo de redirecionamentos é codificado como 10 (usando a opção cURL [CURLOPT\_MAXREDIRS](http://curl.haxx.se/libcurl/c/CURLOPT_MAXREDIRS.html)). Todos os cookies são preservados durante a execução de um único cenário.

en	#### Configuring a web scenario To configure a web scenario: - Go to: *Data collection → Hosts* (or *Templates*) - Click on *Web* in the row of the host/template - Click on *Create web scenario* to the right (or on the scenario name to edit an existing scenario) - Enter parameters of the scenario in the form The **Scenario** tab allows you to configure the general parameters of a web scenario. ![](../../assets/en/manual/config/scenario.png) All mandatory input fields are marked with a red asterisk. Scenario parameters: |Parameter|Description| |--|--------| |*Name*|Unique scenario name.<br>[User macros](/manual/config/macros/user_macros) are supported. *Note* that if user macros are used, these macros will be left unresolved in [web monitoring item](/manual/web_monitoring/items) names.| |*Update interval*|How often the scenario will be executed.<br>[Time suffixes](/manual/appendix/suffixes) are supported, e.g. 30s, 1m, 2h, 1d.<br>[User macros](/manual/config/macros/user_macros) are supported. *Note* that if a user macro is used and its value is changed (e.g. 5m → 30s), the next check will be executed according to the previous value (farther in the future with the example values). <br> New web scenarios will be checked within 60 seconds of their creation.| |*Attempts*|The number of attempts for executing web scenario steps. In case of network problems (timeout, no connectivity, etc) Zabbix can repeat executing a step several times. The figure set will equally affect each step of the scenario. Up to 10 attempts can be specified, default value is 1.<br>*Note*: Zabbix will not repeat a step because of a wrong response code or the mismatch of a required string.| |*Agent*|Select a client agent.<br>Zabbix will pretend to be the selected browser. This is useful when a website returns different content for different browsers.<br>User macros can be used in this field.| |*HTTP proxy*|You can specify an HTTP proxy to use, using the format `[protocol://][username[:password]@]proxy.example.com[:port]`.<br>This sets the [CURLOPT\_PROXY](https://curl.haxx.se/libcurl/c/CURLOPT_PROXY.html) cURL option.<br>The optional `protocol://` prefix may be used to specify alternative proxy protocols (the protocol prefix support was added in cURL 7.21.7). With no protocol specified, the proxy will be treated as an HTTP proxy.<br>By default, 1080 port will be used.<br>If specified, the proxy will overwrite proxy related environment variables like http\_proxy, HTTPS\_PROXY. If not specified, the proxy will not overwrite proxy-related environment variables. The entered value is passed on "as is", no sanity checking takes place.<br>You may also enter a SOCKS proxy address. If you specify the wrong protocol, the connection will fail and the item will become unsupported.<br>*Note* that only simple authentication is supported with HTTP proxy.<br>User macros can be used in this field.| |*Variables*|Variables that may be used in scenario steps (URL, post variables).<br>They have the following format:<br>**{macro1}**=value1<br>**{macro2}**=value2<br>**{macro3}**=regex:<regular expression><br>**{macro4}**=jsonpath:<jsonpath><br>**{macro5}**=xmlxpath:<xmlxpath><br>**{macro6}**={{macro}.function()} (see [macro functions](/manual/config/macros/macro_functions))<br>For example:<br>{username}=Alexei<br>{password}=kj3h5kJ34bd<br>{hostid}=regex:hostid is (\[0-9\]+)<br>{url}=jsonpath:$.host_url<br>{status}=xmlxpath://host/response/status<br>{newvar}={{myvar}.btoa()}<br>The macros can then be referenced in the steps as {username}, {password}, {hostid}, etc. Zabbix will automatically replace them with actual values. Note that variables with `regex:` need one step to get the value of the regular expression so the extracted value can only be applied to the step after.<br>If the value part starts with `regex:` then the part after it is treated as a regular expression that searches the web page and, if found, stores the match in the variable. At least one subgroup must be present so that the matched value can be extracted.<br>User macros and {HOST.\*} [macros](/manual/appendix/macros/supported_by_location) are supported.<br>Variables are automatically URL-encoded when used in query fields or form data for post variables, but must be URL-encoded manually when used in raw post or directly in URL.| |*Headers*|HTTP Headers are used when performing a request. Default and custom headers can be used.<br>Headers will be assigned using default settings depending on the Agent type selected from a drop-down list on a scenario level, and will be applied to all the steps, unless they are custom defined on a step level.<br>**It should be noted that defining the header on a step level automatically discards all the previously defined headers, except for a default header that is assigned by selecting the 'User-Agent' from a drop-down list on a scenario level.**<br>However, even the 'User-Agent' default header can be overridden by specifying it on a step level.<br>To unset the header on a scenario level, the header should be named and attributed with no value on a step level.<br>Headers should be listed using the same syntax as they would appear in the HTTP protocol, optionally using some additional features supported by the [CURLOPT\_HTTPHEADER](http://curl.haxx.se/libcurl/c/CURLOPT_HTTPHEADER.html) cURL option.<br>For example:<br>Accept-Charset=utf-8<br>Accept-Language=en-US<br>Content-Type=application/xml; charset=utf-8<br>User macros and {HOST.\*} [macros](/manual/appendix/macros/supported_by_location) are supported.| |*Enabled*|The scenario is active if this box is checked, otherwise - disabled.| Note that when editing an existing scenario, two extra buttons are available in the form: | | | |--|--------| |![](../../assets/en/manual/web_monitoring/buttons_clone.png)|Create another scenario based on the properties of the existing one.| |![](../../assets/en/manual/web_monitoring/buttons_clear.png)|Delete history and trend data for the scenario. This will make the server perform the scenario immediately after deleting the data.| ::: notetip If *HTTP proxy* field is left empty, another way for using an HTTP proxy is to set proxy related environment variables. For HTTP checks - set the **http\_proxy** environment variable for the Zabbix server user. For example, `http_proxy=http://proxy_ip:proxy_port`. For HTTPS checks - set the **HTTPS\_PROXY** environment variable. For example, `HTTPS_PROXY=http://proxy_ip:proxy_port`. More details are available by running a shell command: *\# man curl*. ::: The **Steps** tab allows you to configure the web scenario steps. To add a web scenario step, click on *Add* in the *Steps* block. ![](../../assets/en/manual/config/scenario_b.png){width="600"} ::: noteclassic Secret [user macros](/manual/config/macros/user_macros#configuration) must not be used in URLs as they will resolve to "\*\*\*\*\*\*". :::
pt-br	#### Configurando um cenário web Para configurar um cenário web: - Vá para: *Coleta de dados → Hosts* (ou *Templates*) - Clique em *Web* na linha do host/template - Clique em *Criar cenário web* à direita (ou no nome do cenário para editar um cenário existente) - Insira os parâmetros do cenário no formulário A aba **Cenário** permite configurar os parâmetros gerais de um cenário web. ![](../../assets/en/manual/config/scenario.png) Todos os campos obrigatórios estão marcados com um asterisco vermelho. Parâmetros do cenário: |Parâmetro|Descrição| |--|--------| |*Nome*|Nome único do cenário.<br>[Macros de usuário](/manual/config/macros/user_macros) são suportadas. *Observação*: se macros de usuário forem usadas, essas macros permanecerão não resolvidas nos nomes dos [itens de monitoramento web](/manual/web_monitoring/items).| |*Intervalo de atualização*|Com que frequência o cenário será executado.<br>[Sufixos de tempo](/manual/appendix/suffixes) são suportados, por exemplo, 30s, 1m, 2h, 1d.<br>[Macros de usuário](/manual/config/macros/user_macros) são suportadas. *Observação*: se uma macro de usuário for usada e seu valor for alterado (por exemplo, 5m → 30s), a próxima verificação será executada de acordo com o valor anterior (mais distante no futuro com os valores de exemplo).<br> Novos cenários web serão verificados em até 60 segundos após sua criação.| |*Tentativas*|O número de tentativas para executar as etapas do cenário web. Em caso de problemas de rede (timeout, sem conectividade, etc), o Zabbix pode repetir a execução de uma etapa várias vezes. O valor definido afetará igualmente cada etapa do cenário. Até 10 tentativas podem ser especificadas, o valor padrão é 1.<br>*Observação*: o Zabbix não repetirá uma etapa devido a um código de resposta incorreto ou à incompatibilidade de uma string obrigatória.| |*Agent*|Selecione um agent cliente.<br>O Zabbix irá simular ser o navegador selecionado. Isso é útil quando um site retorna conteúdo diferente para navegadores diferentes.<br>Macros de usuário podem ser usadas neste campo.| |*Proxy HTTP*|Você pode especificar um proxy HTTP para usar, usando o formato `[protocol://][username[:password]@]proxy.example.com[:port]`.<br>Isso define a opção cURL [CURLOPT\_PROXY](https://curl.haxx.se/libcurl/c/CURLOPT_PROXY.html).<br>O prefixo opcional `protocol://` pode ser usado para especificar protocolos de proxy alternativos (o suporte ao prefixo de protocolo foi adicionado no cURL 7.21.7). Sem protocolo especificado, o proxy será tratado como um proxy HTTP.<br>Por padrão, a porta 1080 será usada.<br>Se especificado, o proxy sobrescreverá as variáveis de ambiente relacionadas ao proxy, como http\_proxy, HTTPS\_PROXY. Se não especificado, o proxy não sobrescreverá as variáveis de ambiente relacionadas ao proxy. O valor inserido é passado "como está", sem verificação de sanidade.<br>Você também pode inserir um endereço de proxy SOCKS. Se você especificar o protocolo errado, a conexão falhará e o item se tornará não suportado.<br>*Observação*: apenas autenticação simples é suportada com proxy HTTP.<br>Macros de usuário podem ser usadas neste campo.| |*Variáveis*|Variáveis que podem ser usadas nas etapas do cenário (URL, variáveis post).<br>Elas têm o seguinte formato:<br>**{macro1}**=valor1<br>**{macro2}**=valor2<br>**{macro3}**=regex:<expressão regular><br>**{macro4}**=jsonpath:<jsonpath><br>**{macro5}**=xmlxpath:<xmlxpath><br>**{macro6}**={{macro}.function()} (veja [funções de macro](/manual/config/macros/macro_functions))<br>Por exemplo:<br>{username}=Alexei<br>{password}=kj3h5kJ34bd<br>{hostid}=regex:hostid is (\[0-9\]+)<br>{url}=jsonpath:$.host_url<br>{status}=xmlxpath://host/response/status<br>{newvar}={{myvar}.btoa()}<br>As macros podem então ser referenciadas nas etapas como {username}, {password}, {hostid}, etc. O Zabbix irá substituí-las automaticamente pelos valores reais. Observe que variáveis com `regex:` precisam de uma etapa para obter o valor da expressão regular, para que o valor extraído só possa ser aplicado à etapa seguinte.<br>Se a parte do valor começar com `regex:`, a parte após ela será tratada como uma expressão regular que pesquisa a página web e, se encontrada, armazena a correspondência na variável. Pelo menos um subgrupo deve estar presente para que o valor correspondente possa ser extraído.<br>Macros de usuário e {HOST.\*} [macros](/manual/appendix/macros/supported_by_location) são suportadas.<br>As variáveis são automaticamente codificadas em URL quando usadas em campos de consulta ou dados de formulário para variáveis post, mas devem ser codificadas manualmente quando usadas em post bruto ou diretamente na URL.| |*Cabeçalhos*|Cabeçalhos HTTP são usados ao executar uma requisição. Cabeçalhos padrão e personalizados podem ser usados.<br>Os cabeçalhos serão atribuídos usando as configurações padrão dependendo do tipo de Agent selecionado em uma lista suspensa no nível do cenário e serão aplicados a todas as etapas, a menos que sejam definidos de forma personalizada no nível da etapa.<br>**Deve-se observar que definir o cabeçalho no nível da etapa descarta automaticamente todos os cabeçalhos definidos anteriormente, exceto o cabeçalho padrão que é atribuído selecionando o 'User-Agent' em uma lista suspensa no nível do cenário.**<br>No entanto, mesmo o cabeçalho padrão 'User-Agent' pode ser sobrescrito especificando-o no nível da etapa.<br>Para desabilitar o cabeçalho no nível do cenário, o cabeçalho deve ser nomeado e atribuído sem valor no nível da etapa.<br>Os cabeçalhos devem ser listados usando a mesma sintaxe que apareceriam no protocolo HTTP, opcionalmente usando alguns recursos adicionais suportados pela opção cURL [CURLOPT\_HTTPHEADER](http://curl.haxx.se/libcurl/c/CURLOPT_HTTPHEADER.html).<br>Por exemplo:<br>Accept-Charset=utf-8<br>Accept-Language=en-US<br>Content-Type=application/xml; charset=utf-8<br>Macros de usuário e {HOST.\*} [macros](/manual/appendix/macros/supported_by_location) são suportadas.| |*Ativado*|O cenário está ativo se esta caixa estiver marcada, caso contrário, estará desativado.| Observe que, ao editar um cenário existente, dois botões extras estão disponíveis no formulário: | | | |--|--------| |![](../../assets/en/manual/web_monitoring/buttons_clone.png)|Cria outro cenário com base nas propriedades do cenário existente.| |![](../../assets/en/manual/web_monitoring/buttons_clear.png)|Exclui o histórico e os dados de tendência do cenário. Isso fará com que o server execute o cenário imediatamente após a exclusão dos dados.| ::: notetip Se o campo *Proxy HTTP* for deixado em branco, outra maneira de usar um proxy HTTP é definir variáveis de ambiente relacionadas ao proxy. Para verificações HTTP - defina a variável de ambiente **http\_proxy** para o usuário do Zabbix server. Por exemplo, `http_proxy=http://proxy_ip:proxy_port`. Para verificações HTTPS - defina a variável de ambiente **HTTPS\_PROXY**. Por exemplo, `HTTPS_PROXY=http://proxy_ip:proxy_port`. Mais detalhes estão disponíveis executando o comando shell: *\# man curl*. ::: A aba **Etapas** permite configurar as etapas do cenário web. Para adicionar uma etapa ao cenário web, clique em *Adicionar* no bloco *Etapas*. ![](../../assets/en/manual/config/scenario_b.png){width="600"} ::: noteclassic [Macros de usuário](/manual/config/macros/user_macros#configuration) secretas não devem ser usadas em URLs, pois serão resolvidas como "\*\*\*\*\*\*". :::

en	#### Configuring steps ![](../../assets/en/manual/config/scenario_step.png){width="600"} Step parameters: |Parameter|Description| |--|--------| |*Name*|Unique step name.<br>[User macros](/manual/config/macros/user_macros) are supported. *Note* that if user macros are used, these macros will be left unresolved in [web monitoring item](/manual/web_monitoring/items) names.| |*URL*|URL to connect to and retrieve data. For example:<br>https://www.example.com<br>http://www.example.com/download<br>Domain names can be specified in Unicode characters. They are automatically punycode-converted to ASCII when executing the web scenario step.<br>The *Parse* button can be used to separate optional query fields (like ?name=Admin&password=mypassword) from the URL, moving the attributes and values into *Query fields* for automatic URL-encoding.<br>Variables can be used in the URL, using the {macro} syntax. Variables can be URL-encoded manually using a {{macro}.urlencode()} syntax.<br>User macros and {HOST.\*} [macros](/manual/appendix/macros/supported_by_location) are supported.<br>Limited to 2048 characters.| |*Query fields*|HTTP GET variables for the URL.<br>Specified as attribute and value pairs.<br>Values are URL-encoded automatically. Values from scenario variables, user macros or {HOST.\*} macros are resolved and then URL-encoded automatically. Using a {{macro}.urlencode()} syntax will double URL-encode them.<br>User macros and {HOST.\*} [macros](/manual/appendix/macros/supported_by_location) are supported.| |*Post*|HTTP POST variables.<br>In **Form data** mode, specified as attribute and value pairs.<br>Values are URL-encoded automatically. Values from scenario variables, user macros or {HOST.\*} macros are resolved and then URL-encoded automatically.<br>In **Raw data** mode, attributes/values are displayed on a single line and concatenated with a **&** symbol.<br>Raw values can be URL-encoded/decoded manually using a {{macro}.urlencode()} or {{macro}.urldecode()} syntax.<br>For example: id=2345&userid={user}<br>If {user} is defined as a variable of the web scenario, it will be replaced by its value when the step is executed. If you wish to URL-encode the variable, substitute {user} with {{user}.urlencode()}.<br>User macros and {HOST.\*} [macros](/manual/appendix/macros/supported_by_location) are supported.| |*Variables*|Step-level variables that may be used for GET and POST functions.<br>Specified as attribute and value pairs.<br>Step-level variables override scenario-level variables or variables from the previous step. However, the value of a step-level variable only affects the step after (and not the current step).<br>They have the following format:<br>**{macro}**=value<br>**{macro}**=regex:<regular expression><br>For more information see variable description on the [scenario](web_monitoring#configuring_a_web_scenario) level.<br>Variables are automatically URL-encoded when used in query fields or form data for post variables, but must be URL-encoded manually when used in raw post or directly in URL.| |*Headers*|Custom HTTP headers that will be sent when performing a request.<br>Specified as attribute and value pairs.<br>A header defined on a step level will be used for that particular step.<br>**It should be noted that defining the header on a step level automatically discards all the previously defined headers, except for a default header that is assigned by selecting the 'User-Agent' from a drop-down list on a scenario level.**<br>However, even the 'User-Agent' default header can be overridden by specifying it on a step level.<br>For example, assigning the name to a header, but setting no value will unset the default header on a scenario level.<br>User macros and {HOST.\*} macros are supported.<br>This sets the [CURLOPT\_HTTPHEADER](http://curl.haxx.se/libcurl/c/CURLOPT_HTTPHEADER.html) cURL option.| |*Follow redirects*|Mark the checkbox to follow HTTP redirects.<br>This sets the [CURLOPT\_FOLLOWLOCATION](http://curl.haxx.se/libcurl/c/CURLOPT_FOLLOWLOCATION.html) cURL option.| |*Retrieve mode*|Select the retrieve mode:<br>**Body** - retrieve only body from the HTTP response<br>**Headers** - retrieve only headers from the HTTP response<br>**Body and headers** - retrieve body and headers from the HTTP response| |*Timeout*|Zabbix will not spend more than the set amount of time on processing the URL (from one second to maximum of 1 hour). Actually this parameter defines the maximum time for making connection to the URL and maximum time for performing an HTTP request. Therefore, Zabbix will not spend more than **2 x Timeout** seconds on the step.<br>[Time suffixes](/manual/appendix/suffixes) are supported, e.g. 30s, 1m, 1h. [User macros](/manual/config/macros/user_macros) are supported.| |*Required string*|Required regular expression pattern.<br>Unless retrieved content (HTML) matches the required pattern the step will fail. If empty, no check on required string is performed.<br>For example:<br>Homepage of Zabbix<br>Welcome.\*admin<br>*Note*: Referencing [regular expressions](regular_expressions) created in the Zabbix frontend is not supported in this field.<br>User macros and {HOST.\*} [macros](/manual/appendix/macros/supported_by_location) are supported.| |*Required status codes*|List of expected HTTP status codes. If Zabbix gets a code which is not in the list, the step will fail.<br>If empty, no check on status codes is performed.<br>For example: 200,201,210-299<br>User macros are supported.| ::: noteclassic Any changes in web scenario steps will only be saved when the whole scenario is saved. ::: See also a [real-life example](/manual/web_monitoring/example) of how web monitoring steps can be configured.
pt-br	#### Configurando etapas ![](../../assets/en/manual/config/scenario_step.png){width="600"} Parâmetros da etapa: |Parâmetro|Descrição| |--|--------| |*Nome*|Nome único da etapa.<br>[Macros de usuário](/manual/config/macros/user_macros) são suportadas. *Observe* que se macros de usuário forem usadas, essas macros permanecerão não resolvidas nos nomes dos [itens de monitoramento web](/manual/web_monitoring/items).| |*URL*|URL para conectar e recuperar dados. Por exemplo:<br>https://www.exemplo.com.br<br>http://www.exemplo.com.br/download<br>Nomes de domínio podem ser especificados em caracteres Unicode. Eles são automaticamente convertidos para ASCII em punycode ao executar a etapa do cenário web.<br>O botão *Analisar* pode ser usado para separar campos de consulta opcionais (como ?name=Admin&password=mypassword) da URL, movendo os atributos e valores para *Campos de consulta* para codificação automática da URL.<br>Variáveis podem ser usadas na URL, usando a sintaxe {macro}. Variáveis podem ser codificadas manualmente usando a sintaxe {{macro}.urlencode()}.<br>Macros de usuário e {HOST.\*} [macros](/manual/appendix/macros/supported_by_location) são suportadas.<br>Limitado a 2048 caracteres.| |*Campos de consulta*|Variáveis HTTP GET para a URL.<br>Especificadas como pares de atributo e valor.<br>Os valores são codificados automaticamente. Valores de variáveis de cenário, macros de usuário ou macros {HOST.\*} são resolvidos e então codificados automaticamente. Usar a sintaxe {{macro}.urlencode()} irá codificá-los duas vezes.<br>Macros de usuário e {HOST.\*} [macros](/manual/appendix/macros/supported_by_location) são suportadas.| |*Post*|Variáveis HTTP POST.<br>No modo **Dados do formulário**, especificadas como pares de atributo e valor.<br>Os valores são codificados automaticamente. Valores de variáveis de cenário, macros de usuário ou macros {HOST.\*} são resolvidos e então codificados automaticamente.<br>No modo **Dados brutos**, atributos/valores são exibidos em uma única linha e concatenados com o símbolo **&**.<br>Valores brutos podem ser codificados/decodificados manualmente usando a sintaxe {{macro}.urlencode()} ou {{macro}.urldecode()}.<br>Por exemplo: id=2345&userid={user}<br>Se {user} for definida como uma variável do cenário web, ela será substituída por seu valor quando a etapa for executada. Se você deseja codificar a variável, substitua {user} por {{user}.urlencode()}.<br>Macros de usuário e {HOST.\*} [macros](/manual/appendix/macros/supported_by_location) são suportadas.| |*Variáveis*|Variáveis no nível da etapa que podem ser usadas para funções GET e POST.<br>Especificadas como pares de atributo e valor.<br>Variáveis no nível da etapa substituem variáveis no nível do cenário ou variáveis da etapa anterior. No entanto, o valor de uma variável no nível da etapa só afeta a etapa seguinte (e não a etapa atual).<br>Elas têm o seguinte formato:<br>**{macro}**=valor<br>**{macro}**=regex:<expressão regular><br>Para mais informações, consulte a descrição da variável no nível do [cenário](web_monitoring#configuring_a_web_scenario).<br>As variáveis são automaticamente codificadas quando usadas em campos de consulta ou dados de formulário para variáveis post, mas devem ser codificadas manualmente quando usadas em post bruto ou diretamente na URL.| |*Cabeçalhos*|Cabeçalhos HTTP personalizados que serão enviados ao executar uma requisição.<br>Especificados como pares de atributo e valor.<br>Um cabeçalho definido no nível da etapa será usado para aquela etapa específica.<br>**Deve-se observar que definir o cabeçalho no nível da etapa descarta automaticamente todos os cabeçalhos definidos anteriormente, exceto o cabeçalho padrão que é atribuído selecionando o 'User-Agent' em uma lista suspensa no nível do cenário.**<br>No entanto, até mesmo o cabeçalho padrão 'User-Agent' pode ser substituído ao especificá-lo no nível da etapa.<br>Por exemplo, atribuir o nome a um cabeçalho, mas não definir valor, irá desativar o cabeçalho padrão no nível do cenário.<br>Macros de usuário e macros {HOST.\*} são suportadas.<br>Isso define a opção cURL [CURLOPT\_HTTPHEADER](http://curl.haxx.se/libcurl/c/CURLOPT_HTTPHEADER.html).| |*Seguir redirecionamentos*|Marque a caixa de seleção para seguir redirecionamentos HTTP.<br>Isso define a opção cURL [CURLOPT\_FOLLOWLOCATION](http://curl.haxx.se/libcurl/c/CURLOPT_FOLLOWLOCATION.html).| |*Modo de recuperação*|Selecione o modo de recuperação:<br>**Corpo** - recupera apenas o corpo da resposta HTTP<br>**Cabeçalhos** - recupera apenas os cabeçalhos da resposta HTTP<br>**Corpo e cabeçalhos** - recupera corpo e cabeçalhos da resposta HTTP| |*Timeout*|O Zabbix não gastará mais do que o tempo definido no processamento da URL (de um segundo até o máximo de 1 hora). Na verdade, este parâmetro define o tempo máximo para fazer a conexão com a URL e o tempo máximo para executar uma requisição HTTP. Portanto, o Zabbix não gastará mais do que **2 x Timeout** segundos na etapa.<br>[Sufixos de tempo](/manual/appendix/suffixes) são suportados, por exemplo, 30s, 1m, 1h. [Macros de usuário](/manual/config/macros/user_macros) são suportadas.| |*String obrigatória*|Padrão de expressão regular obrigatório.<br>A menos que o conteúdo recuperado (HTML) corresponda ao padrão obrigatório, a etapa falhará. Se estiver vazio, nenhuma verificação de string obrigatória será realizada.<br>Por exemplo:<br>Página inicial do Zabbix<br>Bem-vindo.\*admin<br>*Observação*: Referenciar [expressões regulares](regular_expressions) criadas no frontend do Zabbix não é suportado neste campo.<br>Macros de usuário e {HOST.\*} [macros](/manual/appendix/macros/supported_by_location) são suportadas.| |*Códigos de status obrigatórios*|Lista de códigos de status HTTP esperados. Se o Zabbix receber um código que não está na lista, a etapa falhará.<br>Se estiver vazio, nenhuma verificação de códigos de status será realizada.<br>Por exemplo: 200,201,210-299<br>Macros de usuário são suportadas.| ::: noteclassic Quaisquer alterações nas etapas do cenário web só serão salvas quando todo o cenário for salvo. ::: Veja também um [exemplo real](/manual/web_monitoring/example) de como as etapas de monitoramento web podem ser configuradas.

en	#### Configuring tags The **Tags** tab allows to define scenario-level [tags](/manual/config/tagging). ![](../../assets/en/manual/config/scenario_c.png) Tagging allows to filter web scenarios and web monitoring [items](/manual/web_monitoring/items).
pt-br	#### Configurando etiquetas A aba de **Etiquetas** permite definir [etiquetas](/manual/config/tagging) no nível de cenário. ![](../../assets/en/manual/config/scenario_c.png) A etiquetagem permite filtrar cenários web e [itens](/manual/web_monitoring/items) de monitoramento web.

en	#### Configuring authentication The **Authentication** tab allows you to configure scenario authentication options. A green dot next to the tab name indicates that some type of HTTP authentication is enabled. ![](../../assets/en/manual/config/scenario_d.png) Authentication parameters: |Parameter|Description| |--|--------| |*HTTP authentication*|Select the authentication option:<br>**None** - no authentication used;<br>**Basic** - basic authentication is used;<br>**NTLM** - NTLM ([Windows NT LAN Manager](http://en.wikipedia.org/wiki/NTLM)) authentication is used;<br>**Kerberos** - Kerberos authentication is used (see also: [Configuring Kerberos with Zabbix](/manual/appendix/items/kerberos));<br>**Digest** - Digest authentication is used.| |*User*|Enter the user name (up to 255 characters).<br>This field is available if *HTTP authentication* is set to Basic, NTLM, Kerberos, or Digest. User macros are supported. | |*Password*|Enter the user password (up to 255 characters).<br>This field is available if *HTTP authentication* is set to Basic, NTLM, Kerberos, or Digest. User macros are supported. | |*SSL verify peer*|Mark the checkbox to verify the SSL certificate of the web server.<br>The server certificate will be automatically taken from system-wide certificate authority (CA) location. You can override the location of CA files using Zabbix server or proxy configuration parameter [SSLCALocation](/manual/appendix/config/zabbix_server#sslcalocation).<br>This sets the [CURLOPT\_SSL\_VERIFYPEER](http://curl.haxx.se/libcurl/c/CURLOPT_SSL_VERIFYPEER.html) cURL option.| |*SSL verify host*|Mark the checkbox to verify that the *Common Name* field or the *Subject Alternate Name* field of the web server certificate matches.<br>This sets the [CURLOPT\_SSL\_VERIFYHOST](http://curl.haxx.se/libcurl/c/CURLOPT_SSL_VERIFYHOST.html) cURL option.| |*SSL certificate file*|Name of the SSL certificate file used for client authentication. The certificate file must be in PEM^1^ format. If the certificate file contains also the private key, leave the *SSL key file* field empty. If the key is encrypted, specify the password in *SSL key password* field. The directory containing this file is specified by Zabbix server or proxy configuration parameter [SSLCertLocation](/manual/appendix/config/zabbix_server).<br>`HOST.*` macros and user macros can be used in this field.<br>This sets the [CURLOPT\_SSLCERT](http://curl.haxx.se/libcurl/c/CURLOPT_SSLCERT.html) cURL option.| |*SSL key file*|Name of the SSL private key file used for client authentication. The private key file must be in PEM^1^ format. The directory containing this file is specified by Zabbix server or proxy configuration parameter [SSLKeyLocation](/manual/appendix/config/zabbix_server).<br>`HOST.*` macros and user macros can be used in this field.<br>This sets the [CURLOPT\_SSLKEY](http://curl.haxx.se/libcurl/c/CURLOPT_SSLKEY.html) cURL option.| |*SSL key password*|SSL private key file password.<br>User macros can be used in this field.<br>This sets the [CURLOPT\_KEYPASSWD](http://curl.haxx.se/libcurl/c/CURLOPT_KEYPASSWD.html) cURL option.| ::: noteimportant \[1\] Zabbix supports certificate and private key files in PEM format only. In case you have your certificate and private key data in PKCS \#12 format file (usually with extension \*.p12 or \*.pfx) you may generate the PEM file from it using the following commands: openssl pkcs12 -in ssl-cert.p12 -clcerts -nokeys -out ssl-cert.pem openssl pkcs12 -in ssl-cert.p12 -nocerts -nodes -out ssl-cert.key ::: ::: noteclassic Zabbix server picks up changes in certificates without a restart. ::: ::: noteclassic If you have client certificate and private key in a single file just specify it in a "SSL certificate file" field and leave "SSL key file" field empty. The certificate and key must still be in PEM format. Combining certificate and key is easy: cat client.crt client.key > client.pem :::
pt-br	#### Configurando autenticação A aba **Autenticação** permite configurar as opções de autenticação do cenário. Um ponto verde ao lado do nome da aba indica que algum tipo de autenticação HTTP está habilitado. ![](../../assets/en/manual/config/scenario_d.png) Parâmetros de autenticação: |Parâmetro|Descrição| |--|--------| |*Autenticação HTTP*|Selecione a opção de autenticação:<br>**Nenhuma** - nenhuma autenticação é usada;<br>**Básica** - autenticação básica é usada;<br>**NTLM** - autenticação NTLM ([Windows NT LAN Manager](http://en.wikipedia.org/wiki/NTLM)) é usada;<br>**Kerberos** - autenticação Kerberos é usada (veja também: [Configurando Kerberos com o Zabbix](/manual/appendix/items/kerberos));<br>**Digest** - autenticação Digest é usada.| |*Usuário*|Informe o nome do usuário (até 255 caracteres).<br>Este campo está disponível se *Autenticação HTTP* estiver definida como Básica, NTLM, Kerberos ou Digest. Macros de usuário são suportadas.| |*Senha*|Informe a senha do usuário (até 255 caracteres).<br>Este campo está disponível se *Autenticação HTTP* estiver definida como Básica, NTLM, Kerberos ou Digest. Macros de usuário são suportadas.| |*Verificar par SSL*|Marque a caixa para verificar o certificado SSL do servidor web.<br>O certificado do servidor será obtido automaticamente do local da autoridade certificadora (CA) do sistema. Você pode sobrescrever o local dos arquivos CA usando o parâmetro de configuração do Zabbix server ou proxy [SSLCALocation](/manual/appendix/config/zabbix_server#sslcalocation).<br>Isso define a opção cURL [CURLOPT\_SSL\_VERIFYPEER](http://curl.haxx.se/libcurl/c/CURLOPT_SSL_VERIFYPEER.html).| |*Verificar host SSL*|Marque a caixa para verificar se o campo *Common Name* ou o campo *Subject Alternate Name* do certificado do servidor web corresponde.<br>Isso define a opção cURL [CURLOPT\_SSL\_VERIFYHOST](http://curl.haxx.se/libcurl/c/CURLOPT_SSL_VERIFYHOST.html).| |*Arquivo de certificado SSL*|Nome do arquivo de certificado SSL usado para autenticação do cliente. O arquivo de certificado deve estar no formato PEM^1^. Se o arquivo de certificado também contiver a chave privada, deixe o campo *Arquivo de chave SSL* em branco. Se a chave estiver criptografada, especifique a senha no campo *Senha da chave SSL*. O diretório que contém este arquivo é especificado pelo parâmetro de configuração do Zabbix server ou proxy [SSLCertLocation](/manual/appendix/config/zabbix_server).<br>Macros `HOST.*` e macros de usuário podem ser usadas neste campo.<br>Isso define a opção cURL [CURLOPT\_SSLCERT](http://curl.haxx.se/libcurl/c/CURLOPT_SSLCERT.html).| |*Arquivo de chave SSL*|Nome do arquivo de chave privada SSL usado para autenticação do cliente. O arquivo de chave privada deve estar no formato PEM^1^. O diretório que contém este arquivo é especificado pelo parâmetro de configuração do Zabbix server ou proxy [SSLKeyLocation](/manual/appendix/config/zabbix_server).<br>Macros `HOST.*` e macros de usuário podem ser usadas neste campo.<br>Isso define a opção cURL [CURLOPT\_SSLKEY](http://curl.haxx.se/libcurl/c/CURLOPT_SSLKEY.html).| |*Senha da chave SSL*|Senha do arquivo de chave privada SSL.<br>Macros de usuário podem ser usadas neste campo.<br>Isso define a opção cURL [CURLOPT\_KEYPASSWD](http://curl.haxx.se/libcurl/c/CURLOPT_KEYPASSWD.html).| ::: noteimportant \[1\] O Zabbix suporta apenas arquivos de certificado e chave privada no formato PEM. Caso você tenha seu certificado e chave privada em um arquivo no formato PKCS \#12 (geralmente com extensão \*.p12 ou \*.pfx), você pode gerar o arquivo PEM a partir dele usando os seguintes comandos: openssl pkcs12 -in ssl-cert.p12 -clcerts -nokeys -out ssl-cert.pem openssl pkcs12 -in ssl-cert.p12 -nocerts -nodes -out ssl-cert.key ::: ::: noteclassic O Zabbix server aplica alterações em certificados sem necessidade de reiniciar. ::: ::: noteclassic Se você tiver o certificado do cliente e a chave privada em um único arquivo, basta especificá-lo no campo "Arquivo de certificado SSL" e deixar o campo "Arquivo de chave SSL" em branco. O certificado e a chave ainda devem estar no formato PEM. Combinar o certificado e a chave é fácil: cat client.crt client.key > client.pem :::

en	#### Display To view web scenarios configured for a host, go to *Monitoring → Hosts*, locate the host in the list and click on the *Web* hyperlink in the last column. Click on the scenario name to get detailed information. ![](../../assets/en/manual/web_monitoring/scenario_details2.png){width="600"} An overview of web scenarios can also be displayed in *Dashboards* by the Web monitoring widget. Recent results of the web scenario execution are available in the *Monitoring → Latest data* section.
pt-br	#### Exibição Para visualizar os cenários web configurados para um host, vá para *Monitoramento → Hosts*, localize o host na lista e clique no hiperlink *Web* na última coluna. Clique no nome do cenário para obter informações detalhadas. ![](../../assets/en/manual/web_monitoring/scenario_details2.png){width="600"} Uma visão geral dos cenários web também pode ser exibida em *Dashboards* pelo widget de Monitoramento Web. Os resultados recentes da execução do cenário web estão disponíveis na seção *Monitoramento → Últimos dados*.

en	#### Extended monitoring Sometimes it is necessary to log received HTML page content. This is especially useful if some web scenario step fails. Debug level 5 (trace) serves that purpose. This level can be set in [server](/manual/appendix/config/zabbix_server#debuglevel) and [proxy](/manual/appendix/config/zabbix_proxy#debuglevel) configuration files or using a [runtime control](/manual/concepts/server#runtime-control) option (`-R log_level_increase="http poller,N"`, where N is the process number). The following examples demonstrate how extended monitoring can be started provided debug level 4 is already set: # 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" If extended web monitoring is not required it can be stopped using the `-R log_level_decrease` option.
pt-br	#### Monitoramento estendido Às vezes, é necessário registrar o conteúdo da página HTML recebida. Isso é especialmente útil se alguma etapa do cenário web falhar. O nível de depuração 5 (trace) serve para esse propósito. Esse nível pode ser definido nos arquivos de configuração do [server](/manual/appendix/config/zabbix_server#debuglevel) e do [proxy](/manual/appendix/config/zabbix_proxy#debuglevel) ou usando uma opção de [controle em tempo de execução](/manual/concepts/server#runtime-control) (`-R log_level_increase="http poller,N"`, onde N é o número do processo). Os exemplos a seguir demonstram como o monitoramento estendido pode ser iniciado, desde que o nível de depuração 4 já esteja definido: # Aumentar o nível de log de todos os http pollers: zabbix_server -R log_level_increase="http poller" # Aumentar o nível de log do segundo http poller: zabbix_server -R log_level_increase="http poller,2" Se o monitoramento web estendido não for necessário, ele pode ser interrompido usando a opção `-R log_level_decrease`.