Esta API permite obter via método GET uma listagem com o consumo de memória do Appserver detalhado por itens tais como: Memória Residente, Memória Ram , Memória Ram Livre, etc.
Com o resultado é possível analisar a "saúde" do server, muito útil para monitorar o ambiente permitindo se antecipara até a um travamento por conta do consumo elevado de memória.
Inicialmente é necessário inserir no arquivo appserver.ini uma seção para que seja habilitado o serviço de monitoramento servidor de aplicação(Appserver):
[APP_MONITOR] enable=1
A partir da habilitação do serviço, esta API pode ser utilizada diretamente no próprio navegador de internet como: "CHROME", em um client HTTP como o: "POSTMAN", ou então, construindo um programa fonte .TLPP.
O retorno da mesma é um arquivo JSON que pode ser utilizado posteriormente da forma que for necessária para a sua aplicação.
A API possibilita duas formas de consumo:
Partindo destes princípios, sua utilização pode ser feita requisitando um endereço como este: https://localhost:32033/api/*
Caso executado diretamente no navegador, será mostrado uma página como esta para cada endpoint:
Também é possível consumir a API por meio de um programa fonte .TLPP escrevendo uma User Function ou uma Classe.
#include "tlpp-core.th" #include "tlpp-rest.th" @Get("/tlpp/rest/servermonitor") User Function serverMonitor() Local cMethod := "GET" Local cServer := "https://localhost:32033/api" Local cUri := "/appserver/metrics" Local cUriAll := "/appserver/metrics/?all" Local cUriSpc := "/appserver/metrics/?memory_resident" Local cHeadRet := "" Local cPostParms := "" Local cGetParms := "" Local nTimeout := 5 Local aHeadStr := {} Local jReturn //consultando as opções da api com a primeira URI jReturn := HttpQuote(cServer+cUri, cMethod, cGetParms, cPostParms, nTimeOut, aHeadStr, @cHeadRet) Conout("Retorno da primeira URI-->> " + cValToChar(jReturn)) //consultando o retorno geral da API jReturn := HttpQuote(cServer+cUriAll, cMethod, cGetParms, cPostParms, nTimeOut, aHeadStr, @cHeadRet) Conout("Retorno da consulta geral-->> " + cValToChar(jReturn)) //consultando o retorno de um valor especifico da API jReturn := HttpQuote(cServer+cUriSpc, cMethod, cGetParms, cPostParms, nTimeOut, aHeadStr, @cHeadRet) Conout("Retorno da consulta específica-->> " + cValToChar(jReturn)) Return
#include "tlpp-core.th" #include "tlpp-rest.th" class serverMonitor from LongclassName public method new() constructor @Get("/tlpp/rest/servermonitor") public method mServerMonitor() endclass method new() class serverMonitor return Self method mServerMonitor() class serverMonitor Local cMethod := "GET" Local cServer := "https://localhost:32033/api" Local cUri := "/appserver/metrics" Local cUriAll := "/appserver/metrics/?all" Local cUriSpc := "/appserver/metrics/?memory_resident" Local cHeadRet := "" Local cPostParms := "" Local cGetParms := "" Local nTimeout := 5 Local aHeadStr := {} Local jReturn //consultando as opções da api jReturn := HttpQuote(cServer+cUri, cMethod, cGetParms, cPostParms, nTimeOut, aHeadStr, @cHeadRet) Conout("Retorno da primeira URI-->> " + cValToChar(jReturn)) //consultando o retorno geral da API jReturn := HttpQuote(cServer+cUriAll, cMethod, cGetParms, cPostParms, nTimeOut, aHeadStr, @cHeadRet) Conout("Retorno da consulta geral-->> " + cValToChar(jReturn)) //consultando o retorno de um valor especifico da API jReturn := HttpQuote(cServer+cUriSpc, cMethod, cGetParms, cPostParms, nTimeOut, aHeadStr, @cHeadRet) Conout("Retorno da consulta específica-->> " + cValToChar(jReturn)) return .T.
A API coleta os dados diretamente no binário do servidor de aplicação(AppServer), pois como se trata de medições de consumo de memória não poderia ser diferente.
Seu uso, como demonstrado acima, pode ser feito acessando-a utilizando o endpoint de 3 diferentes formas o que interfere diretamente no resultado esperado.
Utilizando o endpoint - appserver/metrics
Utilizando o endpoint - appserver/metrics?all
Utilizando o endpoint - appserver/metrics?memory_resident
P.S.: É possível passar mais de um parâmetro para a API concatenando-os seguindo a metodologia QueryString.