Um painel de ferramentas adicionais para monitoramento e investigação de erros em aplicações e soluções de integração na plataforma de dados InterSystems IRIS, na plataforma de integração Ensemble e no SGBD Caché, ou a história de outra bicicleta.
Neste artigo quero falar sobre o aplicativo que, junto com ferramentas de administração padrão, utilizo todos os dias para monitorar aplicações e soluções de integração na plataforma InterSystems IRIS e encontrar erros quando eles ocorrem.
A solução inclui visualização e edição de arrays globais, execução de consultas (incluindo JDBC/ODBC), envio de resultados de pesquisa por e-mail como arquivos XLS compactados. Visualize objetos de classe com capacidade de edição. Vários gráficos simples para protocolos de sistema.
Este é um aplicativo CSP baseado em
Se você estiver interessado, veja abaixo e em
Tudo começou estudando a questão de como registrar alterações em objetos no InterSystems IRIS, Ensemble e no Caché DBMS.
Depois de ler
A solução resultante é implementada como uma subclasse de painel de %CSP.Util.Pane, que possui uma janela de comando principal e um botão Executar, além de configurações de refinamento de comando.
Quando você entra "?" obtemos uma breve descrição desses comandos:
Globais
Meu comando mais comum é visualizar o global. Via de regra, este é um protocolo global ao depurar seu próprio projeto ou o de outra pessoa. Você pode visualizá-lo na ordem inversa, bem como aplicando um filtro ao link e aos dados. Os nós encontrados podem ser editados e excluídos:
Você pode excluir todo o global inserindo menos ^logMSW- no comando após o nome.
Mas desta forma você só pode excluir globais começando com ^log (globais de protocolo), ou seja, Uma restrição contra exclusão acidental foi implementada.
Se você inserir “*” após o nome, obterá uma lista de globais com características adicionais. O segundo “*” adicionará um novo campo “MB alocado” e outro asterisco será “MB usado”. Esta combinação de dois relatórios e a divisão em “asteriscos” é feita para dividir o relatório frequentemente longo em blocos ocupados. de grandes globais.
A partir desta tabela você pode seguir os links ativos para visualizar o próprio global ou para visualizá-lo/editá-lo de forma padrão no portal de gerenciamento clicando em R ou W no campo Permissão.
pedidos
Convertendo um relatório para o formato Excel
A segunda função usada com mais frequência é a execução de consultas. Para fazer isso, insira a instrução SQL como um comando.
O principal que me bastou no Portal de Gerenciamento de Sistemas padrão foi executar consultas em fontes JDBC/ODBC configuradas no SGBD e gerar os resultados em formato XLS, arquivar e enviar o arquivo por e-mail. Para fazer isso, na minha ferramenta, antes de executar o comando, você precisa habilitar a caixa de seleção “Baixar para arquivo Excel”.
Esse recurso economiza muito tempo na minha rotina diária e integro com sucesso módulos prontos em novos aplicativos e soluções de integração.
Mas para isso, primeiro é necessário configurar o caminho de criação dos arquivos no servidor e as credenciais do usuário e do servidor de e-mail; para isso, por sua vez, é necessário editar os nós das configurações globais do programa ^%App.Setting; .
Salvando relatórios globalmente
Muitas vezes é necessário salvar globalmente os resultados da execução do relatório. Para fazer isso eu uso os seguintes procedimentos:
Para JDBC:
##class(App.sys).SqlToDSN
Para ODBC:
##class(App.sys).SaveGateway
Para expressões SQL:
##class(App.sys).SaveSQL
Para consulta:
##class(App.sys).SaveQuery
Por exemplo, se no painel o comando
xec do ##class(App.sys).SaveQuery("%SYSTEM.License:Counts","^GN",0)
Vamos salvar o resultado da solicitação de contagem de uso de licenças no array ^GN, e você poderá ver o que foi salvo no painel com o comando: result ^GN("%SYSTEM.License:Counts",0)
Módulos de funcionalidade aumentada
E a segunda melhoria, que simplificou e automatizou bastante meu trabalho, é a implementação da capacidade de executar módulos especialmente escritos ao gerar cada linha de consulta. Dessa forma, posso criar novas funcionalidades no relatório dinamicamente de uma só vez, por exemplo, links ativos para operações adicionais em dados.
Exemplo 1: Trabalhando com a classe App.Parameter
Crie um parâmetro usando o “Table Navigator”
Edite um parâmetro através de “Opções”
Exemplo 2: Visualizando o global através do link “Histórico”
Gráficos
Inspirado no artigo [9] e para visualizar o crescimento dos bancos de dados, foi criada uma página que exibe um gráfico mensal de tamanhos de bancos de dados criados a partir do arquivo iris.log (cconsole.log) utilizando registros “Expand” retrospectivamente do dia atual.
Como exemplo, também foi criado um gráfico de eventos no InterSystems IRIS, que também é gerado a partir do arquivo de protocolo:
Links para materiais:
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
Obrigado aos autores destes e de outros artigos que me ajudaram a criar esta ferramenta.
PS Este projeto está em desenvolvimento e muitas ideias ainda não foram implementadas. Num futuro próximo pretendo fazer:
1. Modelo de aplicação na estrutura
2. Documentação automática do formato do código
Fonte: habr.com