Mecanismo de Identificação e Reconciliação (IRE)
O IRE é um componente chave subjacente na Identificação e Reconciliação, fornecendo uma estrutura centralizada para executar processos de identificação e reconciliação em diferentes fontes de dados. O IRE usa regras de identificação, regras de reconciliação e regras de fonte de dados do IRE ao processar dados de entrada, antes de inserir dados no CMDB.
- O IRE evita a duplicação de ICs identificando-os de modo exclusivo.
- O IRE reconcilia atributos de IC permitindo que somente fontes de dados autorizadas gravem dados no CMDB.
- Sobre propriedades que afetam algumas funções do IRE: confira Propriedades de Identificação e Reconciliação.
- Sobre como usar APIs de IRE: consulte IdentificationEngine – Com escopo.
- Sobre como habilitar a depuração e a verificação de problemas com uma carga: confira Como registrar em log a carga enviada para o IRE e verificar os problemas com a carga [KB0750382].
- Sobre as etapas que o IRE executa ilustrando como o IRE funciona, como validar a carga, aplicar a reconciliação e confirmar os dados no CMDB: confira [CMDB - IRE] Como o Mecanismo de Reconciliação e identificação no CMDB funciona ao passar um IC (como carga) para createOrUpdateCI () [KB0750386].
- Sobre como executar uma carga por meio do IRE: consulte [CMDB IRE] Como executar a identificação de IC sob demanda usando a carga [KB0750383].
Identificação do IC
O processo de identificação do CMDB depende de regras de identificação para identificar exclusivamente os ICs. Quando possível, os ICs também podem ser identificados exclusivamente usando os valores source_name e source_native_key fornecidos na seção sys_object_source_info da carga e a tabela Origem [sys_object_source]. Se a identificação for bem-sucedida usando esse método, não será necessário aplicar algoritmos de correspondência que dependem de regras de identificação, que é um método de identificação mais lento.
{
"items": [
{
"className": "cmdb_ci_win_server",
"values": {
"name": "SAMLABVM52"
},
"sys_object_source_info": {
"source_native_key": "16777219",
"source_name": "SCCM",
"source_feed": "SCCM Computer Identity",
"source_recency_timestamp": "2019-08-26 13:00:00"
}
}
]
}Os processos de identificação dependem da classificação de dependência de ICs para identificar exclusivamente os ICs. Por exemplo, para identificar um IC do Tomcat que é um IC dependente. Suponhamos que um IC de Servidor Windows (classe independente) esteja executando uma aplicação Tomcat (classe dependente). Depender de um "caminho de arquivo de configuração" para identificar exclusivamente o IC do Tomcat não é suficiente porque é possível executar a aplicação Tomcat em várias máquinas com caminhos idênticos. O mecanismo de identificação não poderá escolher um IC para atualizar. Os relacionamentos dependentes forçam o processo de identificação a identificar primeiro o host do Servidor Windows no qual a aplicação Tomcat está em execução e, somente então, no contexto do host, a identificar exclusivamente a aplicação Tomcat propriamente dita.
Identificação de itens de carga
- Combinação dos valores source_name e source_native_key do objeto sys_object_source_info.
- Atributos do critério de identificação.
Carimbos de data/hora nos atributos principais
Descoberta mais recente (last_discovered) e origem de descoberta (discovery_source):
A descoberta mais recente (last_discovered) é o carimbo de data/hora de quando o IC foi descoberto pela última vez. O IRE sempre atualiza os atributos de ICs last_discovered e discovery_source durante o processamento de carga, mesmo quando nenhum outro atributo de IC é atualizado. Quando last_discovered é fornecido na carga, o IRE atualiza o IC com o valor fornecido somente se a hora last_discovered na carga for mais recente do que a do CMDB. Se last_discovered não é fornecido na carga útil, o IRE atualiza o atributo last_discovered com o carimbo de data/hora atual.
Você pode usar as propriedades do sistema glide.identification_engine.skip_updating_source_last_discovered_if_older e glide.identification_engine.ire_message_listener_skip_updating_source_last_discovered_to_now para modificar este comportamento padrão.
Primeira descoberta (first_discovered) é o carimbo de data/hora de quando o IC foi criado pela primeira vez.
- Quando o IC é criado pela primeira vez: se um valor for fornecido na carga, o IRE inserirá esse valor. Caso contrário, IRE insere o carimbo de data/hora atual.
- Em atualizações subsequentes: se um valor é fornecido, o IRE atualiza o IC com este valor. Caso contrário, o atributo não será atualizado.
Recursos de IRE aprimorados
- Cargas úteis parciais
O IRE isola itens aos quais as fontes de dados não forneceram informações suficientes para identificar exclusivamente o IC e, portanto, o processamento não pode continuar. Alguns desses itens são identificados como itens parciais, que são armazenados para possível processamento posterior. Outros itens são identificados como itens incompletos, que são armazenados apenas para fins de registro em log.
Por exemplo: o SCCM tem vários feeds, como um feed de disco e um feed de computador. O feed de disco pode ter informações completas sobre o disco, mas informações insuficientes sobre o IC do computador do qual ele depende.
Opção de API: partial_payloads que está habilitada por padrão. Quando partial_payloads está habilitado, partial_commits e deduplicate_payloads são habilitados automaticamente, independentemente das configurações nas opções.
- Confirmações parciais
Erros em alguns itens não impedem a confirmação do restante dos itens em uma carga útil. Portanto, quando uma carga útil contém itens com erros, o IRE ainda confirma os itens válidos restantes nela. Nesta situação, alguns dos itens não confirmados são salvos como cargas úteis parciais e outros itens não confirmados são salvos como cargas úteis incompletas.
Opção de API: partial_commits que está habilitada por padrão.
- Desduplicar itens de carga útil
O IRE desduplica itens duplicados na carga, mesclando essas duplicatas em um só item de carga útil para processamento.
Opção de API: deduplicate_payloads que está habilitada por padrão.
- Gerar resumo
O IRE gera resumos na carga de saída com detalhes de processamento, como o número de atualizações por classe.
Opção de API: generate_summary que está habilitada por padrão.
Itens parciais
Um item de carga será determinado como um item parcial se contiver os dados necessários para identificação exclusiva e se tiver um dos erros a seguir. A identificação exclusiva requer que o item de carga útil tenha a seção sys_object_source_info com valores source_name e source_native_key ou o conjunto completo de atributos de critério de identificação especificados para a classe de IC, ou ambos.
- MISSING_MATCHING_ATTRIBUTES: o item não tem atributos de critério de identificação para usar pelo menos uma entrada de identificador para correspondência.
- REQUIRED_ATTRIBUTE_EMPTY: não é possível criar um IC porque um atributo obrigatório está ausente.
- MISSING_DEPENDENCY: o IC dependente não tem uma relação de dependência especificada na carga útil.
- INSERT_NOT_ALLOWED_FOR_SOURCE: uma regra de fonte de dados IRE impede que as fontes de dados especificadas criem ICs da classe especificada.
Para obter mais detalhes sobre mensagens de erro de IRE, confira Mensagens de erro do IRE.
Se o processamento falhar porque os itens de carga útil foram determinados como itens parciais, os itens parciais serão salvos como cargas úteis parciais na tabela Cargas úteis parciais do CMDB IRE [cmdb_ire_partial_payloads] no formato JSON para processamento em potencial posterior. O IRE usa chaves de identificador para tentar corresponder as cargas úteis de entrada com as cargas úteis parciais armazenadas.
Se, posteriormente, uma fonte de dados enviar os dados que estavam ausentes no item parcial, o IRE corresponderá à carga útil de entrada com as cargas úteis parciais armazenadas. O IRE mescla todas as cargas úteis parciais correspondentes com a carga útil de entrada. Para resolver quaisquer atributos conflitantes, o IRE usa source_recency_timestamp (quando source_native_key e source_name são idênticos) ou regras de reconciliação estáticas especificadas para a classe. O resultado é uma carga útil completa e válida que o IRE processa para criar ou atualizar os respectivos ICs.
Cargas úteis parciais com mais de 90 dias são excluídas da tabela Cargas úteis parciais de IRE do CMDB [cmdb_ire_partial_payloads].
Disk feed:
{
"items": [
{
"className": "cmdb_ci_computer",
"sys_object_source_info": {
"source_native_key": "Server001",
"source_name": "SCCM",
"source_feed": "DISK_FEED",
"source_recency_timestamp": "2019-08-26 13:00:00"
}
},
{
"className": "cmdb_ci_disk",
"values": {
"name": "disk1"
}
}
],
"relations": [{
"parent": 0,
"child": 1,
"type": "Contains::Contained by"}
]
}O item de computador na carga útil acima não tem atributos e, portanto, o IRE não pode processá-lo. No entanto, source_name e source_native_key são fornecidos, tornando-o um item parcial. Como o item do computador é parcial, o item do disco que depende do item do computador também é um item parcial.Server/Computer feed:
{
"items": [
{
"className": "cmdb_ci_linux_server",
"values": { "name": 'linux001',
"ip_address": "100.126.38.19",
"mac_address": "DSWER4587" },
"sys_object_source_info": {
"source_native_key": "Server001",
"source_name": "SCCM",
"source_feed": "COMPUTER_IDENTITY",
"source_recency_timestamp": "2019-08-26 14:00:00"
}
}
]
} O computador na carga útil parcial e o servidor na nova carga útil correspondem porque têm source_name e source_native_keyidênticos. Portanto, a carga útil parcial e a nova carga útil são mescladas, a operação é confirmada e a carga útil parcial é excluída da tabela Cargas úteis parciais.Há um limite no número de itens por carga útil parcial, que é definido pela propriedade glide.identification_engine.partial_payload_items_max_size (1000 por padrão). Armazenar relacionamentos associados, referências e itens dependentes, em uma carga útil parcial, pode resultar em atingir esse limite, caso em que a carga útil é dividida em várias cargas úteis parciais.
Para obter mais informações sobre cargas úteis parciais, consulte CreateOrUpdateCIEnhanced().
Itens incompletos
- Ele não contém todos os dados necessários para a identificação exclusiva
- Há um erro que não está associado a um item parcial
Itens incompletos são salvos como cargas úteis incompletas na tabela Cargas incompletas do CMDB IRE [cmdb_ire_incomplete_payloads] no formato JSON. Itens incompletos são armazenados para fins de registro em log de cargas úteis com erros irrecuperáveis e nunca são processados novamente.
Adicionando relacionamentos
Adicione relacionamentos usando índices ou o elemento JSON internal_id.
- Relação (índice primário, índice secundário, tipo de relação)
- Relação (ID interno primário, ID interno secundário, tipo de relação)
Para obter mais informações e amostras de código, consulte CreateOrUpdateCIEnhanced().
Adicionando referências entre itens de carga útil
Adicione referências entre dois itens de carga útil usando o elemento JSON internal_id opcional, que identifica exclusivamente os itens de carga útil.
Use o bloco referenceItems para adicionar ou atualizar referências. Você pode adicionar referências entre dois itens quaisquer, incluindo itens principais, itens de pesquisa e itens relacionados, em uma só carga útil.
Para obter mais informações e amostras de código, consulte CreateOrUpdateCIEnhanced().
Reclassificação de IC
Use os sinalizadores updateWithoutUpgrade, updateWithoutDowngrade e updateWithoutSwitch no bloco de configurações em uma carga útil para evitar atualizações não intencionais na classe de ICs. Esses sinalizadores impedem o upgrade, o downgrade ou a alternância da classe de um IC que várias fontes de dados podem tentar acidentalmente ao atualizar o mesmo IC. Para obter mais informações e amostras de código, consulte CreateOrUpdateCIEnhanced().
Os sinalizadores de reclassificação têm precedência sobre quaisquer outras configurações do sistema para Configuração da reclassificação de ICs durante o processamento do IRE.
Como adicionar scripts personalizados antes e depois
Use o IntegrationHub ETL para adicionar scripts Java personalizados para uma fonte de dados de um aplicativo de integração do CMDB.. Esses scripts fornecem acesso às cargas úteis de entrada e de saída do IRE, ao mesmo tempo em que processam as integrações do CMDB.
- Ignore uma carga útil no lote definindo status como SKIPPED. Opcionalmente, forneça um motivo para ignorar a carga útil que aparecerá como um comentário na respectiva tabela de linhas do conjunto para importação.
- Modifique a carga útil de entrada.
- Grave outra lógica personalizada dentro do script que usa a carga útil do IRE.
- Compare facilmente as cargas úteis de entrada e saída e identifique as diferentes operações que o IRE executou em cada IC.
- Acesse os sys_ids dos ICs que o IRE criou ou atualizou.
- Grave outra lógica personalizada dentro do script que usa a carga útil de saída do IRE.