Esta es una biblioteca de clientes de Delphi para Prometeo, similar a las bibliotecas creadas para otros idiomas.
La Biblioteca de Clientes Prometheus Delphi es un conjunto de clases que le permiten instrumentar sus aplicaciones Delphi con Métricas Prometheus .
Le permite instrumentar su código Delphi con métricas personalizadas y proporciona algunas métricas incorporadas y listas para usar.
La biblioteca también es compatible con el formato de exposición de texto de Prometheus, que se puede configurar y poner a disposición a través de un punto final HTTP en la instancia de su aplicación web utilizando artículos intermedios específicos o llamando directamente al exportador de texto.
Prometeo es una popular herramienta de monitoreo de código abierto que se usa ampliamente en entornos de software modernos. Proporciona un sistema poderoso para recopilar y analizar métricas de varias fuentes, incluidas aplicaciones, servidores y otros sistemas.
Para usar Prometheus de manera efectiva, necesita una biblioteca de clientes implementada en su lenguaje de programación favorito que pueda integrarse en sus aplicaciones para exponer las métricas relevantes al servidor Prometheus.
Aquí discutiremos la biblioteca de clientes para Prometheus escrita para Embarcadero Delphi.
La Biblioteca de Clientes Prometheus Delphi ofrece una gama de características que lo convierten en una herramienta potente y flexible para monitorear las aplicaciones Delphi utilizando Prometheus.
Al usar la biblioteca, puede obtener información valiosa sobre el rendimiento y el comportamiento de sus aplicaciones Delphi y tomar decisiones basadas en datos para mejorarlas.
Estas son algunas de las características compatibles:
Para comenzar con la biblioteca de clientes Prometheus Delphi, debe seguir estos pasos.
La instalación se realiza utilizando el comando boss install :
boss install marcobreveglieri/prometheus-client-delphiSi elige instalarlo manualmente, descargue el código fuente de GitHub, simplemente agregue las siguientes carpetas a su proyecto, en Proyecto> Opciones> Compilador de recursos> Directorios y condicionales> Incluir Ruta de búsqueda de archivos
prometheus-client-delphi/Source
Defina las métricas que desea rastrear utilizando las clases apropiadas (ver más abajo).
Registre sus métricas dentro del registro de recaudadores predeterminados o en un registro propio para el manejo y exportación posterior.
Actualice sus métricas según sea necesario llamar a los métodos apropiados que puede encontrar en la instancia de colección dependiendo de las clases a las que se basan.
Puede exportar sus métricas llamando al exportador basado en texto o hacer uso de un middleware listo para usar que se dirige a su marco web de Delphi favorito (consulte la sección MiddleWares a continuación para más detalles).
El cliente Prometheus Delphi admite los siguientes tipos de métricas.
Un contador es una métrica acumulativa que representa un solo contador monotónicamente que aumenta cuyo valor solo puede aumentar o reiniciarse para reiniciar. Por ejemplo, puede usar un contador para representar el número de solicitudes atendidas, tareas completadas o errores.
No use un contador para exponer un valor que puede disminuir. Por ejemplo, no use un contador para el número de procesos de ejecución actualmente; en su lugar, use un calibre.
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 .Un medidor es una métrica que representa un valor numérico único que puede subir y bajar arbitrariamente.
Los medidores generalmente se usan para valores medidos como temperaturas o el uso de la memoria actual, pero también "cuentan" que pueden subir y bajar, como el número de solicitudes concurrentes.
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 .Un histograma muestra observaciones (generalmente cosas como duraciones de solicitud o tamaños de respuesta) y las cuenta en cubos configurables. También proporciona una suma de todos los 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 .Similar a un histograma, un resumen de las observaciones de muestras (generalmente cosas como las duraciones de solicitud y los tamaños de respuesta). Si bien también proporciona un recuento total de observaciones y una suma de todos los valores observados, calcula cuantiles configurables en una ventana de tiempo deslizante.
*** !!! En desarrollo !!! ***
También puede implementar sus propias métricas personalizadas heredando las clases apropiadas ( TCollector o tsimplecollector ).
Todas las métricas pueden tener etiquetas , lo que permite la agrupación de series de tiempo relacionadas.
Tomar un mostrador como ejemplo:
uses
Prometheus.Collectors.Counter;
begin
var LCounter := TCounter
.Create( ' http_requests_handled ' , ' HTTP handled requests total ' , [ ' path ' , ' status ' ])
.Register();
end .Las métricas con etiquetas no se inicializan cuando se declaran, porque el cliente no puede saber qué valores puede tener la etiqueta. Se recomienda inicializar los valores de la etiqueta llamando al método apropiado y luego finalmente llamar a otro método para alterar el valor de la métrica asociada a los valores de la etiqueta:
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 .Hay varias opciones para exportar métricas. Por ejemplo, puede exportar métricas desde una aplicación de servicio de Windows utilizando un componente de servidor TidHTTP de los componentes Indy y exponer un punto final "/métrico" donde exporta datos de métricos basados en texto al servidor Prometheus.
También puede descargar un middleware para su marco web favorito o echar un vistazo a los proyectos de muestra.
Para aliviar el uso del cliente Prometheus dentro de las aplicaciones web creadas con Delphi, encontrará aquí MiddleWares para descargar e instalar.
Cada middleware integra el soporte para exponer métricas al servidor Prometheus utilizando el formato apropiado y sin tener que codificar cada punto final manualmente.
Puede encontrar el cliente de Prometheus Middlewares oficial en estos repositorios separados:
| Middleware |
|---|
| Marco de Delphi MVC |
| Caballo |
El cliente Prometheus trabaja con Delphi 11 Alexandria, ya que utiliza características avanzadas del lenguaje Delphi, pero con algunos cambios leves tal vez podría funcionar en versiones anteriores.