Esta é uma biblioteca de clientes da Delphi para Prometheus, semelhante às bibliotecas criadas para outros idiomas.
A Biblioteca de Clientes Prometheus Delphi é um conjunto de classes que permitem instrumentar seus aplicativos Delphi com métricas de Prometheus .
Ele permite que você instrumente seu código Delphi com métricas personalizadas e fornece algumas métricas embutidas e prontas para usar.
A biblioteca também suporta o formato de exposição baseado em texto do Prometeu, que pode ser configurado e disponibilizado por meio de um terminal HTTP na instância do seu aplicativo da Web usando utensílios médios específicos ou chamando diretamente o exportador de texto.
O Prometheus é uma ferramenta popular de monitoramento de código aberto, amplamente utilizado em ambientes modernos de software. Ele fornece um sistema poderoso para coletar e analisar métricas de várias fontes, incluindo aplicativos, servidores e outros sistemas.
Para usar o Prometeu de maneira eficaz, você precisa de uma biblioteca de clientes implementada em sua linguagem de programação favorita que possa ser integrada aos seus aplicativos para expor as métricas relevantes ao servidor Prometheus.
Aqui discutiremos a biblioteca do cliente para Prometheus, escrito para Embarcadero Delphi.
A Biblioteca Cliente Prometheus Delphi oferece uma gama de recursos que a tornam uma ferramenta poderosa e flexível para monitorar aplicativos Delphi usando o PromeTheus.
Ao usar a biblioteca, você pode obter informações valiosas sobre o desempenho e o comportamento de seus aplicativos Delphi e tomar decisões orientadas a dados para melhorá-los.
Aqui estão alguns dos recursos suportados:
Para começar com a Biblioteca de Clientes Prometheus Delphi, você precisa seguir estas etapas.
A instalação é feita usando o comando boss install :
boss install marcobreveglieri/prometheus-client-delphiSe você optar por instalá -lo manualmente, faça o download do código -fonte do Github, basta adicionar as seguintes pastas ao seu projeto, no projeto> Opções> Compilador de recursos> Diretórios e condicionais> Incluir caminho de pesquisa de arquivos
prometheus-client-delphi/Source
Defina as métricas que você deseja rastrear usando as classes apropriadas (veja abaixo).
Registre suas métricas dentro do registro de colecionador padrão ou em um registro próprio para manuseio e exportação subsequentes.
Atualize suas métricas conforme necessário, chamando os métodos apropriados que você pode encontrar na instância do coletor, dependendo das classes com as quais se baseiam.
Você pode exportar suas métricas chamando o exportador baseado em texto ou fazendo uso de um middleware pronto para uso que visa sua estrutura da Web Delphi favorita (consulte a seção Middlewares abaixo para obter detalhes).
O cliente Prometheus Delphi suporta os seguintes tipos métricos.
Um contador é uma métrica cumulativa que representa um único contador monotonicamente crescente cujo valor só pode aumentar ou ser redefinido para zero na reinicialização. Por exemplo, você pode usar um contador para representar o número de solicitações atendidas, tarefas concluídas ou erros.
Não use um contador para expor um valor que possa diminuir. Por exemplo, não use um contador para o número de processos atualmente em execução; Em vez disso, use um medidor.
uses
Prometheus.Collectors.Counter;
begin
var LCounter := TCounter.Create( ' sample ' , ' Description of this counter ' );
LCounter.Inc(); // increment by 1
LCounter.Inc( 123 ); // increment by 123
end .Um medidor é uma métrica que representa um único valor numérico que pode arbitrariamente subir e descer.
Os medidores são normalmente usados para valores medidos como temperaturas ou uso de memória atual, mas também "contagens" que podem subir e descer, como o número de solicitações simultâneas.
uses
Prometheus.Collectors.Gauge;
begin
var LGauge := TGauge.Create( ' sample ' , ' Description of this gauge ' );
LGauge.Inc(); // increment by 1
LGauge.Inc( 123 ); // increment by 123
LGauge.Dec( 10 ); // decrement by 10
LGauge.SetTo( 123 ); // set value directly to 123
LGauge.SetDuration( // set value to duration of method execution
procedure
begin
// User code
end );
end .Um histograma amostras de observações (geralmente coisas como durações de solicitação ou tamanhos de resposta) e as conta em baldes configuráveis. Ele também fornece uma soma de todos os valores observados.
uses
Prometheus.Collectors.Histogram;
begin
LHistogram := THistogram.Create( ' Name of histogram metric ' , ' Help text for histogram metric ' );
// If buckets argument is not supplied, the default values will be used:
// [0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10, INFINITE].
LHistogram.Observe( 0.01 );
LHistogram.Observe( 0.04 );
LHistogram.Observe( 1 );
end .Semelhante a um histograma, um resumo amostras de observações (geralmente coisas como durações de solicitação e tamanhos de resposta). Embora também forneça uma contagem total de observações e uma soma de todos os valores observados, ele calcula quantis configuráveis em uma janela de tempo deslizante.
*** !!! Em desenvolvimento !!! ***
Você também pode implementar suas próprias métricas personalizadas herdando as classes apropriadas ( TCollector ou TSimpleCollector ).
Todas as métricas podem ter rótulos , permitindo o agrupamento de séries temporais relacionadas.
Tomando um balcão como exemplo:
uses
Prometheus.Collectors.Counter;
begin
var LCounter := TCounter
.Create( ' http_requests_handled ' , ' HTTP handled requests total ' , [ ' path ' , ' status ' ])
.Register();
end .As métricas com rótulos não são inicializadas quando declaradas, porque o cliente não pode saber quais valores o rótulo pode ter. Recomenda -se inicializar os valores dos rótulos, chamando o método apropriado e, eventualmente, chama outro método para alterar o valor da métrica associada aos valores de rotular:
uses
Prometheus.Collectors.Counter;
begin
TCollectorRegistry.DefaultRegistry
.GetCollector<TCounter>( ' http_requests_handled ' )
.Labels([ ' /api ' , 200 ]) // ['path', 'status']
.Inc(); // increment child counter attached to these label values
end .Existem várias opções para exportar métricas. Por exemplo, você pode exportar métricas de um aplicativo de serviço do Windows usando um componente do servidor TIDHTTP dos componentes Indy e expondo um terminal "/métricas", onde você exporta dados de métricas baseadas em texto para o servidor Prometheus.
Você também pode baixar um middleware para sua estrutura da web favorita ou dar uma olhada nos projetos de amostra.
Para facilitar o uso do cliente Prometheus nos aplicativos da Web criados com a Delphi, você encontrará aqui os Middlewares para baixar e instalar.
Cada middleware integra o suporte à exposição de métricas ao servidor Prometheus usando o formato apropriado e sem precisar codificar cada ponto de extremidade manualmente.
Você pode encontrar o cliente oficial do Prometheus Middlewares nesses repositórios separados:
| Middleware |
|---|
| Delphi MVC Framework |
| Cavalo |
O cliente Prometheus trabalha com o Delphi 11 Alexandria, pois utiliza recursos avançados da linguagem Delphi, mas com algumas pequenas mudanças, talvez possa funcionar em versões anteriores.