A descoberta de baixo nível fornece uma maneira de criar itens automaticamente, gatilhos e gráficos para diferentes entidades em um computador. Por exemplo, O Zabbix pode iniciar automaticamente o monitoramento de sistemas de arquivos ou rede interfaces em sua máquina, sem a necessidade de criar itens para cada sistema de arquivos ou interface de rede manualmente. Além disso, é possível configurar o Zabbix para remover entidades desnecessárias automaticamente com base em resultados reais da descoberta realizada periodicamente.
Um usuário pode definir seus próprios tipos de descoberta, desde que siga um determinado protocolo JSON.
A arquitetura geral do processo de descoberta é a seguinte.
Primeiro, um usuário cria uma regra de descoberta em "Configuração" → "Modelos" → Coluna "Descoberta". Uma regra de descoberta consiste em (1) um item que descobre as entidades necessárias (por exemplo, sistemas de arquivos ou rede interfaces) e (2) protótipos de itens, gatilhos e gráficos que deve ser criado com base no valor desse item.
Um item que descobre as entidades necessárias é como um item normal visto em outro lugar: o servidor pede a um agente Zabbix (ou qualquer que seja o tipo de o item está definido como) para um valor desse item, o agente responde com um valor textual. A diferença é que o valor com o qual o agente responde deve conter uma lista de entidades descobertas em um formato JSON. Enquanto o detalhes deste formato são importantes apenas para implementadores de verificações de descoberta, é necessário saber que o valor retornado contém uma lista de macro → pares de valores. Por exemplo, artigo "net.if.discovery" pode retornar dois pares: "{#IFNAME}" → "lo" e "{#IFNAME}" → "eth0".
Essas macros são usadas em nomes, chaves e outros campos de protótipo onde eles são então substituídos pelos valores recebidos para criar itens, gatilhos, gráficos ou mesmo hosts para cada entidade descoberta. Ver a lista completa de opções para usar macros LLD.
Quando o servidor recebe um valor para um item de descoberta, ele verifica o macro → pares de valor e para cada par gera itens reais, gatilhos, e gráficos, com base em seus protótipos. No exemplo com "net.if.discovery" acima, o servidor geraria um conjunto de itens, gatilhos e gráficos para a interface de loopback "lo", e outro conjunto para a interface "eth0".
Observe que desde o Zabbix 4.2, o formato do JSON retornado por as regras de descoberta de baixo nível foram alteradas. Não é mais esperado que o JSON conterá o objeto "data". A descoberta de baixo nível agora aceite um JSON normal contendo um array, para dar suporte a novos recursos como o pré-processamento do valor do item e caminhos personalizados para valores de macro de descoberta de baixo nível em um documento JSON.
As chaves de descoberta integradas foram atualizadas para retornar uma matriz de linhas LLD na raiz do documento JSON. Zabbix irá extrair automaticamente uma macro e valor se um campo de matriz usar a sintaxe {#MACRO} como chave. Qualquer novo as verificações de descoberta nativa usarão a nova sintaxe sem os "dados" elementos. Ao processar primeiro um valor de descoberta de baixo nível, a raiz é localizado (array em $.
ou $.data
).
Embora o elemento "data" tenha sido removido de todos os itens nativos relacionados para descoberta, para compatibilidade com versões anteriores, o Zabbix ainda aceitará o Notação JSON com um elemento "data", embora seu uso seja desencorajado. Se o JSON contém um objeto com apenas um elemento de matriz "data", então ele irá extrair automaticamente o conteúdo do elemento usando JSONPath $.dados
. A descoberta de baixo nível agora aceita LLD opcional definido pelo usuário macros com um caminho personalizado especificado na sintaxe JSONPath.
Como resultado das mudanças acima, os agentes mais novos não mais será capaz de trabalhar com um servidor Zabbix mais antigo.
Veja também: Entidades descobertas
Ilustraremos a descoberta de baixo nível com base em um exemplo de arquivo descoberta do sistema.
Para configurar a descoberta, faça o seguinte:
O formulário de regra de descoberta contém cinco guias, representando, da esquerda para certo, o fluxo de dados durante a descoberta:
A guia Regra de descoberta contém a chave do item a ser usada para descoberta (assim como alguns atributos gerais da regra de descoberta):
Todos os campos de entrada obrigatórios estão marcados com um asterisco vermelho.
Parâmetro | Descrição |
---|---|
Nome | Nome da regra de descoberta. |
Type | O tipo de verificação para realizar a descoberta. Neste exemplo, estamos usando uma chave de item do agente Zabbix. A regra de descoberta também pode ser um item dependente, dependendo de um item normal. Não pode depender de outra regra de descoberta. Para um item dependente, selecione o respectivo tipo (Item dependente) e especifique o item mestre no campo 'Item mestre'. O item mestre deve existir. |
Key | Insira a chave do item de descoberta (até 2.048 caracteres). Por exemplo, você pode usar a chave de item "vfs.fs.discovery" integrada para retornar um JSON com a lista de sistemas de arquivos presentes no computador e seus tipos. Observe que outra opção para descoberta do sistema de arquivos é usar os resultados da descoberta pela chave de agente "vfs.fs.get", suportada desde o Zabbix 4.4.5 (veja exemplo). |
Intervalo de atualização | Este campo especifica com que frequência o Zabbix realiza a descoberta. No início, quando você está apenas configurando a descoberta do sistema de arquivos, você pode querer configurá-lo para um pequeno intervalo, mas quando souber que funciona, você pode configurá-lo para 30 minutos ou mais, porque os sistemas de arquivos geralmente não mudam com muita frequência . Sufixos de tempo são suportados, por exemplo 30s, 1m, 2h, 1d, desde o Zabbix 3.4.0. Macros de usuário são suportados, desde o Zabbix 3.4.0. Observação: O intervalo de atualização só pode ser definido como '0' se existirem intervalos personalizados com um valor diferente de zero. Se definido como '0' e existir um intervalo personalizado (flexível ou programado) com um valor diferente de zero, o item será pesquisado durante a duração do intervalo personalizado. Observe que, para uma regra de descoberta existente, a descoberta pode ser executado imediatamente pressionando o botão Check now (#form_buttons). |
Intervalos personalizados | Você pode criar regras personalizadas para verificar o item: Flexível - cria uma exceção para o Intervalo de atualização (intervalo com frequência diferente) Agendamento - cria um agendamento de pesquisa personalizado. Para obter informações detalhadas, consulte Intervalos personalizados. O agendamento é suportado desde o Zabbix 3.0.0. |
Período de manutenção de recursos perdidos | Este campo permite especificar a duração por quanto tempo a entidade descoberta será retida (não será excluída) quando seu status de descoberta se tornar "Não mais descoberta" (entre 1 hora a 25 anos; ou "0"). Sufixos de tempo são suportados, por exemplo 2h, 1d, desde o Zabbix 3.4.0. Macros de usuário são suportados, desde o Zabbix 3.4.0. Nota: Se definido como "0", entidades serão excluídas imediatamente. O uso de "0" não é recomendado, pois apenas editar erroneamente o filtro pode acabar na entidade que está sendo excluída com todos os dados históricos. |
Descrição | Digite uma descrição. |
Ativado | Se marcado, a regra será processada. |
O histórico da regra de descoberta não é preservado.
A guia Pré-processamento permite definir as regras de transformação a serem aplicadas ao resultado da descoberta. Uma ou várias transformações são possíveis nesta etapa. As transformações são executadas na ordem em que são definidos. Todo o pré-processamento é feito pelo servidor Zabbix.
Veja também:
Tipo | Transformação | Descrição |
---|---|---|
Texto | ||
Expressão regular | Faça corresponder o valor recebido à expressão regular <pattern> e substitua o valor pela <saída> extraída. A expressão regular oferece suporte à extração de no máximo 10 grupos capturados com a sequência \N. Parâmetros: padrão - expressão regular saída - modelo de formatação de saída. Uma sequência de escape \N (onde N=1…9) é substituída pelo enésimo grupo correspondente. Uma sequência de escape \0 é substituída pelo texto correspondente. Se você marcar a caixa de seleção Personalizado em caso de falha, é possível especificar opções personalizadas de tratamento de erros: descartar o valor, definir um valor especificado ou definir um mensagem de erro especificada. |
|
Substituir | Encontre a string de pesquisa e substitua-a por outra (ou nada). Todas as ocorrências da string de pesquisa serão substituídas. Parâmetros: search string - a string para localizar e substituir, diferencia maiúsculas de minúsculas (obrigatório) replacement - a string para substitua a string de pesquisa por. A string de substituição também pode estar vazia, permitindo excluir a string de pesquisa quando encontrada. É possível usar sequências de escape para procurar ou substituir quebras de linha, retorno de carro, tabulações e espaços "\n \r \ t\s"; a barra invertida pode ser escapada como "\\" e as seqüências de escape podem ser escapadas como "\\n". O escape de quebras de linha, retorno de carro, guias é feito automaticamente durante a descoberta de baixo nível. Suportado desde 5.0.0. |
|
Dados estruturados | ||
JSONPath | Extraia valor ou fragmento de dados JSON usando funcionalidade JSONPath. Se você marcar a caixa de seleção Personalizado em caso de falha, o item não será tornam-se incompatíveis em caso de falha na etapa de pré-processamento e é possível especificar opções personalizadas de tratamento de erros: descartar o valor, definir um valor especificado ou definir uma mensagem de erro especificada. |
|
XML XPath | Extraia valor ou fragmento de dados XML usando a funcionalidade XPath. Para que esta opção funcione, o servidor Zabbix deve ser compilado com suporte a libxml. Exemplos: number(/document /item/value) extrairá 10 de <document><item><value>10</value></item></document> number(/document/item/@attribute) extrairá 10 de <document><item attribute="10"></item></document> /document/item extrairá <item><value>10</value ></item> de <document><item><value>10</value></item></document> Observe que namespaces não são suportados. Suportado desde 4.4.0. Se você marcar a caixa de seleção Personalizado em caso de falha, é possível especificar opções personalizadas de tratamento de erros: descartar o valor, definir um valor especificado ou definir uma mensagem de erro especificada. |
|
CSV para JSON | Converter dados do arquivo CSV para o formato JSON. Para obter mais informações, consulte: CSV para pré-processamento JSON. Suportado desde 4.4.0. |
|
XML para JSON | Converter dados em formato XML para JSON. Para obter mais informações, consulte: Regras de serialização. Se você marcar a caixa de seleção Personalizado em caso de falha, é possível especificar opções personalizadas de tratamento de erros: descartar o valor, definir um valor especificado ou definir uma mensagem de erro especificada. |
|
Scripts personalizados | ||
JavaScript | Insira o código JavaScript no bloco que aparece ao clicar no campo de parâmetro ou em Abrir. Observe que o comprimento do JavaScript disponível depende do banco de dados usado. Para obter mais informações, consulte: Pré-processamento de Javascript |
|
Validação | ||
Não corresponde a expressão regular | Especifique uma expressão regular que um valor não deve corresponder. Ex. Error:(.*?)\. Se você marcar a caixa de seleção Custom on fail, é possível especificar opções personalizadas de tratamento de erros: descartar o valor, definir um valor especificado ou definir um erro especificado mensagem. |
|
Verifique se há erro no JSON | Verifique se há uma mensagem de erro no nível do aplicativo localizada em JSONpath. Interrompa o processamento se for bem-sucedido e a mensagem não estiver vazia; caso contrário, continue o processamento com o valor que estava antes dessa etapa de pré-processamento. Observe que esses erros de serviço externo são relatados ao usuário como estão, sem adicionar informações da etapa de pré-processamento. Por exemplo, $.errors . Se um JSON como {"errors":"e1"} for recebido, a próxima etapa de pré-processamento não será executada.Se você marcar a caixa de seleção Personalizado em caso de falha, é possível especificar opções personalizadas de tratamento de erros : para descartar o valor, definir um valor especificado ou definir uma mensagem de erro especificada. |
|
Verifique se há erro no XML | Verifique se há uma mensagem de erro no nível do aplicativo localizada em xpath. Interrompa o processamento se for bem-sucedido e a mensagem não estiver vazia; caso contrário, continue o processamento com o valor que estava antes dessa etapa de pré-processamento. Observe que esses erros de serviço externo são relatados ao usuário como estão, sem adicionar informações da etapa de pré-processamento. Nenhum erro será relatado em caso de falha ao analisar XML inválido. Suportado desde a versão 4.4.0. Se você marque a caixa de seleção Personalizado em caso de falha, é possível especificar opções personalizadas de tratamento de erros: descartar o valor, definir um valor especificado ou definir uma mensagem de erro especificada. |
|
Estrangulamento | ||
Descartar inalterado com pulsação | Descartar um valor se ele não foi alterado dentro do período de tempo definido (em segundos). Valores inteiros positivos são suportados para especificar os segundos (mínimo - 1 segundo). Sufixos de tempo podem ser usados neste campo (por exemplo, 30s, 1m, 2h, 1d). Macros de usuário e macros de descoberta de baixo nível podem ser usadas neste campo. Apenas uma opção de limitação pode ser especificada para um item de descoberta. Por exemplo, 1m . Se um texto idêntico for passado para esta regra duas vezes em 60 segundos, ele será descartado.Observação: A alteração de protótipos de itens não redefine a limitação. A limitação é redefinida somente quando as etapas de pré-processamento são alteradas. |
|
Prometeu | ||
Prometheus para JSON | Converter as métricas necessárias do Prometheus para JSON. Consulte verificações do Prometheus para obter mais detalhes. |
Observe que se a regra de descoberta foi aplicada ao host via template então o conteúdo desta guia é somente leitura.
A guia macros LLD permite especificar a descoberta personalizada de baixo nível macros.
As macros personalizadas são úteis nos casos em que o JSON retornado não tem as macros necessárias já definidas. Assim, por exemplo:
vfs.fs.discovery
para descoberta do sistema de arquivos retorna um JSON com algumas macros LLD predefinidas, como {#FSNAME}, {#FSTYPE}. Essas macros podem ser usadas no item, acionar protótipos (veja as seções subsequentes da página) diretamente; definindo costume macros não são necessárias;vfs.fs.get
também retorna um JSON com filesystem dados, mas sem nenhuma macro LLD predefinida. Neste caso você pode definir as macros você mesmo e mapeie-as para os valores no JSON usando Caminho JSON:Os valores extraídos podem ser usados em itens descobertos, gatilhos, etc. Observe que os valores serão extraídos do resultado da descoberta e qualquer etapas de pré-processamento até agora.
Parâmetro | Descrição |
---|---|
Macro LLD | Nome da macro de descoberta de baixo nível, usando a seguinte sintaxe: {#MACRO}. |
JSONPath | Caminho usado para extrair o valor da macro LLD de uma linha LLD, usando a sintaxe JSONPath. Por exemplo, $.foo extrairá "bar" e "baz" deste JSON: [{ "foo":"bar"}, {"foo":"baz"}] Os valores extraídos do JSON retornado são usados para substituir as macros LLD nos campos de item, gatilho, etc. de protótipo. JSONPath pode ser especificado usando a notação de ponto ou a notação de colchetes. A notação de colchetes deve ser usada no caso de quaisquer caracteres especiais e Unicode, como $['unicode + caracteres especiais #1']['unicode + caracteres especiais #2'] . |
Um filtro pode ser usado apenas para gerar itens reais, gatilhos e gráficos para entidades que atendem aos critérios. A guia Filtros contém Definições de filtro de regra de descoberta que permitem filtrar valores de descoberta:
Parâmetro | Descrição |
---|---|
Tipo de cálculo | As seguintes opções para calcular filtros estão disponíveis: E - todos os filtros devem ser passados; Ou - suficiente se um filtro for passado; And/Or - usa And com nomes de macro diferentes e Or com o mesmo nome de macro; Expressão personalizada - oferece a possibilidade de definir um cálculo personalizado de filtros. A fórmula deve incluir todos os filtros da lista. Limitado a 255 símbolos. |
Filtros | Os seguintes operadores de condição de filtro estão disponíveis: corresponde, não corresponde, existe, não existe. Os operadores Corresponde e não corresponde esperam um Perl Expressão regular compatível (PCRE). Por exemplo, se você estiver interessado apenas em sistemas de arquivos C:, D: e E:, você pode colocar {#FSNAME} em "Macro" e "^C|^D|^E" regular expressão em campos de texto "Expressão regular". A filtragem também é possível por tipos de sistema de arquivos usando a macro {#FSTYPE} (por exemplo, "^ext|^reiserfs") e por tipos de unidade (suportado apenas pelo agente do Windows) usando a macro {#FSDRIVETYPE} (por exemplo, " fixed"). Você pode inserir uma expressão regular ou fazer referência a uma expressão regular global no campo "Expressão regular". Para testar uma expressão regular, você pode usar "grep - E", por exemplo: for f in ext2 nfs reiserfs smbfs; faça eco $f \| grep -E '^ext\|^reiserfs' \|\| echo "SALTAR: $f"; done {#FSDRIVETYPE} macro no Windows é suportada desde o Zabbix 3.0.0.Os operadores Exists e not exist permitem filtrar entidades com base na presença ou ausência da macro LLD especificada na resposta (com suporte desde a versão 5.4.0). A definição de vários filtros é compatível desde o Zabbix 2.4.0. Observe que, se uma macro do filtro estiver ausente na resposta, a entidade encontrada será ignorada, a menos que uma condição "não existe" seja especificada para essa macro. |
Um erro ou um erro de digitação na expressão regular usada na regra LLD (por exemplo, um "sistemas de arquivos para descoberta" incorreto expressão regular) pode causar a exclusão de milhares de configurações elementos, valores históricos e eventos para muitos anfitriões.
::: não importante O banco de dados Zabbix no MySQL deve ser criado como diferencia maiúsculas de minúsculas se nomes de sistema de arquivos que diferem apenas por maiúsculas e minúsculas devem ser descoberto corretamente. :::
A guia Substituir permite definir regras para modificar a lista de itens, protótipos de gatilho, gráfico e host ou seus atributos para descobertas objetos que atendem a determinados critérios.
As substituições (se houver) são exibidas em uma lista reordenável de arrastar e soltar e executados na ordem em que são definidos. Para configurar detalhes de uma nova substituição, clique em nas Substituições bloquear. Para editar uma substituição existente, clique no nome da substituição. Um pop-up será aberta a janela permitindo editar os detalhes da regra de substituição.
Todos os parâmetros obrigatórios estão marcados com asteriscos vermelhos.
Parâmetro | Descrição |
---|---|
Nome | Um nome de substituição exclusivo (por regra LLD). |
Se o filtro corresponder | Define se as próximas substituições devem ser processadas quando as condições do filtro forem atendidas: Continuar substituições - as substituições subsequentes serão processadas. Parar processamento - operações de ( se houver) e essa substituição será executada, as substituições subsequentes serão ignoradas para linhas LLD correspondentes. |
Filtros | Determina a quais entidades descobertas a substituição deve ser aplicada. Os filtros de substituição são processados após a regra de descoberta filtros e têm a mesma funcionalidade. |
Operações | As operações de substituição são exibidas com estes detalhes: Condição - um tipo de objeto (protótipo de item/protótipo de gatilho/protótipo de gráfico/protótipo de host) e uma condição a ser atendida (igual/diferente /contém/não contém/corresponde/não corresponde) Ação - são exibidos links para editar e remover uma operação. |
Configurando uma operação
Para configurar detalhes de uma nova operação, clique em em Operações bloquear. Para editar uma operação existente, clique em ao lado do Operação. Uma janela pop-up onde você pode editar os detalhes da operação será abrir.
Parâmetro | Descrição | |||
---|---|---|---|---|
Objeto | Quatro tipos de objetos estão disponíveis: Protótipo de item Protótipo de gatilho Protótipo de gráfico Protótipo de host |
|||
Condição | Permite filtrar entidades às quais a operação deve ser aplicada. | |||
Operador | Operadores suportados: igual - aplica-se a este protótipo não é igual - aplica-se a todos os protótipos, exceto este contém* * - aplicar, se o nome do protótipo contiver esta string não contém** - aplicar, se o nome do protótipo não contiver esta string corresponde - aplicar, se o nome do protótipo corresponder à expressão regular<br >não corresponde - aplica-se, se o nome do protótipo não corresponder à expressão regular |
|||
Padrão | Uma expressão regular ou uma string para pesquisar. | |||
Objeto: Protótipo de item | ||||
Criar habilitado | Quando a caixa de seleção estiver marcada, os botões aparecerão, permitindo substituir as configurações originais do protótipo do item: Sim - o item será adicionado em um estado habilitado. >Não - o item será adicionado a uma entidade descoberta, mas em um estado desabilitado. |
|||
Descobrir | Quando a caixa de seleção estiver marcada, os botões aparecerão, permitindo substituir as configurações originais do protótipo do item: Sim - o item será adicionado. Não - o item não será adicionado. |
|||
Intervalo de atualização | Quando a caixa de seleção estiver marcada, duas opções aparecerão, permitindo definir um intervalo diferente para o item: Atraso - Intervalo de atualização do item. Macros do usuário e sufixos de tempo (por exemplo, 30s, 1m, 2h, 1d) são suportados. Deve ser definido como 0 se Intervalo personalizado for usado. Intervalo personalizado - clique em para especificar flexível /programação de intervalos. Para obter informações detalhadas, consulte Intervalos personalizados. |
|||
Período de armazenamento do histórico | Quando a caixa de seleção estiver marcada, os botões aparecerão, permitindo definir diferentes períodos de armazenamento do histórico para o item: Não manter histórico - se selecionado, o histórico não será armazenado. Período de armazenamento - se selecionado, um campo de entrada para especificar o período de armazenamento aparecerá à direita. Macros de usuário e macros LLD são suportados. |
|||
Período de armazenamento de tendências | Quando a caixa de seleção estiver marcada, os botões aparecerão, permitindo definir diferentes períodos de armazenamento de tendências para o item: Não manter tendências - se selecionado, as tendências não será armazenado. Período de armazenamento - se selecionado, um campo de entrada para especificar o período de armazenamento aparecerá à direita. Macros de usuário e macros LLD são suportados. |
|||
Tags | Quando a caixa de seleção estiver marcada, um novo bloco aparecerá |
Os botões na parte inferior do formulário permitem realizar várias operações.
Adicione uma regra de descoberta. Este botão está disponível apenas para novas regras de descoberta. | |
Atualize as propriedades de uma regra de descoberta. Este botão está disponível apenas para regras de descoberta existentes. | |
Crie outra regra de descoberta com base nas propriedades da regra de descoberta atual. | |
Execute a descoberta com base na regra de descoberta imediatamente. A regra de descoberta já deve existir. Consulte mais detalhes. Observe que ao realizar a descoberta imediatamente, o cache de configuração não é atualizado, portanto, o resultado não refletirá alterações muito recentes na configuração da regra de descoberta. |
|
Excluir a regra de descoberta. | |
Cancelar a edição das propriedades da regra de descoberta. |
As capturas de tela abaixo ilustram como os itens descobertos, acionadores e gráficos se parecem com a configuração do host. As entidades descobertas são prefixado com um link laranja para uma regra de descoberta de onde eles vêm.
Observe que as entidades descobertas não serão criadas caso haja entidades já existentes com os mesmos critérios de exclusividade, por exemplo, um item com a mesma chave ou gráfico com o mesmo nome. Um erro mensagem é exibida neste caso no frontend que o nível baixo regra de descoberta não pôde criar determinadas entidades. A regra de descoberta em si, no entanto, não ficará sem suporte porque alguma entidade não pôde ser criado e teve que ser ignorado. A regra de descoberta continuará criar/atualizar outras entidades.
Itens (da mesma forma, gatilhos e gráficos) criados por uma descoberta de baixo nível regra será excluída automaticamente se uma entidade descoberta (sistema de arquivos, interface, etc) deixa de ser descoberto (ou não passa no filtro mais). Neste caso, os itens, gatilhos e gráficos serão excluídos após os dias definidos no campo Manter o período de recursos perdidos.
Quando as entidades descobertas se tornam 'Não mais descobertas', uma vida inteira indicador é exibido na lista de itens. Mova o ponteiro do mouse sobre ele e uma mensagem será exibida indicando quantos dias faltam para o item é excluído.
Se as entidades foram marcadas para exclusão, mas não foram excluídas no tempo esperado (regra de descoberta desabilitada ou host de item), eles serão excluído na próxima vez que a regra de descoberta for processada.
Entidades contendo outras entidades, marcadas para exclusão, serão não atualizar se alterado no nível da regra de descoberta. Por exemplo, Os acionadores baseados em LLD não serão atualizados se contiverem itens marcados para exclusão.
Mais detalhes e instruções sobre outros tipos de descoberta pronta para uso são disponível nas seguintes seções:
Para obter mais detalhes sobre o formato JSON para itens de descoberta e um exemplo de como implementar seu próprio descobridor de sistema de arquivos como um script Perl, consulte criando regras de LLD personalizadas.