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:
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:
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.
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).
Os par?metros de fun??o permitem especificar:
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.
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'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 |
Os par?metros da fun??o podem conter outras express?es, como as seguintes sintaxe:
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)
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:
(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 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.
A carga do processador est¨¢ muito alta no servidor Áú»¢¶Ä²©.
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.
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.
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.
Algu¨¦m est¨¢ baixando um arquivo grande da Internet.
Uso da fun??o min:
A express?o ¨¦ verdadeira quando o n¨²mero de bytes recebidos na eth0 ¨¦ maior que de 100 KB nos ¨²ltimos 5 minutos.
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:
A express?o ¨¦ verdadeira quando os dois servidores SMTP est?o inativos em ambos smtp1.example.com e smtp2.example.com.
O agente Áú»¢¶Ä²© precisa ser atualizado.
Uso da fun??o find():
A express?o ser¨¢ verdadeira se o Áú»¢¶Ä²© Agent tiver a vers?o beta8.
O servidor n?o pode ser acessado.
A express?o ser¨¢ verdadeira se o host "example.example.com" estiver inacess¨ªvel mais de mais de 5 vezes nos ¨²ltimos 30 minutos.
Nenhum batimento card¨ªaco nos ¨²ltimos 3 minutos.
Uso da fun??o nodata():
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.
Atividade da CPU no per¨ªodo noturno.
Uso da fun??o time():
O acionador pode mudar seu estado para problema somente no per¨ªodo noturno (00:00 - 06:00).
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).
Verificar se a hora local do cliente est¨¢ sincronizada com a hora do servidor Áú»¢¶Ä²©.
Uso da fun??o fuzzytime():
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).
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
).
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.
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%.
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.
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])
Compara??o de dois valores de string - os operandos s?o:
Problema: detectar altera??es na consulta DNS
A chave do item ¨¦:
com macros definidas como
e normalmente retorna:
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.
Compara??o de dois valores de string - os operandos s?o:
Problema: detectar se o conte¨²do do arquivo /tmp/hello
¨¦ igual a:
Op??o 1) escrever a string diretamente
Observe como os caracteres \?e " s?o escapados quando a cadeia de caracteres ¨¦ comparada diretamente.
Op??o 2) usar uma macro
na express?o:
Compara??o de per¨ªodos de longo prazo.
Problema: a carga do servidor Exchange aumentou em mais de 10% lameses
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 Áú»¢¶Ä²©.
?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:
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!
A temperatura na sala do servidor est¨¢ muito alta.
Express?o do problema:
Express?o de recupera??o:
O espa?o livre em disco ¨¦ muito baixo.
Express?o do problema: ¨¦ inferior a 10 GB nos ¨²ltimos 5 minutos
Express?o de recupera??o: ¨¦ mais de 40 GB nos ¨²ltimos 10 minutos
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:
nodata()
¨¦ avaliada independentemente do fato de o item referenciado ser suportado ou n?o.1 or some_function(unsupported_item1) or some_function(unsupported_item2) or ...
" pode ser avaliada para um resultado conhecido ("1" ou "Problema"),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".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.