Cognos Auditing Blog - Dicas e truques para ambientes de grande e alto volume

by 17 de maio de 2021Auditoriacomentários 0

Um blog de John Boyer e Mike Norris.

Introdução

É importante ter a capacidade de Auditoria do Cognos funcionando para saber e entender como o Cognos está sendo usado por sua comunidade de usuários e ajudar a responder perguntas como:

    • Quem está usando o sistema?
    • Que relatórios eles estão executando?
    • Quais são os tempos de execução do relatório?
    • Com a ajuda de outras ferramentas, como MotioCI, qual conteúdo não é usado?

Considerando o quão crítico é manter ambientes saudáveis ​​do Cognos Analytics, surpreendentemente pouco foi escrito sobre seu banco de dados de auditoria além da documentação do produto padrão. Talvez seja um dado adquirido, mas as organizações que o usam sabem que, com o tempo, as consultas às tabelas do banco de dados de auditoria começarão a ficar lentas - especialmente se sua organização tiver muitos usuários executando muitos relatórios e muito histórico. Além do mais, o próprio registro da atividade de auditoria pode ser atrasado porque está sendo enfileirado quando não pode ser adicionado ao banco de dados com rapidez suficiente, por exemplo. É quando você começa a pensar sobre o desempenho do banco de dados como faria com qualquer banco de dados operacional que tenha requisitos de relatório.

Tabelas grandes geralmente reduzem o desempenho de consulta. Quanto maior a tabela, mais tempo leva para inserir e consultar. Lembre-se de que essas tabelas e o Banco de Dados de Auditoria são basicamente um banco de dados operacional; as gravações estão acontecendo com frequência e funcionam contra nós, já que não podemos concentrá-las apenas em operações de leitura, como você faria com um data mart.

Assim como o armazenamento de conteúdo, a integridade do ambiente Cognos também deve levar em consideração a integridade do banco de dados de auditoria. O crescimento ilimitado do banco de dados de auditoria pode se tornar um problema com o tempo e pode até impactar o desempenho geral de um ambiente Cognos. Em muitas organizações com regulamentações externas impostas, não ter um registro de auditoria completo pode colocá-las em uma situação de não conformidade com fortes repercussões. Então, como lidamos com a necessidade de manter tantos dados para fins de auditoria histórica - em alguns casos até 10 anos - e ainda assim obter os relatórios de que precisamos para manter o ambiente e os usuários satisfeitos com o desempenho?

O Desafio

    • O crescimento ilimitado do banco de dados de auditoria está impactando negativamente a saúde do ambiente Cognos
    • Os relatórios do banco de dados de auditoria tornaram-se lentos ou inutilizáveis
    • Cognos experimenta atrasos nos registros sendo gravados no banco de dados de auditoria
    • O banco de dados de auditoria está ficando sem espaço em disco

Tudo isso significa que não são apenas os relatórios que dependem do Banco de Dados de Auditoria que sofrem, mas muitas vezes todo o sistema. Se o banco de dados de auditoria estiver no mesmo servidor que o armazenamento de conteúdo do Cognos, o desempenho de todas as coisas do Cognos será afetado naquele ambiente.

A Cilada

Nós presumimos:

    1. Cognos Analytics está instalado e em execução
    2. Cognos está configurado para registrar em um banco de dados de auditoria
        • Tenha um banco de dados de auditoria instalado
        • Defina os níveis de registro de auditoria apropriados na administração do Cognos
        • O registro está sendo gravado no banco de dados pelo Cognos
    3. O banco de dados de auditoria está em uso há mais de um ano
    4. O ambiente é muito ativo com usuários e execuções
    5. O pacote de auditoria está sendo usado para revelar dados de uso do Cognos
    6. Queremos melhorar o desempenho dos relatórios do banco de dados de auditoria
    7. Começar de novo ou excluir registros antigos nem sempre é uma opção

Se você ainda não tem o Cognos Audit instalado e configurado, Lodestar Solutions, um Motio parceiro, tem um excelente postar sobre como habilitar a Auditoria no Cognos BI / CA.

A Solução

Existem algumas soluções possíveis que se apresentam rapidamente:

    1. Reduza o volume de dados:
        • Movendo alguns dos dados mais antigos para outro banco de dados
        • Movendo alguns dos dados mais antigos para outra tabela no mesmo banco de dados
    2. Basta excluir ou arquearhive alguns dos dados e não se preocupe com isso
    3. Vive com isso. Chute a lata para baixo road e empurre o administrador de banco de dados para desempenho
      melhorias enquanto os algema, não permitindo alterações do esquema ou
      índices

