Áú»¢¶Ä²©

2 Express?o de acionamento

Vis?o geral

As express?es usadas em triggers s?o muito flex¨ªveis. Voc¨º pode us¨¢-las para criar testes l¨®gicos complexos relacionados a estat¨ªsticas monitoradas.

Uma express?o simples usa uma fun??o que ¨¦ aplicada ao item com alguns par?metros. A fun??o retorna um resultado que ¨¦ comparado ao limiar, usando um operador e uma constante.

A sintaxe de uma express?o simples ¨²til ¨¦ fun??o(/host/key,par?metro)<operator><constant>.

Por exemplo:

  min(/Áú»¢¶Ä²© server/net.if.in[eth0,bytes],5m)>100K

ser¨¢ acionado se o n¨²mero de bytes recebidos durante os ¨²ltimos cinco minutos foi sempre superior a 100 kilobytes.

Embora a sintaxe seja exatamente a mesma, do ponto de vista funcional existem dois tipos de express?es de acionamento:

  • express?o de problema - define as condi??es do problema
  • express?o de recupera??o (opcional) - define condi??es adicionais de resolu??o do problema

Ao definir apenas uma express?o de problema, essa express?o ser¨¢ usada como o limite do problema e o limite de recupera??o do problema. Assim que assim que a express?o do problema for avaliada como TRUE, haver¨¢ um problema. Assim que assim que a express?o do problema for avaliada como FALSE, o problema ser¨¢ resolvido.

Ao definir tanto a express?o do problema quanto a express?o de recupera??o suplementar suplementar, a resolu??o do problema se torna mais complexa: n?o apenas a a express?o do problema precisa ser FALSA, mas tamb¨¦m a express?o de recupera??o precisa ser deve ser VERDADEIRA. Isso ¨¦ ¨²til para criar histerese (#hysteresis) e evitar disparo de gatilho.

Fun??es

As fun??es permitem calcular os valores coletados (m¨¦dia, m¨ªnimo, m¨¢ximo, soma), localizar cadeias de caracteres, fazer refer¨ºncia ¨¤ hora atual e outros fatores.

Uma lista completa de fun??es suportadas est¨¢ dispon¨ªvel.

Normalmente, as fun??es retornam valores num¨¦ricos para compara??o. Ao retornar strings, a compara??o ¨¦ poss¨ªvel com os operadores = e <> (consulte example).

Par?metros de fun??o

Os par?metros de fun??o permitem especificar:

  • chave do host e do item (fun??es que fazem refer¨ºncia apenas ao hist¨®rico do item do host)
  • par?metros espec¨ªficos da fun??o
  • outras express?es (n?o dispon¨ªveis para fun??es que fazem refer¨ºncia ao hist¨®rico de itens do host) hist¨®rico de itens do host, consulte outras express?es para exemplos)

O host e a chave do item podem ser especificados como /host/key. O item referenciado deve estar em um estado suportado (exceto para a fun??o nodata(), que tamb¨¦m ¨¦ calculada para itens sem suporte).

Embora outras express?es de acionamento como par?metros de fun??o sejam limitadas a fun??es n?o hist¨®ricas em acionadores, essa limita??o n?o se aplica em itens calculados.

Par?metros espec¨ªficos da fun??o

Os par?metros espec¨ªficos da fun??o s?o colocados ap¨®s a chave do item e s?o separados da chave do item por uma v¨ªrgula. Consulte a se??o supported fun??es para obter uma lista completa desses par?metros.

A maioria das fun??es num¨¦ricas aceita a hora como par?metro. Voc¨º pode usar segundos ou time suffixes para indicar o tempo. Precedido por uma marca de hash, o par?metro tem um significado diferente:

