Tempo aproximado para leitura: 00:04:51 min
Dúvida
Como configurar o Deferred Logging no PASOE?
Ambiente
Framework - Framework (Linha Datasul) - PASOE - A partir do OpenEdge 12
Solução
Em ambiente de produção, quanto menos log for gerado menor será o esforço de processamento, resultando em um melhor o tempo de resposta para cada requisição. Outro fator a ser considerado é a gestão do espaço em disco consumido pelos arquivos de log.
Em contrapartida, essa redução no nível de detalhamento dos logs dificulta o diagnóstico de problemas que possam surgir.
O PASOE - Progress Application Server for OpenEdge resolveu essa questão com um componente chamado Deferred Logging, que é basicamente um log gerado em memória que pode ser persistido em disco apenas quando necessário.
Com ele é possível deixar o nível de log padrão bem baixo, para registrar apenas erros, enquanto em memória configura-se um nível de log mais detalhado. Caso ocorra algum crash no PASOE este log é escrito automaticamente em disco. Também, a qualquer momento que o administrador desejar, uma fotografia desse log pode ser obtida.
Além do nível de log e dos tipos de entradas a serem capturados, definimos também quantas linhas queremos armazenar em memória. Atingido esse número de linhas, as mais antigas vão sendo sobrescritas.
Para saber quantas linhas de log armazenar, podemos utilizar como base o consumo delas em disco. Em média cada linha consome aproximadamente 135 bytes. Então, para armazenar 200 mil linhas, por exemplo, serão gastos aproximadamente 27 megabytes. Com base nisso você pode verificar, dependendo do seu volume de requisições, quanto tempo de log ficam registrados nessa quantidade de linhas, e assim estimar um valor razoável entre consumo de memória e o tempo que esse limite permite armazenar de histórico. Um tempo bom seria entre 15 e 30 minutos, permitindo algum problema ser reportado nesse tempo e as informações de log ainda estarem em memória para serem capturadas.
A configuração é realizada dentro do arquivo conf/openedge.properties da instância do PASOE. Abaixo um exemplo de uso dessas configurações:
defrdLogEntryTypes=ASPlumbing,DB.Connects,4GLTrace,FileID
defrdLoggingLevel=4
defrdLogNumLines=200000
A seguir um exemplo de onde elas devem ser inseridas dentro do arquivo:
Para forçar a escrita do log em memória para o arquivo de log em disco é possível consumir uma API REST ou uma consulta OEJMX. No item Saiba mais você encontrará informações sobre essas duas formas de interagir com o PASOE.
Com a API REST, utilizar a seguinte consulta:
http://{{hostname}}:{{port}}/oemanager/applications/{{application}}/agents/{{AgentID}}/flushDeferredLog
Com o OEJMX, utilizar a seguinte consulta:
{"O":"PASOE:type=OEManager,name=AgentManager","M":["flushDeferredLog","APP_NAME","AGENT_ID"]}
Após executado o comando o conteúdo do log em memória será enviado para o mesmo arquivo de log padrão no disco, sendo apresentado conforme o exemplo:
DFRD Deferred log start
...
DFRD-3 seq=9936 : 2023-11-30T17:33:22.760-0300 028644 026664 4 AS-Admin mtapsv:-:? AS -- TRACE: STATELESS: running stateless internal function on proxy-id 291818085 (8458)
DFRD-3 seq=9937 : 2023-11-30T17:33:22.761-0300 028644 026664 3 AS-Admin mtapsv:-:? AS -- TRACE: SINGLETON Non-Void Method (Proxy 291818085) END SUCCESS.
DFRD-3 seq=9938 : 2023-11-30T17:33:22.761-0300 028644 026664 4 AS-Admin mtapsv:-:? AS -- TRACE: cso4GL: In execProc() - successful execution. (8458)
...
DFRD Deferred log end (9962 entries)
Saiba mais
A seguir são apresentados documentos auxiliares sobre o assunto exposto no artigo:
Framework - Linha Datasul - TEC - Como habilitar o uso da API REST para gerenciamento do PASOE
Framework - Linha Datasul - TEC - Como utilizar o POSTMAN para consultas REST
Framework - Linha Datasul - TEC - Como consultar métricas de acesso ao PASOE via API REST
Framework - Linha Datasul - TEC - Como gerenciar uma instância PASOE utilizando OEJMX
What is Deferred Logging for PASOE?
Use deferred logging in PAS for OpenEdge
0 Comentários