Não vamos lidar com a opção 3. A opção 2, excluir os dados, não é uma boa opção e eu recomendo manter pelo menos 18 meses no mínimo. Mas, se você quiser, a IBM oferece um utilitário, AuditoriaDBCleanup (Cognos BI) ou um escrita (Cognos Analytics) que fará exatamente isso. O utilitário para Cognos BI exclui registros com base em um carimbo de data / hora, enquanto os scripts para Cognos Analytics apenas excluem os índices e tabelas.

As recomendações que fizemos aos clientes anteriormente sobre isso foram separar em dois bancos de dados:

    1. Auditoria - Ao vivo: contém os dados da semana mais recente
    2. Auditoria - Histórico: contém dados históricos (até N anos)

Resumindo, o processo é executado semanalmente para mover os registros mais recentes de Audit Live para Audit Historical. O Audit Live recomeça como uma folha em branco após a execução desse processo.

    1. O Live DB é rápido e apertado, permitindo que as inserções aconteçam o mais rápido possível
    2. As consultas de auditoria são direcionadas exclusivamente ao Banco de Dados Histórico

Usando essa abordagem, não há uma “junção” implícita dos dados Live e dos dados históricos. Eu diria que você provavelmente deseja mantê-lo assim.

No Cognos Administration, você pode adicionar duas conexões diferentes para a fonte de dados de auditoria. Quando um usuário executa um relatório no pacote de auditoria, ele é solicitado a informar qual conexão deseja usar:

Bancos de dados de auditoria

Na chance remota de você querer examinar os dados de auditoria em tempo real em vez de dados históricos de auditoria, você apenas escolhe a conexão “Auditoria - Live” quando solicitado (deve ser a exceção, não a norma).

Se você REALMENTE quiser fornecer uma visão consolidada do Live e do histórico, pode fazê-lo, mas isso afetaria o desempenho.

Por exemplo, você poderia criar um terceiro banco de dados chamado “Auditoria - Visão Consolidada” e, em seguida, para cada tabela no esquema de Auditoria: criar uma visão com nome idêntico que é uma união SQL entre a tabela no banco de dados ao vivo e a tabela no DB histórico. Da mesma forma, isso também poderia ser alcançado no modelo do Framework Manager, mas, novamente, o desempenho seria uma consideração importante.

Alguns de nossos clientes criaram uma visão consolidada. Em nossa opinião, isso é provavelmente um exagero. O desempenho sempre seria pior nesta visão consolidada e não encontramos muitos casos de uso que usem os conjuntos de dados Live e históricos. O Live sendo usado para solução de problemas e o Histórico para relatórios de tendências.

A partir do Cognos Analytics 11.1.7, o banco de dados de auditoria cresceu para 21 tabelas. Você pode encontrar mais informações em outro lugar no banco de dados de auditoria, relatórios de auditoria de amostra e o modelo do Framework Manager. O nível de registro padrão é Mínimo, mas você pode querer usar o próximo nível, Básico, para capturar solicitações de uso, gerenciamento de conta de usuário e uso de tempo de execução. Uma maneira de manter o desempenho do sistema é mantendo o nível de registro no nível mais baixo necessário. Obviamente, quanto mais registro é feito pelo servidor, mais o desempenho geral do servidor pode ser afetado.

As tabelas principais nas quais a maioria dos administradores terá interesse são as 6 tabelas que registram a atividade do usuário e a atividade de relatório no sistema.

  • COGIPF_USERLOGON: Armazena informações de logon do usuário (incluindo logoff)
  • COGIPF_RUNREPORT: Armazena informações sobre execuções de relatórios
  • COGIPF_VIEWREPORT: armazena informações sobre solicitações de visualização de relatório
  • COGIPF_EDITQUERY: armazena informações sobre execuções de consulta
  • COGIPF_RUNJOB: armazena informações sobre solicitações de trabalho
  • COGIPF_ACTION: registra as ações do usuário no Cognos (esta tabela pode crescer muito mais rapidamente do que as outras)

A configuração pronta para uso é semelhante a esta:

Configuração de auditoria padrão

Configuração recomendada:

Configuração de auditoria recomendada

O Cognos Audit Database - Live contém 1 semana de dados de auditoria. Os dados com mais de 1 semana são movidos para o banco de dados de auditoria Cognos - histórico.

A linha do Cognos Audit Database - Live para o Cognos Audit Database - Histórico no diagrama é responsável por:

  • Cópia de dados de Auditoria ao Vivo para Auditoria Histórica
  • Remova todas as linhas na Auditoria ao Vivo com mais de 1 semana
  • Remova todas as linhas do histórico de auditoria com mais de x anos
  • Remova todas as linhas em COGIPF_ACTION com mais de 6 meses

