4 Funções de histórico
Todas as funções listadas aqui são suportadas em:
As funções são listadas sem informações adicionais. Clique na função para ver os detalhes completos.
| Função | Descrição |
|---|---|
| change | A quantidade de diferença entre o valor anterior e o mais recente. |
| changecount | O número de mudanças entre valores adjacentes dentro do período de avaliação definido. |
| count | O número de valores dentro do período de avaliação definido. |
| countunique | O número de valores únicos dentro do período de avaliação definido. |
| find | Encontra uma correspondência de valor dentro do período de avaliação definido. |
| first | O primeiro (mais antigo) valor dentro do período de avaliação definido. |
| fuzzytime | Verifica quanto o tempo do agent passivo difere do tempo do Zabbix server/proxy. |
| last | O valor mais recente. |
| logeventid | Verifica se o ID do evento da última entrada de log corresponde a uma expressão regular. |
| logseverity | A severidade do log da última entrada de log. |
| logsource | Verifica se a origem do log da última entrada de log corresponde a uma expressão regular. |
| monodec | Verifica se houve uma diminuição monótona nos valores. |
| monoinc | Verifica se houve um aumento monótono nos valores. |
| nodata | Verifica se não há dados recebidos. |
| percentile | O percentil P de um período, onde P (percentual) é especificado pelo terceiro parâmetro. |
| rate | A taxa média por segundo do aumento em um contador monótono dentro do período de tempo definido. |
Parâmetros comuns
/host/keyé um parâmetro obrigatório comum para as funções que referenciam o histórico de item do host(sec|#num)<:deslocamento de tempo>é um segundo parâmetro comum para as funções que referenciam o histórico de item do host, onde:- sec - período de avaliação máximo em segundos (sufixos de tempo podem ser usados), ou
- #num - intervalo de avaliação máximo nos últimos valores coletados (se precedido por um símbolo de hash)
- deslocamento de tempo (opcional) permite mover o ponto de avaliação para trás no tempo. Veja mais detalhes sobre como especificar o deslocamento de tempo.
Detalhes da função
Algumas observações gerais sobre os parâmetros da função:
- Os parâmetros da função são separados por uma vírgula
- Parâmetros opcionais da função (ou partes do parâmetro) são indicados por
<> - Parâmetros específicos da função são descritos com cada função
- Os parâmetros
/host/keye(sec|#num)<:deslocamento de tempo>nunca devem ser colocados entre aspas
change(/host/key)
A quantidade de diferença entre o valor anterior e o mais recente.
Tipos de valores suportados: Float, Integer, String, Text, Log.
Para strings retorna: 0 - valores são iguais; 1 - valores diferem.
Parâmetros: veja parâmetros comuns.
Comentários:
- A diferença numérica será calculada, conforme visto nestes valores de exemplo recebidos ('valor anterior' e 'valor mais recente' = diferença):
'1' e '5' =+4
'3' e '1' =-2
'0' e '-2.5' =-2.5. - Veja também: abs para comparação.
Exemplos:
change(/host/system.uptime)<0 #a alteração no tempo de atividade do sistema foi negativa desde o último valor (indicando uma reinicialização)
change(/host/system.cpu.load[all,avg1])>2 #a carga da CPU (por um minuto) aumentou em mais de 2 desde o último valor
change(/host/vfs.fs.size[/,free])<-1G #o espaço livre em disco caiu mais de 1 GB entre as verificações
changecount(/host/key,(sec|#num)<:time shift>,<mode>)
O número de alterações entre valores adjacentes dentro do período de avaliação definido.
Tipos de valor suportados: Float, Integer, String, Text, Log.
Parâmetros:
- Veja parâmetros comuns
- mode (deve ser entre aspas duplas) - valores possíveis: all - conta todas as alterações (padrão); dec - conta diminuições; inc - conta aumentos
Para tipos de valor não numéricos, o parâmetro mode é ignorado.
Exemplos:
changecount(/host/icmpping,10m)>5 #o status do ping mudou mais de 5 vezes em 10 minutos
changecount(/host/vfs.file.contents["/sys/class/net/eth0/operstate"],1h)>5 #o estado operacional da eth0 mudou mais de 5 vezes em uma hora
changecount(/host/proc.num[httpd],15m)>10 #o número de processos httpd mudou mais de 10 vezes em 15 minutos
changecount(/host/key,#10,"inc") #o número de aumentos de valor (em relação ao valor adjacente) entre os últimos 10 valores
changecount(/host/key,24h,"dec") #o número de diminuições de valor (em relação ao valor adjacente) nas últimas 24 horas até agora
count(/host/key,(sec|#num)<:time shift>,<operator>,<pattern>)
O número de valores dentro do período de avaliação definido.
Tipos de valores suportados: Float, Integer, String, Text, Log.
Parâmetros:
- Veja parâmetros comuns
- operator (deve ser colocado entre aspas duplas)
operatorssuportados:
eq - igual (padrão para integer, float)
ne - diferente
gt - maior
ge - maior ou igual
lt - menor
le - menor ou igual
like (padrão para string, text, log) - corresponde se contiver o padrão (case-sensitive)
bitand - AND bit a bit
regexp - correspondência case-sensitive da expressão regular fornecida empattern
iregexp - correspondência case-insensitive da expressão regular fornecida empattern - pattern - o padrão necessário (argumentos de string devem ser colocados entre aspas duplas)
Comentários:
- Itens do tipo float correspondem com a precisão de 2.22e-16.
- like não é suportado como operador para valores inteiros.
- like e bitand não são suportados como operadores para valores float.
- Para valores string, text e log, apenas os operadores eq, ne, like, regexp e iregexp são suportados.
- Com bitand como operador, o quarto parâmetro
patternpode ser especificado como dois números, separados por '/': number_to_compare_with/mask. count() calcula o "AND bit a bit" do valor e da mask e compara o resultado com number_to_compare_with. Se o resultado do "AND bit a bit" for igual a number_to_compare_with, o valor é contado.
Se number_to_compare_with e mask forem iguais, apenas a mask precisa ser especificada (sem '/'). - Com regexp ou iregexp como operador, o quarto parâmetro
patternpode ser uma expressão regular comum ou global (começando com '@'). No caso de expressões regulares globais, a sensibilidade a maiúsculas e minúsculas é herdada das configurações da expressão regular global. Para fins de correspondência regexp, valores float sempre serão representados com 4 dígitos decimais após o '.'. Observe também que, para números grandes, a diferença na representação decimal (armazenada no banco de dados) e binária (usada pelo Zabbix server) pode afetar o 4º dígito decimal.
Exemplos:
count(/host/icmpping,30m,,"0")>5 #o ping falhou mais de 5 vezes em 30 minutos
count(/host/key,10m,"like","error") #o número de valores nos últimos 10 minutos até agora que contêm 'error'
count(/host/key,10m,,12) #o número de valores nos últimos 10 minutos até agora que são iguais a '12'
count(/host/key,10m,"gt",12) #o número de valores nos últimos 10 minutos até agora que são maiores que '12'
count(/host/key,#10,"gt",12) #o número de valores nos últimos 10 valores até agora que são maiores que '12'
count(/host/key,10m:now-1d,"gt",12) #o número de valores entre 24 horas e 10 minutos e 24 horas atrás a partir de agora que foram maiores que '12'
count(/host/key,10m,"bitand","6/7") #o número de valores nos últimos 10 minutos até agora que têm '110' (em binário) nos 3 bits menos significativos
count(/host/key,10m:now-1d) #o número de valores entre 24 horas e 10 minutos e 24 horas atrás a partir de agora
countunique(/host/key,(sec|#num)<:time shift>,<operator>,<pattern>)
O número de valores únicos dentro do período de avaliação definido.
Tipos de valores suportados: Float, Integer, String, Text, Log.
Parâmetros:
- Veja parâmetros comuns
- operator (deve ser colocado entre aspas duplas).
operatorssuportados:
eq - igual (padrão para integer, float)
ne - diferente
gt - maior
ge - maior ou igual
lt - menor
le - menor ou igual
like (padrão para string, text, log) - corresponde se contiver o padrão (case-sensitive)
bitand - AND bit a bit
regexp - correspondência case-sensitive da expressão regular fornecida empattern
iregexp - correspondência case-insensitive da expressão regular fornecida empattern - pattern - o padrão necessário (argumentos de string devem ser colocados entre aspas duplas)
Comentários:
- Itens do tipo float correspondem com a precisão de 2.22e-16.
- like não é suportado como operador para valores inteiros.
- like e bitand não são suportados como operadores para valores float.
- Para valores string, text e log, apenas os operadores eq, ne, like, regexp e iregexp são suportados.
- Com bitand como operador, o quarto parâmetro
patternpode ser especificado como dois números, separados por '/': number_to_compare_with/mask. countunique() calcula o "AND bit a bit" do valor e da mask e compara o resultado com number_to_compare_with. Se o resultado do "AND bit a bit" for igual a number_to_compare_with, o valor é contado.
Se number_to_compare_with e mask forem iguais, apenas a mask precisa ser especificada (sem '/'). - Com regexp ou iregexp como operador, o quarto parâmetro
patternpode ser uma expressão regular comum ou global (começando com '@'). No caso de expressões regulares globais, a sensibilidade a maiúsculas e minúsculas é herdada das configurações da expressão regular global. Para fins de correspondência regexp, valores float sempre serão representados com 4 dígitos decimais após o '.'. Observe também que, para números grandes, a diferença na representação decimal (armazenada no banco de dados) e binária (usada pelo Zabbix server) pode afetar o 4º dígito decimal.
Exemplos:
countunique(/host/key,10m) #o número de valores únicos nos últimos 10 minutos até agora
countunique(/host/key,10m,"like","error") #o número de valores únicos nos últimos 10 minutos até agora que contêm 'error'
countunique(/host/key,10m,,12) #o número de valores únicos nos últimos 10 minutos até agora que são iguais a '12'
countunique(/host/key,10m,"gt",12) #o número de valores únicos nos últimos 10 minutos até agora que são maiores que '12'
countunique(/host/key,#10,"gt",12) #o número de valores únicos nos últimos 10 valores até agora que são maiores que '12'
countunique(/host/key,10m:now-1d,"gt",12) #o número de valores únicos entre 24 horas e 10 minutos e 24 horas atrás a partir de agora que eram maiores que '12'
countunique(/host/key,10m,"bitand","6/7") #o número de valores únicos nos últimos 10 minutos até agora que têm '110' (em binário) nos 3 bits menos significativos
countunique(/host/key,10m:now-1d) #o número de valores únicos entre 24 horas e 10 minutos e 24 horas atrás a partir de agora
find(/host/key,(sec|#num)<:time shift>,<operator>,<pattern>)
Encontra uma correspondência de valor dentro do período de avaliação definido.
Tipos de valores suportados: Float, Integer, String, Text, Log.
Retorna: 1 - encontrado; 0 - caso contrário.
Parâmetros:
- Veja parâmetros comuns
- sec ou #num (opcional) - por padrão, utiliza o valor mais recente se não especificado
- operator (deve ser entre aspas duplas)
operatorssuportados:
eq - igual (padrão para integer, float)
ne - diferente
gt - maior
ge - maior ou igual
lt - menor
le - menor ou igual
like (padrão para string, text, log) - corresponde se contiver a string fornecida empattern(diferencia maiúsculas de minúsculas)
bitand - AND bit a bit
regexp - correspondência sensível a maiúsculas/minúsculas da expressão regular fornecida empattern
iregexp - correspondência insensível a maiúsculas/minúsculas da expressão regular fornecida empattern - pattern - o padrão necessário (argumentos de string devem estar entre aspas duplas); expressão regular Perl Compatible Regular Expression (PCRE) se
operatorfor regexp, iregexp
Comentários:
- Se mais de um valor for processado, '1' será retornado se houver pelo menos um valor correspondente.
- like não é suportado como operador para valores integer.
- like e bitand não são suportados como operadores para valores float.
- Para valores string, text e log, apenas os operadores eq, ne, like, regexp e iregexp são suportados.
- Com regexp ou iregexp como operador, o quarto parâmetro
patternpode ser uma expressão regular comum ou global (começando com '@'). No caso de expressões regulares globais, a diferenciação de maiúsculas/minúsculas é herdada das configurações da expressão regular global.
Exemplos:
find(/host/key,10m,"like","error") #encontra um valor que contenha 'error' nos últimos 10 minutos até agora
find(/host/agent.version,,"like","beta")=1 #O agent Zabbix está em versão beta, deve ser atualizado
find(/host/log[/var/log/nginx/access.log],,"regexp"," 500 ")=1 #foi encontrado um erro interno no servidor web
first(/host/key,sec<:time shift>)
O primeiro (mais antigo) valor dentro do período de avaliação definido.
Tipos de valores suportados: Float, Integer, String, Text, Log.
Parâmetros:
- Veja parâmetros comuns
Veja também last().
Exemplo:
first(/host/key,1h) #recupera o valor mais antigo dentro da última hora até agora
fuzzytime(/host/key,sec)
Verifica quanto o tempo do agent passivo difere do tempo do Zabbix server/proxy.
Tipos de valor suportados: Float, Integer.
Retorna: 1 - a diferença entre o valor do item passivo (como timestamp) e o timestamp do Zabbix server/proxy (o relógio da coleta do valor) é menor ou igual a sec segundos; 0 - caso contrário.
Parâmetros:
- Veja parâmetros comuns.
Comentários:
- Normalmente usado com o item 'system.localtime' para verificar se o horário local está sincronizado com o horário local do Zabbix server. Nota que 'system.localtime' deve ser configurado como um cheque passivo para o Zabbix agent; no Zabbix agent 2 pode ser configurado como um cheque ativo.
- Também pode ser usado com a chave
vfs.file.time[/path/file,modify]para verificar se o arquivo não recebeu atualizações por muito tempo. - Esta função não é recomendada para uso em expressões de trigger complexas (com múltiplos items envolvidos), pois pode causar resultados inesperados (a diferença de tempo será medida com a métrica mais recente), por exemplo, em
fuzzytime(/Host/system.localtime,60s)=0 or last(/Host/trap)<>0.
Exemplos:
fuzzytime(/host/system.localtime,5m)=0 #o horário local do cliente difere do horário do Zabbix server/proxy por mais de 5 minutos
fuzzytime(/host/system.localtime,5m)=0 and nodata(/host/system.localtime,10m)=0 #o horário local do cliente difere do horário do Zabbix server/proxy por mais de 5 minutos (enquanto garante que o item não parou de reportar dados)
last(/host/key,<#num<:time shift>>)
O valor mais recente.
Tipos de valores suportados: Float, Integer, String, Text, Log.
Parâmetros:
- Veja parâmetros comuns
- #num (opcional) - o N-ésimo valor mais recente
Comentários:
- Observe que um período de tempo com hashtag (#N) funciona de forma diferente aqui do que com muitas outras funções.
Por exemplo:
last(/host/key)é sempre igual alast(/host/key,#1);last(/host/key,#3)- o terceiro valor mais recente (não os três valores mais recentes). - O Zabbix não garante a ordem exata dos valores se mais de dois valores existirem dentro de um segundo no histórico.
- Veja também first().
Exemplos:
last(/host/key) #recupera o último valor
last(/host/key,#2) #recupera o valor anterior
last(/host/key,#1) <> last(/host/key,#2) #os valores atual e anterior são diferentes
logeventid(/host/key,<#num<:time shift>>,<pattern>)
Verifica se o ID do evento da última entrada de log corresponde a uma expressão regular.
Tipos de valor suportados: Log.
Retorna: 0 - não corresponde; 1 - corresponde.
Parâmetros:
- Veja parâmetros comuns
- #num (opcional) - o N-ésimo valor mais recente
- pattern (opcional) - a expressão regular que descreve o padrão necessário, no estilo Perl Compatible Regular Expression (PCRE) (argumentos de string devem estar entre aspas duplas)
Exemplos:
logeventid(/host/eventlog[Security],,"4625")=1 #uma entrada de log com ID correspondente a "4625" (autenticação falha) encontrada
logeventid(/host/eventlog[System],,"6008|41")=1 #uma entrada de log com ID correspondente a "6008" ou "41" encontrada
logseverity(/host/key,<#num<:time shift>>)
Gravidade do log da última entrada de log.
Tipos de valor suportados: Log.
Retorna: 0 - gravidade padrão; N - gravidade (inteiro, útil para logs de eventos do Windows: 1 - Informação, 2 - Aviso, 4 - Erro, 7 - Falha de Auditoria, 8 - Sucesso de Auditoria, 9 - Crítico, 10 - Detalhado).
Parâmetros:
- Veja parâmetros comuns
- #num (opcional) - o N-ésimo valor mais recente
O Zabbix obtém a gravidade do log a partir do campo Information do log de eventos do Windows.
Exemplos:
logseverity(/host/log[/var/log/syslog],10m)>3 #uma entrada de log com gravidade acima de "3" encontrada
logseverity(/host/eventlog[System],10m)=4 #uma entrada de log com gravidade igual a "Erro" encontrada
logsource(/host/key,<#num<:time shift>>,<pattern>)
Verifica se a fonte do último registro de log corresponde a uma expressão regular.
Tipos de valor suportados: Log.
Retorna: 0 - não corresponde; 1 - corresponde.
Parâmetros:
- Veja parâmetros comuns
- #num (opcional) - o N-ésimo valor mais recente
- pattern (opcional) - a expressão regular que descreve o padrão necessário, no estilo Perl Compatible Regular Expression (PCRE) (argumentos de string devem estar entre aspas duplas)
Normalmente usado para logs de eventos do Windows.
Exemplos:
logsource(/host/eventlog[Application],,"MSSQLSERVER")=1 #um registro de log com fonte correspondente a "MSSQLSERVER" foi encontrado
logsource(/host/eventlog[System],,"Service Control Manager")=1 #um registro de log com fonte correspondente a "Service Control Manager" foi encontrado
logsource(/host/eventlog[System],,"Service Control Manager")=1 and logeventid(/host/eventlog[System],,"7031")=1 #um registro de log com fonte correspondente a "Service Control Manager" e ID de evento correspondente a "7031" foi encontrado
monodec(/host/key,(sec|#num)<:time shift>,<mode>)
Verifica se houve uma diminuição monótona nos valores.
Tipos de valores suportados: Integer.
Retorna: 1 - se todos os elementos no período de tempo diminuírem continuamente; 0 - caso contrário.
Parâmetros:
- Veja parâmetros comuns
- mode (deve estar entre aspas duplas) - weak (cada valor é menor ou igual ao anterior; padrão) ou strict (cada valor diminuiu)
Exemplos:
monodec(/host/system.swap.size[all,free],60s) + monodec(/host2/system.swap.size[all,free],60s) + monodec(/host3/system.swap.size[all,free],60s) #calcula em quantos hosts houve uma diminuição no tamanho da swap livre
monodec(/host/proc.num[nginx],10m,"strict")=1 #o número de processos nginx diminuiu monotonamente em 10 minutos
monoinc(/host/key,(sec|#num)<:time shift>,<mode>)
Verifica se houve um aumento monótono nos valores.
Tipos de valores suportados: Integer.
Retorna: 1 - se todos os elementos no período de tempo aumentarem continuamente; 0 - caso contrário.
Parâmetros:
- Veja parâmetros comuns
- mode (deve ser colocado entre aspas duplas) - weak (todo valor é maior ou igual ao anterior; padrão) ou strict (todo valor aumentou)
Exemplos:
monoinc(/host/system.localtime,#3,"strict")=0 #o horário local do sistema não aumentou consistentemente
monoinc(/host/vfs.dir.count[/mnt/data/logs],24h,"weak")=0 #dispara se a contagem de arquivos estagnar por 24 horas (espera-se que cresça)
nodata(/host/key,sec,<mode>)
Verifica se não há dados recebidos.
Tipos de valores suportados: Integer, Float, Character, Text, Log.
Retorna: 1 - se nenhum dado for recebido durante o período de tempo definido; 0 - caso contrário.
Parâmetros:
- Veja parâmetros comuns
- sec - o período não deve ser inferior a 30 segundos porque o processo history syncer calcula esta função apenas a cada 30 segundos;
nodata(/host/key,0)não é permitido - mode - se definido como strict (entre aspas duplas), esta função será insensível à disponibilidade do proxy (veja os comentários para detalhes)
Comentários:
- os triggers 'nodata' monitorados por proxy são, por padrão, sensíveis à disponibilidade do proxy - se o proxy se tornar indisponível, os triggers 'nodata' não serão disparados imediatamente após a restauração da conexão, mas pularão os dados pelo período de atraso.
Observe que para proxies passivos a supressão é ativada se a conexão for restaurada mais de 15 segundos e não menos de 2 segundos depois.
Para proxies ativos, a supressão é ativada se a conexão for restaurada mais de 15 segundos depois.
Para desativar a sensibilidade à disponibilidade do proxy, use o terceiro parâmetro, por exemplo:
nodata(/host/key,5m,"strict"); neste caso, a função será disparada assim que o período de avaliação (cinco minutos) sem dados tiver passado. - Esta função exibirá um erro se, dentro do período do 1º parâmetro:
- não houver dados e o Zabbix server for reiniciado
- não houver dados e a manutenção for concluída
- não houver dados e o item for adicionado ou reabilitado. - Os erros são exibidos na coluna Info na configuração do trigger.
- Esta função pode não funcionar corretamente se houver diferenças de horário entre o Zabbix server, proxy e agent. Veja também: Requisito de sincronização de horário.
Exemplo:
nodata(/host/agent.ping,5m)=1 #trigger se nenhum dado for recebido do Zabbix agent por 5 minutos
percentile(/host/key,(sec|#num)<:time shift>,percentage)
O percentil P de um período, onde P (percentual) é especificado pelo terceiro parâmetro.
Tipos de valor suportados: Float, Integer.
Parâmetros:
- Veja parâmetros comuns
- percentage - um número de ponto flutuante entre 0 e 100 (inclusive) com até 4 dígitos após o ponto decimal
Exemplos:
percentile(/host/net.if.in[eth0,bytes],1h,95)>1000000 #o percentil 95 da entrada de rede (bytes/seg) em 1 hora ultrapassou um limite (por exemplo, 1 MB/s)
percentile(/host/system.cpu.util,5m,95)>80 #o percentil 95 da porcentagem de tempo de usuário da utilização da CPU ultrapassou 80
percentile(/host/icmppingsec[192.168.0.2],15m,95)>0.15 #a maioria das medições de latência está abaixo de 150 ms, mas a cauda superior (5% superiores) implica em lentidão regular
percentile(/host/net.if.in[eth0,bytes],1h,50) #calcula o percentil 50 (o valor mediano) do tráfego de rede de entrada por uma hora; isso gera um resultado diferente de avg() (a média), pois percentile não considera valores discrepantes
(percentile(/host/net.if.in[eth0,bytes],1h,50)+percentile(/host/net.if.in[eth0,bytes],1h,51))/2 #calcula o valor mediano preciso com um número par de valores por uma hora
rate(/host/key,sec<:time shift>)
A taxa média por segundo do aumento em um contador monotonicamente crescente dentro do período de tempo definido.
Tipos de valor suportados: Float, Integer.
Parâmetros:
- Veja parâmetros comuns
Corresponde funcionalmente ao 'rate' do PromQL.
Exemplos:
rate(/host/key,30s) #se o aumento monotônico em 30 segundos for 20, esta função retorna 0,67.
rate(/host/net.if.in[eth0,bytes],5m)>500000 #a taxa de tráfego de entrada na interface eth0 excedeu 500 KB/s nos últimos 5 minutos
rate(/host/app.requests.count,1m)>100 #o contador de solicitações aumentou em >100 solicitações por segundo no último minuto