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

3 Descoberta de baixo nível

Visão geral

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

Configurando a descoberta de baixo nível

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:

  • Vá para: ConfiguraçãoModelos ou Hosts
  • Clique em Discovery na linha de um modelo/host apropriado

  • Clique em Criar regra de descoberta no canto superior direito da tela
  • Preencha o formulário de regra de descoberta com os detalhes necessários

Regra de descoberta

O formulário de regra de descoberta contém cinco guias, representando, da esquerda para certo, o fluxo de dados durante a descoberta:

  • Regra de descoberta - especifica, mais importante, o item interno ou script personalizado para recuperar dados de descoberta
  • Pré-processamento - aplica algum pré-processamento aos dados descobertos
  • Macros LLD - permite extrair alguns valores de macro para usar em itens descobertos, gatilhos, etc.
  • Filters - permite filtrar os valores descobertos
  • Substitui - permite modificar itens, gatilhos, gráficos ou host protótipos ao aplicar a objetos descobertos específicos

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.

Pré-processando

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.

Macros personalizadas

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:

  • A chave nativa 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;
  • O item do agente 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'].

Filtro

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. :::

Sobrepor

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á

Botões de formulário

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.

Entidades descobertas

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.

Outros tipos de descoberta

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.

Criando regras personalizadas de LLD

Também é possível criar uma regra LLD totalmente personalizada, descobrindo qualquer tipo de entidade - por exemplo, bancos de dados em um servidor de banco de dados.

Para isso, deve ser criado um item personalizado que retorne JSON, especificando objetos encontrados e, opcionalmente - algumas propriedades deles. A quantidade de macros por entidade não é limitada - enquanto as regras de descoberta integradas retornar uma ou duas macros (por exemplo, duas para sistema de arquivos descoberta), é possível retornar mais.

O formato JSON necessário é melhor ilustrado com um exemplo. Suponha que nós estão executando um agente Zabbix 1.8 antigo (um que não suporta "vfs.fs.discovery"), mas ainda precisamos descobrir sistemas de arquivos. Aqui está um script Perl simples para Linux que descobre sistemas de arquivos montados e gera JSON, que inclui o nome e o tipo do sistema de arquivos. Uma maneira de use-o como um UserParameter com a chave "vfs.fs.discovery_perl":

#!/usr/bin/perl
       
       $primeiro = 1;
       
       imprima "[\n";
       
       for (`cat /proc/mounts`)
       {
           ($fsname, $fstype) = m/\S+ (\S+) (\S+)/;
       
           imprima "\t,\n" se não for $primeiro;
           $primeiro = 0;
       
           imprima "\t{\n";
           print "\t\t\"{#FSNAME}\":\"$fsname\",\n";
           print "\t\t\"{#FSTYPE}\":\"$fstype\"\n";
           imprima "\t}\n";
       }
       
       imprima "]\n";

::: não importante Os símbolos permitidos para nomes de macro LLD são 0-9 , A-Z , _ , .

Letras minúsculas não são suportadas nos nomes. :::

Um exemplo de sua saída (reformatado para maior clareza) é mostrado abaixo. JSON para verificações de descoberta personalizadas deve seguir o mesmo formato.

[
           { "{#FSNAME}":"/", "{#FSTYPE}":"rootfs" },
           { "{#FSNAME}":"/sys", "{#FSTYPE}":"sysfs" },
           { "{#FSNAME}":"/proc", "{#FSTYPE}":"proc" },
           { "{#FSNAME}":"/dev", "{#FSTYPE}":"devtmpfs" },
           { "{#FSNAME}":"/dev/pts", "{#FSTYPE}":"devpts" },
           { "{#FSNAME}":"/lib/init/rw", "{#FSTYPE}":"tmpfs" },
           { "{#FSNAME}":"/dev/shm", "{#FSTYPE}":"tmpfs" },
           { "{#FSNAME}":"/home", "{#FSTYPE}":"ext3" },
           { "{#FSNAME}":"/tmp", "{#FSTYPE}":"ext3" },
           { "{#FSNAME}":"/usr", "{#FSTYPE}":"ext3" },
           { "{#FSNAME}":"/var", "{#FSTYPE}":"ext3" },
           { "{#FSNAME}":"/sys/fs/fuse/connections", "{#FSTYPE}":"fusectl" }
       ]

No exemplo anterior, é necessário que as chaves correspondam à macro LLD nomes usados em protótipos, a alternativa é extrair valores de macro LLD usando JSONPath {#FSNAME}$.fsname e {#FSTYPE}$.fstype, tornando possível tal script:

#!/usr/bin/perl
        
       $primeiro = 1;
        
       imprima "[\n";
        
       for (`cat /proc/mounts`)
       {
           ($fsname, $fstype) = m/\S+ (\S+) (\S+)/;
        
           imprima "\t,\n" se não for $primeiro;
           $primeiro = 0;
        
           imprima "\t{\n";
           print "\t\t\"fsname\":\"$fsname\",\n";
           print "\t\t\"fstype\":\"$fstype\"\n";
           imprima "\t}\n";
       }
        
       imprima "]\n";

Um exemplo de sua saída (reformatado para maior clareza) é mostrado abaixo. JSON para verificações de descoberta personalizadas deve seguir o mesmo formato.

[
           { "fsname":"/", "fstype":"rootfs" },
           { "fsname":"/sys", "fstype":"sysfs" },
           { "fsname":"/proc", "fstype":"proc" },
           { "fsname":"/dev", "fstype":"devtmpfs" },
           { "fsname":"/dev/pts", "fstype":"devpts" },
           { "fsname":"/lib/init/rw", "fstype":"tmpfs" },
           { "fsname":"/dev/shm", "fstype":"tmpfs" },
           { "fsname":"/home", "fstype":"ext3" },
           { "fsname":"/tmp", "fstype":"ext3" },
           { "fsname":"/usr", "fstype":"ext3"},
           { "fsname":"/var", "fstype":"ext3"},
           { "fsname":"/sys/fs/fuse/connections", "fstype":"fusectl" }
       ]

Então, no campo "Filtro" da regra de descoberta, podemos especificar "{#FSTYPE}" como macro e "rootfs|ext3" como expressão regular.

Você não precisa usar nomes de macros FSNAME/FSTYPE com LLD, você é livre para usar os nomes que quiser. Caso JSONPath for usado, a linha LLD será um elemento de matriz que pode ser um objeto, mas pode ser também outro array ou um valor.

Observe que, se estiver usando um parâmetro do usuário, o valor de retorno é limitado a 512 KB. Para obter mais detalhes, consulte limites de dados para retorno de LLD valores.