Índices

Diferentes tipos de banco de dados têm diferentes tipos de indexação. Um índice de banco de dados é uma estrutura de dados, associada a uma Tabela (ou Visualização), usada para melhorar o tempo de execução de consultas ao recuperar os dados dessa tabela (ou Visualização). Trabalhe com seu DBA para criar a estratégia ideal. Eles vão querer saber as respostas a perguntas como essas para tomar as melhores decisões sobre quais colunas indexar. Obviamente, o administrador do banco de dados poderia descobrir as respostas para algumas ou todas essas perguntas sem a sua ajuda, mas isso levaria um pouco de pesquisa e algum tempo:

  • Quantos registros as tabelas têm e que tamanho você espera que cresçam? (Indexar uma tabela não será útil, a menos que a tabela tenha um grande número de registros.)
  • Você sabe quais colunas são exclusivas? Eles permitem valores NULL? Quais colunas têm tipo de dados inteiro ou inteiro grande? (As colunas com tipos de dados numéricos e que são UNIQUE e NOT NULL são fortes candidatas a participar da chave de índice.)
  • Onde estão seus principais problemas de desempenho hoje? Eles estão recuperando os dados? Existem consultas ou relatórios específicos que são mais problemáticos? (Isso pode levar o administrador do banco de dados a algumas colunas específicas que podem ser otimizadas.)
  • Quais campos são usados ​​na junção de tabelas para relatórios?
  • Quais campos são usados ​​para filtragem, classificação, agrupamento e agregação?

Não surpreendentemente, essas são as mesmas perguntas que precisariam ser respondidas para melhorar o desempenho de quaisquer tabelas de banco de dados.

Suporte IBM recomenda criando um índice nas colunas “COGIPF_REQUESTID”, “COGIPF_SUBREQUESTID” e “COGIPF_STEPID” para as seguintes tabelas para melhorar o desempenho:

  • COGIPF_NATIVEQUERY
  • COGIPF_RUNJOB
  • COGIPF_RUNJOBSTEP
  • COGIPF_RUNREPORT
  • COGIPF_EDITQUERY

Mais em outras tabelas menos usadas:

  • COGIPF_POWERPLAY
  • COGIPF_HUMANTASKSERVICE
  • COGIPF_HUMANTASKSERVICE_DETAIL

Você pode usar isso como ponto de partida, mas eu faria o exercício de responder às perguntas acima para chegar à melhor resposta para sua organização.

outras considerações

  1. Modelo de auditoria FM. Lembre-se de que o modelo do Framework Manager que a IBM fornece é modelado nas tabelas e campos padrão. Todas as alterações feitas nas tabelas de relatórios precisarão ser refletidas no modelo. A facilidade ou complexidade dessas mudanças - ou sua competência organizacional para fazer essas mudanças - podem afetar a solução que você escolher.
  2. Campos adicionais. Se você vai fazer isso, agora é a hora de adicionar campos adicionais para contexto ou dados de referência para melhorar os relatórios de auditoria.
  3. Tabelas de resumo. Em vez de apenas copiar os dados para sua tabela histórica, compacte-os. Você pode agregar os dados ao nível do dia para torná-los mais eficientes para os relatórios.
  4. Visualizações em vez de tabelas. Outros dizem, “Portanto, em vez de ter um banco de dados 'atual' e um banco de dados 'histórico', você deve ter apenas um banco de dados, e todas as tabelas nele devem ser prefixadas com 'histórico'. Em seguida, você deve criar um conjunto de visualizações, um para cada tabela que deseja ver como 'atual', e fazer com que cada visualização filtre as linhas históricas que você não deseja ver e deixe apenas as atuais passarem. ”
    https://softwareengineering.stackexchange.com/questions/276395/two-database-architecture-operational-and-historical/276419#276419

Conclusão

O resultado final é que, com as informações fornecidas aqui, você deve estar bem preparado para ter uma conversa produtiva com seu DBA. As chances são boas de que ela já tenha resolvido problemas semelhantes antes.

As mudanças propostas na arquitetura do Cognos Audit Database irão melhorar o desempenho tanto em relatórios diretos quanto em aplicativos de terceiros que dependem dele, como Motio'S ReportCard e inventário.

A propósito, se você já conversou com seu DBA, adoraríamos saber mais sobre ela. Também adoraríamos saber se você resolveu o problema de um banco de dados de auditoria com desempenho insatisfatório e como o fez.