Esta é uma tradução da página de documentação original em inglês. Ajude-nos a torná-la melhor.

Sidebar

Zabbix Summit 2022
Register for Zabbix Summit 2022

4 Pré-processamento JavaScript

Visão geral

Esta seção fornece detalhes de pré-processamento por JavaScript.

Pré-processamento JavaScript

O pré-processamento JavaScript é feito pela invocação da função JavaScript com um único parâmetro 'valor' e um corpo de função fornecido pelo usuário. O resultado da etapa de pré-processamento é o valor retornado desta função, por exemplo, para executar a conversão de Fahrenheit para Celsius o usuário deve informar:

return (valor - 32)  * 5 / 9

nos parâmetros de pré-processamento JavaScript, que será embutida em uma função JavaScript pelo Server:

function (valor)
       {
          return (valor - 32) * 5 / 9
       }

O parâmetro de entrada 'valor' é sempre passado como um string. O valor de retorno é automaticamente forçado para um string através do método ToString() (se ele falhar então o erro é retornado como um valor string), com algumas poucas exceções:

  • retornando valor indefinido resultará em um erro
  • retornando valor null fará com que o valor de entrada seja descartado, muito semelhante ao pré-processamento 'Descartar valor' em uma ação 'Customizado em caso de falha'.

Erros podem ser retornados pelo lançamento de valores/objetos (normalmente strings ou objetos Erro).

Por exemplo:

if (valor == 0)
           throw "Valor de entrada zero"
       return 1/valor

Cada script tem um tempo limite de execução de 10 segundos (dependendo do script pode ser levado mais tempo que o limite para engatilhar); excedê-lo retornará um erro. Um limite de heap de 64 megabyte é imposto.

O bytecode da etapa de pré-processamento JavaScript é guardado em cache e reutilizado quando a etapa é aplicada na próxima vez. Quaisquer alterações às etapas de pré-processamento do item farão com que o script em cache seja redefinido e recompilado posteriormente.

Falhas em tempo de execução consecutivas (3 em sequência) farão com que o mecanismo seja reiniciado para mitigar a possibilidade de um script quebrar a execução dos próximos scripts (esta ação é registrada em log com DebugLevel 4 e maior).

O pré-processamento JavaScript é implementado com o mecanismo JavaScript Duktape (https://duktape.org/).

Veja também: Objetos JavaScript adicionais e funções globais

Utilização de macros nos scripts

É possível usar macros de usuário no código JavaScript. Se um script contém macros de usuário, estas macros são resolvidas pelo Server/Proxy antes da execução das etapas de pré-processamento específicas. Note que quando testando etapas de pré-processamento no Frontend, os valores de macro não serão puxados e precisam ser informados manualmente.

O contexto é ignorado quando uma macro é substituída com seu valor. O valor da macro é inserido no código como está, não é possível adicionar escapes adicionais antes de colocar o valor no código JavaScript. Por favor, esteja ciente que isto pode causar erros de JavaScript em alguns casos.

Em um exemplo abaixo, se o valor recebido excede um valor de {$THRESHOLD} de macro, o valor de threshold (se presente) será retornado em vez disso:

var threshold = '{$THRESHOLD}';
       return (!isNaN(threshold) && value > threshold) ? threshold : value;