Esta página inclui conteúdo traduzido automaticamente. Se você notar um erro, selecione-o e pressione Ctrl+Enter para reportá-lo aos editores.

5 Protótipos de descoberta

Visão geral

Prototipos de descoberta são regras de descoberta de baixo nível aninhadas dentro de uma regra de descoberta "pai", permitindo criar uma descoberta multinível de objetos com seus próprios items, triggers, etc. Por exemplo, você pode querer descobrir todas as instâncias de banco de dados em um servidor de banco de dados, depois descobrir tablespaces para cada instância e, em seguida, descobrir tabelas para cada tablespace.

Prototipos de descoberta possuem seus próprios prototipos de item, trigger, gráfico, host e descoberta. Um prototipo de descoberta aninhado usará o mesmo valor JSON da regra pai se você especificar um tipo Aninhado.

Os níveis de aninhamento para prototipos de descoberta são ilimitados.

Configuração

Para criar um protótipo de descoberta:

  • Clique em Protótipos de descoberta na linha de uma regra de descoberta existente

  • Clique em Criar protótipo de descoberta

Os campos de configuração deste formulário são compartilhados com a descoberta de baixo nível regular.

Se você selecionar "Aninhado" como Tipo no formulário de protótipo de descoberta aberto, então regras de descoberta (do protótipo de descoberta) são geradas com base em um objeto JSON do mesmo valor JSON que a regra de descoberta pai. Por exemplo, se o JSON original for [<objeto A>, <objeto B>] e houver um protótipo de regra de descoberta aninhada, então duas regras de descoberta seriam geradas com base nos dados do objeto A e do objeto B, respectivamente.

Neste caso, o protótipo de descoberta é ativado ao mesmo tempo que a regra pai. A regra aninhada pode, assim, usar pré-processamento para trabalhar em outro "recorte" dos mesmos dados, já adquiridos pelo pai.

As macros LLD da regra LLD pai estão disponíveis para regras de descoberta aninhadas.

Regras LLD aninhadas em hosts descobertos

Uma regra de descoberta de baixo nível Aninhada pode ser usada em um template de host atribuído ao protótipo de host. Se uma regra de descoberta Aninhada existir em um host descoberto, o objeto JSON usado para descobrir o host também será enviado para todas as regras LLD do tipo aninhado neste host. Para mais detalhes, veja o exemplo.

As macros LLD da regra de descoberta que criou o host estão disponíveis para regras de descoberta aninhadas.

Exemplo

Vamos ilustrar a possível aplicação de protótipos de descoberta, com base no recebimento do seguinte exemplo de JSON multinível.

[
         {
           "database": "db1",
           "created_at": "2024-02-01T12:30:00Z",
           "encoding": "UTF8",
           "tablespaces": [
             { "name": "ts1", "max_size": "10GB" },
             { "name": "ts2", "max_size": "20GB" },
             { "name": "ts3", "max_size": "15GB" }
           ]
         },
         {
           "database": "db2",
           "created_at": "2023-11-15T08:45:00Z",
           "encoding": "UTF16",
           "tablespaces": [
             { "name": "ts1", "max_size": "5GB" },
             { "name": "ts2", "max_size": "25GB" },
             { "name": "ts3", "max_size": "30GB" }
           ]
         },
         {
           "database": "db3",
           "created_at": "2024-01-05T15:10:00Z",
           "encoding": "UTF8",
           "tablespaces": [
             { "name": "ts1", "max_size": "12GB" },
             { "name": "ts2", "max_size": "18GB" },
             { "name": "ts3", "max_size": "22GB" }
           ]
         }
       ]
Caso 1