Express?o Descri??o
sum(/host/key,10m) Soma dos valores nos ¨²ltimos 10 minutos
sum(/host/key,#10) Soma dos ¨²ltimos dez valores.

Os par?metros com uma marca de hash t¨ºm um significado diferente com a fun??o last - eles denotam o en¨¦simo valor anterior, portanto, dados os valores 3, 7, 2, 6, 5 (do mais recente para o menos recente):

  • last(/host/key,#2) retornaria '7'
  • last(/host/key,#5) retornaria '5'
Turno de tempo

Um deslocamento de tempo opcional ¨¦ suportado com contagem de tempo ou valor como par?metro de fun??o par?metro de fun??o. Esse par?metro permite fazer refer¨ºncia a dados de um per¨ªodo de tempo no passado.

O deslocamento de tempo come?a com now - especificando a hora atual, e ¨¦ seguida por +N<time unit> ou -N<time unit> - para adicionar ou subtrair N unidades de tempo.

Por exemplo, avg(/host/key,1h:now-1d) retornar¨¢ o valor m¨¦dio para uma hora, um dia atr¨¢s.

A mudan?a de hor¨¢rio especificada em meses (M) e anos (y) ¨¦ compat¨ªvel apenas com fun??es de tend¨ºncia. Outras fun??es suportam segundos (s), minutos (m), horas (h), dias (d) e semanas (w).

Mudan?a de hor¨¢rio com per¨ªodos de tempo absolutos

Per¨ªodos de tempo absolutos s?o aceitos no par?metro de mudan?a de hor¨¢rio, por exemplo, meia-noite ¨¤ meia-noite para um dia, de segunda a domingo para uma semana, do primeiro dia ao ¨²ltimo dia do m¨ºs para um m¨ºs do m¨ºs para um m¨ºs.

A mudan?a de hor¨¢rio para per¨ªodos de tempo absolutos come?a com now - especificando a hora atual, e ¨¦ seguida por qualquer n¨²mero de opera??es de tempo: /<time unit> - define o in¨ªcio e o fim da unidade de tempo, por por exemplo, da meia-noite ¨¤ meia-noite de um dia, +N<time unit> ou -N<time unit> - para adicionar ou subtrair N unidades de tempo.

Observe que o valor do deslocamento de tempo pode ser maior ou igual a 0, enquanto o valor m¨ªnimo do per¨ªodo de tempo ¨¦ 1.

Parameter Description
1d:now/d Yesterday
1d:now/d+1d Today
2d:now/d+1d ?ltimos 2 dias
1w:now/w ?ltima semana
1w:now/w+1w Esta semana
Outras express?es

Os par?metros da fun??o podem conter outras express?es, como as seguintes sintaxe:

min(min(/host/key,1h),min(/host2/key2,1h)*10)

Observe que outras express?es n?o poder?o ser usadas se a fun??o fizer refer¨ºncia ao hist¨®rico do item. Por exemplo, a sintaxe a seguir n?o ¨¦ permitida:

`min(/host/key,#5*10)

Operadores

Os seguintes operadores s?o suportados para acionadores (em ordem decrescente de prioridade de execu??o):

Prioridade Operador Defini??o Notas para valores desconhecidos Force cast operand to float 1
1 - Un¨¢rio menos -Desconhecido ¡ú Desconhecido Sim
2 not Logical NOT not* Desconhecido ¡ú Desconhecido Sim
**Multiplica??o 0 * Desconhecido ¡ú Desconhecido
(sim, Desconhecido, n?o 0 - para n?o perder
Desconhecido em opera??es aritm¨¦ticas)
1.2 * Desconhecido ¡ú Desconhecido
Sim
/ Division Unknown / 0 ¡ú error
Unknown / 1.2 ¡ú Unknown
0.0 / Unknown ¡ú Unknown
Yes
4 + Aritm¨¦tica mais 1,2 + Desconhecido ¡ú Desconhecido Sim
- Menos aritm¨¦tica 1,2 - Desconhecido ¡ú Desconhecido Sim
5 < Menos que. O operador ¨¦ definido como:

A<B ? (A<B-0.000001)
1.2 < Desconhecido ¡ú Desconhecido Sim
<= Menos que ou igual a. O operador ¨¦ definido como:

A<=B ? (A¡ÜB+0,000001)
Desconhecido <= Desconhecido ¡ú Desconhecido Sim
> Mais de. O operador ¨¦ definido como:

A>B ? (A>B+0,000001)
Sim
>= Mais que ou igual a. O operador ¨¦ definido como:

A>=B ? (A¡ÝB-0.000001)
Sim
6 = ? igual. O operador ¨¦ definido como:

A=B ? (A¡ÝB-0,000001) e (A¡ÜB+0,000001)
No 1
<> N?o ¨¦ igual. O operador ¨¦ definido como:

A<>B ? (A<B-0.000001) or (A>B+0,000001)
No 1
7 e Logical AND 0 e Desconhecido ¡ú 0
1 e Desconhecido ¡ú Desconhecido
Desconhecido e Desconhecido ¡ú Desconhecido
Sim
8 or Logical OR 1 ou Desconhecido ¡ú 1
0 ou Desconhecido ¡ú Desconhecido
Desconhecido ou Desconhecido ¡ú Desconhecido
Sim

1 O operando de cadeia de caracteres ainda ¨¦ convertido em num¨¦rico se:

  • outro operando for num¨¦rico
  • um operador diferente de = ou <> for usado em um operando

(Se a convers?o falhar, o operando num¨¦rico ¨¦ convertido em um operando de cadeia de caracteres e ambos os operandos s?o comparados como strings)

os operadores not, and** e or diferenciam mai¨²sculas de min¨²sculas e devem estar em min¨²sculas. Eles tamb¨¦m devem ser cercados por espa?os ou par¨ºnteses.

Todos os operadores, exceto os un¨¢rios - e not, t¨ºm associatividade da esquerda para a direita associatividade da esquerda para a direita. Os un¨¢rios - e not s?o n?o associativos (ou seja -(-1) e not (not 1) devem ser usados em vez de --1 e n?o n?o 1).

Resultado da avalia??o:

  • <, <=, >, >=, =, <> os operadores devem gerar '1' na express?o do acionador se a rela??o especificada for verdadeira e '0' se for falsa especificada for verdadeira e '0' se for falsa. Se pelo menos um operando for Desconhecido, o resultado ser¨¢ Desconhecido;
  • e para operandos conhecidos produzir¨¢ '1' se ambos os operandos forem iguais a '0'; caso contr¨¢rio, produzir¨¢ '0'; para operandos desconhecidos e** produzir¨¢ '0' somente se um operando for comparado como igual a '0'; caso contr¨¢rio, produzir¨¢ 'Desconhecido';
  • ou para operandos conhecidos produzir¨¢ '1' se qualquer um de seus operandos comparados a '0'; caso contr¨¢rio, produzir¨¢ '0'; para operandos desconhecidos ou produzir¨¢ '1' somente se um dos operandos for diferente de '0'; caso contr¨¢rio, produzir¨¢ 'Desconhecido';
  • O resultado do operador de nega??o l¨®gica not para um operando conhecido ¨¦ o resultado do operador de nega??o l¨®gica not para um operando conhecido ¨¦ '0' se o valor de seu operando for diferente de '0'; '1' se o valor de seu operando for igual a '0'. Para operando desconhecido operando not produz 'Desconhecido'.

Cache de valores

Os valores necess¨¢rios para a avalia??o da trigger s?o armazenados em cache pelo Áú»¢¶Ä²© Server. Por esse motivo, a avalia??o do acionador causa uma carga maior no banco de dados por banco de dados por algum tempo ap¨®s a reinicializa??o do servidor. O cache de valores n?o ¨¦ limpo quando os valores do hist¨®rico do item s?o removidos (manualmente ou pelo housekeeper), portanto o servidor usar¨¢ os valores armazenados em cache at¨¦ que eles sejam mais antigos do que os per¨ªodos de tempo definidos nas fun??es de acionamento ou o servidor seja reiniciado.

Exemplos de acionadores

Exemplo 1

A carga do processador est¨¢ muito alta no servidor Áú»¢¶Ä²©.

last(/Áú»¢¶Ä²© server/system.cpu.load[all,avg1])>5

Ao usar a fun??o "last()", estamos fazendo refer¨ºncia ao valor mais recente mais recente. o /Áú»¢¶Ä²© server/system.cpu.load[all,avg1] fornece um nome curto do par?metro monitorado o par?metro monitorado. Ele especifica que o host ¨¦ "Áú»¢¶Ä²© server e a chave que est¨¢ sendo monitorada ¨¦ 'system.cpu.load[all,avg1]'. Finalmente, >5 significa que o acionador est¨¢ no estado PROBLEM sempre que a medi??o de carga do processador mais recente do Áú»¢¶Ä²© mais recente da carga do processador do servidor Áú»¢¶Ä²© for maior que 5.

Exemplo 2

o site www.example.com est¨¢ sobrecarregado.

last(/www.example.com/system.cpu.load[all,avg1])>5 or min(/www.example.com/system.cpu.load[all,avg1],10m)>2

A express?o ¨¦ verdadeira quando a carga atual do processador ¨¦ maior que 5 ou a carga do processador foi superior a 2 nos ¨²ltimos 10 minutos.

Exemplo 3

o arquivo /etc/passwd foi alterado.

last(/www.example.com/vfs.file.cksum[/etc/passwd],#1)<>last(/www.example.com/vfs.file.cksum[/etc/passwd],#2)

A express?o ¨¦ verdadeira quando o valor anterior da soma de verifica??o de /etc/passwd for diferente do mais recente.

Express?es semelhantes podem ser ¨²teis para monitorar altera??es em arquivos arquivos importantes, como /etc/passwd, /etc/inetd.conf, /kernel etc.

Exemplo 4

Algu¨¦m est¨¢ baixando um arquivo grande da Internet.

Uso da fun??o min:

min(/www.example.com/net.if.in[eth0,bytes],5m)>100K

A express?o ¨¦ verdadeira quando o n¨²mero de bytes recebidos na eth0 ¨¦ maior que de 100 KB nos ¨²ltimos 5 minutos.

Exemplo 5

Os dois n¨®s do servidor SMTP em cluster est?o fora do ar.

Observe o uso de dois hosts diferentes em uma express?o:

last(/smtp1.example.com/net.tcp.service[smtp])=0 e last(/smtp2.example.com/net.tcp.service[smtp])=0

A express?o ¨¦ verdadeira quando os dois servidores SMTP est?o inativos em ambos smtp1.example.com e smtp2.example.com.

Exemplo 6

O agente Áú»¢¶Ä²© precisa ser atualizado.

Uso da fun??o find():

find(/example.example.com/agent.version,, "like", "beta8")=1

A express?o ser¨¢ verdadeira se o Áú»¢¶Ä²© Agent tiver a vers?o beta8.

Exemplo 7

O servidor n?o pode ser acessado.

count(/example.example.com/icmpping,30m,, "0")>5

A express?o ser¨¢ verdadeira se o host "example.example.com" estiver inacess¨ªvel mais de mais de 5 vezes nos ¨²ltimos 30 minutos.

Exemplo 8

Nenhum batimento card¨ªaco nos ¨²ltimos 3 minutos.

Uso da fun??o nodata():

nodata(/example.example.com/tick,3m)=1

Para utilizar esse acionador, o 'tick' deve ser definido como um Áú»¢¶Ä²© trapper. O host deve enviar periodicamente dados para esse item usando zabbix_sender. Se nenhum dado for recebidos em 180 segundos, o valor do acionador se tornar¨¢ PROBLEM.

Observe que "nodata" pode ser usado para qualquer tipo de item.

Exemplo 9

Atividade da CPU no per¨ªodo noturno.

Uso da fun??o time():

min(/Áú»¢¶Ä²© server/system.cpu.load[all,avg1],5m)>2 e time()<060000

O acionador pode mudar seu estado para problema somente no per¨ªodo noturno (00:00 - 06:00).

Exemplo 10

Atividade da CPU a qualquer momento com exce??o.

Uso da fun??o time() e do operador not:

min(/zabbix/system.cpu.load[all,avg1],5m)>2
       e n?o (dayofweek()=7 e time()>230000)
       and not (dayofweek()=1 and time()<010000)

O acionador pode mudar seu estado para problema a qualquer momento, exceto por 2 horas em uma mudan?a de semana (domingo, 23:00 - segunda-feira, 01:00).

Exemplo 11

Verificar se a hora local do cliente est¨¢ sincronizada com a hora do servidor Áú»¢¶Ä²©.

Uso da fun??o fuzzytime():

fuzzytime(/MySQL_DB/system.localtime,10s)=0

O acionador mudar¨¢ para o estado de problema caso a hora local no servidor do servidor MySQL_DB e do servidor Áú»¢¶Ä²© for diferente em mais de 10 segundos. Observe que que o "system.localtime" deve ser configurado como uma verifica??o [passiva check] (/manual/appendix/items/activepassive#passive_checks).

Exemplo 12

Compara??o da carga m¨¦dia de hoje com a carga m¨¦dia do mesmo hor¨¢rio ontem (usando a mudan?a de hor¨¢rio como now-1d).

avg(/server/system.cpu.load,1h)/avg(/server/system.cpu.load,1h:now-1d)>2

Esse acionador ser¨¢ disparado se a carga m¨¦dia da ¨²ltima hora superar a carga m¨¦dia da mesma hora de ontem mais de duas vezes.

Exemplo 13

Usar o valor de outro item para obter um limite de acionamento:

last(/Template PfSense/hrStorageFree[{#SNMPVALUE}])<last(/Template PfSense/hrStorageSize[{#SNMPVALUE}])*0.1

O acionador ser¨¢ disparado se o armazenamento livre cair abaixo de 10%.

Exemplo 14

Usando resultado da avalia??o para obter o n¨²mero de acionadores acima de um limite:

(last(/server1/system.cpu.load[all,avg1])>5) + (last(/server2/system.cpu.load[all,avg1])>5) + (last(/server3/system.cpu.load[all,avg1])>5)>=2

O acionador ser¨¢ acionado se pelo menos dois dos acionadores na express?o estiverem em um estado problem¨¢tico.

Exemplo 15

Compara??o de valores de string de dois itens - os operandos aqui s?o fun??es que retornam strings.

Problema: criar um alerta se a vers?o do Ubuntu for diferente em diferentes hosts

last(/NY Áú»¢¶Ä²© server/vfs.file.contents[/etc/os-release])<>last(/LA Áú»¢¶Ä²© server/vfs.file.contents[/etc/os-release])
Exemplo 16

Compara??o de dois valores de string - os operandos s?o:

  • uma fun??o que retorna uma string
  • uma combina??o de macros e strings

Problema: detectar altera??es na consulta DNS

A chave do item ¨¦:

net.dns.record[8.8.8.8,{$WEBSITE_NAME},{$DNS_RESOURCE_RECORD_TYPE},2,1]

com macros definidas como

{$WEBSITE_NAME} = example.com
       {$DNS_RESOURCE_RECORD_TYPE} = MX

e normalmente retorna:

example.com MX 0 mail.example.com

Portanto, nossa express?o de acionamento para detectar se o resultado da consulta ao DNS se desviou do resultado esperado ¨¦:

last(/Áú»¢¶Ä²© server/net.dns.record[8.8.8.8,{$WEBSITE_NAME},{$DNS_RESOURCE_RECORD_TYPE},2,1])<>"{$WEBSITE_NAME} {$DNS_RESOURCE_RECORD_TYPE} 0 mail.{$WEBSITE_NAME}"

Observe as aspas ao redor do segundo operando.

Exemplo 17

Compara??o de dois valores de string - os operandos s?o:

  • uma fun??o que retorna uma string
  • uma constante de string com caracteres especiais \ e "

Problema: detectar se o conte¨²do do arquivo /tmp/hello ¨¦ igual a:

\" //hello ?\"

Op??o 1) escrever a string diretamente

last(/Áú»¢¶Ä²© server/vfs.file.contents[/tmp/hello])="\\\" //hello ?\\\\""

Observe como os caracteres \?e " s?o escapados quando a cadeia de caracteres ¨¦ comparada diretamente.

Op??o 2) usar uma macro

{$HELLO_MACRO} = \" //hello ?\"

na express?o:

last(/Áú»¢¶Ä²© server/vfs.file.contents[/tmp/hello])={$HELLO_MACRO}
Exemplo 18

Compara??o de per¨ªodos de longo prazo.

Problema: a carga do servidor Exchange aumentou em mais de 10% lameses

trendavg(/Exchange/system.cpu.load,1M:now/M)>1.1*trendavg(/Exchange/system.cpu.load,1M:now/M-1M)

Voc¨º tamb¨¦m pode usar a op??o Event name na configura??o do acionador para criar uma mensagem de alerta significativa, por exemplo, para receber algo como

"A carga do servidor Exchange aumentou em 24% in de julho (0,69) em compara??o com junho (0,56)"

o nome do evento deve ser definido como:

Load of {HOST.HOST} server increased by {{?100*trendavg(//system.cpu.load,1M:now/M)/trendavg(//system.cpu.load,1M:now/M-1M)}.fmtnum(0)}% in {{TIME}.fmttime(%B,-1M)} ({{?trendavg(//system.cpu.load,1M:now/M)}.fmtnum(2)}) comparing to {{TIME}.fmttime(%B,-2M)} ({{?trendavg(//system.cpu.load,1M:now/M-1M)}.fmtnum(2)})

Tamb¨¦m ¨¦ ¨²til permitir o fechamento manual na configura??o do acionador para esse tipo de problema esse tipo de problema.

Voc¨º tem um exemplo de trigger expressions que pode ser ¨²til para outras pessoas? Utilize o formul¨¢rio Example suggestion form para envi¨¢-lo aos desenvolvedores do Áú»¢¶Ä²©.

Histerese

?s vezes, ¨¦ necess¨¢rio um intervalo entre os estados de problema e de recupera??o, em vez de um simples limite. Por exemplo, se quisermos definir um que informe um problema quando a temperatura da sala do servidor for superior a 20¡ãC e quisermos que ele permane?a no estado de problema at¨¦ que a temperatura caia para menos de 15¡ãC, um simples limite de disparo de 20¡ãC n?o ser¨¢ suficiente.

Em vez disso, precisamos definir uma express?o de acionamento para o evento problem¨¢tico primeiro (temperatura acima de 20¡ãC). Em seguida, precisamos definir uma condi??o de recupera??o adicional (temperatura abaixo de 15¡ãC). Isso ¨¦ feito definindo um par?metro par?metro adicional Express?o de recupera??o quando defining um acionador.

Nesse caso, a recupera??o do problema ocorrer¨¢ em duas etapas:

  • Primeiro, a express?o do problema (temperatura acima de 20¡ãC) ter¨¢ de ser avaliada como FALSA
  • Segundo, a express?o de recupera??o (temperatura abaixo de 15¡ãC) dever¨¢ ser avaliada como TRUE

A express?o de recupera??o ser¨¢ avaliada somente quando o evento de problema for resolvido primeiro.

O fato de a express?o de recupera??o ser VERDADEIRA por si s¨® n?o resolve um problema se a express?o do problema ainda for VERDADEIRA!

Exemplo 1

A temperatura na sala do servidor est¨¢ muito alta.

Express?o do problema:

last(/server/temp)>20

Express?o de recupera??o:

last(/server/temp)<=15
Exemplo 2

O espa?o livre em disco ¨¦ muito baixo.

Express?o do problema: ¨¦ inferior a 10 GB nos ¨²ltimos 5 minutos

max(/server/vfs.fs.size[/,free],5m)<10G

Express?o de recupera??o: ¨¦ mais de 40 GB nos ¨²ltimos 10 minutos

min(/server/vfs.fs.size[/,free],10m)>40G

Express?es com operandos desconhecidos

Em geral, um operando desconhecido (como um item n?o suportado) na express?o far¨¢ com que o valor do acionador seja imediatamente convertido em Unknown.

Entretanto, em alguns casos, operandos desconhecidos (itens n?o suportados, erros de fun??o) s?o admitidos na avalia??o da express?o:

  • A fun??o nodata() ¨¦ avaliada independentemente do fato de o item referenciado ser suportado ou n?o.
  • As express?es l¨®gicas com OR e AND podem ser avaliadas para valores conhecidos em dois casos, independentemente dos operandos desconhecidos:
    • Caso 1: "1 or some_function(unsupported_item1) or some_function(unsupported_item2) or ..." pode ser avaliada para um resultado conhecido ("1" ou "Problema"),
    • Caso 2: "0 and some_function(unsupported_item1) and some_function(unsupported_item2) and ..." pode ser avaliado com um resultado conhecido ('0' ou "OK") O Áú»¢¶Ä²© tenta avaliar essas express?es l¨®gicas usando itens n?o suportados itens n?o suportados como operandos desconhecidos. Nos dois casos acima, ser¨¢ produzido um valor conhecido ("Problema" ou "OK", respectivamente); em todos os outros casos, o acionador ser¨¢ avaliado como "Desconhecido".
  • Se a avalia??o da fun??o para um item suportado resultar em erro, o valor da fun??o se torna Desconhecido e participa como operando desconhecido em outras avalia??es de express?o.

Observe que os operandos desconhecidos podem "desaparecer" somente em express?es l¨®gicas, conforme descritas acima. Em express?es aritm¨¦ticas, os operandos desconhecidos sempre levam ao o resultado Desconhecido (exceto divis?o por 0).

Uma express?o que resulta em Unknown n?o altera o estado do acionador ("Problem/OK"). Portanto, se era "Problema" (consulte o Caso 1), ele permanece no mesmo estado de problema mesmo que a parte conhecida seja resolvida ("1" se torna "OK") seja resolvida ('1' se torna '0'), porque a express?o agora ¨¦ avaliada como Unknown e isso n?o altera o estado do acionador.

Se uma express?o de acionamento com v¨¢rios itens n?o suportados for avaliada como Unknown, a mensagem de erro no frontend se refere ao ¨²ltimo item item sem suporte avaliado.