Descobrindo instâncias de banco de dados em um servidor de banco de dados e, em seguida, descobrindo os tablespaces para cada instância.

  1. Você tem pelo menos um host relacionado à descoberta do servidor de banco de dados.

  2. Crie uma regra de LLD para este host chamada Descobrir bancos de dados e tablespaces.

  3. Altere para a aba Macros de LLD nesta regra, adicione a macro {#DB}=$.database.

  4. Adicione um protótipo de item para esta regra chamado Conexões ativas para {#DB} (Tipo: Agent, Chave: db.connections[{#DB}]).

  5. Os itens relacionados a cada banco de dados são descobertos:

Conexões ativas para db1, Conexões ativas para db2, Conexões ativas para db3.
  1. Crie um protótipo de descoberta para esta regra chamado Descobrir tablespaces para {#DB} (Tipo: Aninhado, Chave: db.tablespace.discovery[{#DB}]).

  2. Altere para a aba Pré-processamento deste protótipo de descoberta e adicione a etapa JSONPath=$.tablespaces.

  3. Altere para a aba Macros de LLD deste protótipo de descoberta, adicione a macro {#TSNAME}=$.name.

  4. Crie um protótipo de item para este protótipo de descoberta chamado Tamanho do tablespace {#TSNAME} para {#DB} (Tipo: Agent, Chave: db.ts.size[{#DB}, {#TSNAME}]).

  5. Os itens relacionados a cada tablespace de cada banco de dados são descobertos:

Tamanho do tablespace ts1 para db1, Tamanho do tablespace ts2 para db1, Tamanho do tablespace ts3 para db1,
       Tamanho do tablespace ts1 para db2, Tamanho do tablespace ts2 para db2, Tamanho do tablespace ts3 para db2,
       Tamanho do tablespace ts1 para db3, Tamanho do tablespace ts2 para db3, Tamanho do tablespace ts3 para db3.

com as chaves db.ts.size[db1,ts1], db.ts.size[db1,ts2], ... db.ts.size[db3,ts3].

Caso 2

Descobrindo instâncias de banco de dados no servidor de banco de dados, representando-as como hosts descobertos e, em seguida, descobrindo os tablespaces para cada instância.

  1. Você tem pelo menos um host (host raiz) relacionado à descoberta do servidor de banco de dados.

  2. Crie um template para descobrir os tablespaces de cada banco de dados.

  3. Crie um item neste template chamado Conexões ativas para {#DB} (Tipo: Agent, Chave: db.connections[{#DB}]).

  4. Crie uma regra LLD para este template chamada Descobrir tablespaces (Tipo: Aninhado).

  5. Vá para a aba Pré-processamento desta regra e adicione a etapa JSONPath=$.tablespaces.

  6. Vá para a aba Macros LLD desta regra, adicione a macro {#TSNAME}=$.name.

  7. Crie um protótipo de item para esta regra chamado Tamanho do tablespace {#TSNAME} para {#DB} (Tipo: Agent, Chave: db.ts.size[{#DB}, {#TSNAME}]).

  8. De volta ao host raiz, crie uma regra LLD para este host chamada Descobrir bancos de dados e tablespaces.

  9. Vá para a aba Macros LLD desta regra, adicione a macro {#DB}=$.database.

  10. Adicione um protótipo de host para esta regra chamado Host para o banco de dados {#DB}.

  11. Vá para a aba Macros deste protótipo de host, adicione a macro {$DB}={#DB} (para o nome e chave do item do Passo 3).

  12. Vincule o template do passo 2 a este protótipo de host.

  13. Os hosts descobertos contêm os itens descobertos relacionados a cada banco de dados e seus tablespaces:

Host Itens
Host para o banco de dados db1 Conexões ativas para db1
Tamanho do tablespace ts1 para db1
Tamanho do tablespace ts2 para db1
Tamanho do tablespace ts3 para db1
Host para o banco de dados db2 Conexões ativas para db2
Tamanho do tablespace ts1 para db2
Tamanho do tablespace ts2 para db2
Tamanho do tablespace ts3 para db2
Host para o banco de dados db3 Conexões ativas para db3
Tamanho do tablespace ts1 para db3
Tamanho do tablespace ts2 para db3
Tamanho do tablespace ts3 para db3