Il s'agit d'une bibliothèque client Delphi pour Prometheus, similaire aux bibliothèques créées pour d'autres langues.
La bibliothèque client de Prometheus Delphi est un ensemble de classes qui vous permettent d'instruler vos applications Delphi avec des métriques Prometheus .
Il vous permet d'instrumenter votre code Delphi avec des mesures personnalisées et fournit des mesures intégrées et prêtes à l'emploi.
La bibliothèque prend également en charge le format d'exposition basé sur le texte de Prometheus, qui peut être configuré et mis à disposition via un point de terminaison HTTP sur l'instance de votre application Web à l'aide de Middlewares spécifiques ou appelant directement l'exportateur de texte.
Prometheus est un outil de surveillance des open source populaire qui est largement utilisé dans les environnements logiciels modernes. Il fournit un système puissant pour la collecte et l'analyse des mesures de diverses sources, y compris les applications, les serveurs et autres systèmes.
Pour utiliser efficacement Prometheus , vous avez besoin d'une bibliothèque client implémentée dans votre langage de programmation préféré qui peut être intégrée dans vos applications pour exposer les mesures pertinentes au serveur Prometheus.
Ici, nous discuterons de la bibliothèque client pour Prometheus écrit pour Embarcadero Delphi.
La bibliothèque client de Prometheus Delphi propose une gamme de fonctionnalités qui en font un outil puissant et flexible pour surveiller les applications Delphi à l'aide de Prometheus.
En utilisant la bibliothèque, vous pouvez obtenir des informations précieuses sur les performances et le comportement de vos applications Delphi et prendre des décisions basées sur les données pour les améliorer.
Voici quelques fonctionnalités prises en charge:
Pour commencer avec la bibliothèque client de Prometheus Delphi, vous devez suivre ces étapes.
L'installation se fait à l'aide de la commande boss install :
boss install marcobreveglieri/prometheus-client-delphiSi vous choisissez de l'installer manuellement, téléchargez le code source à partir de GitHub, ajoutez simplement les dossiers suivants à votre projet, dans Project> Options> Compiler de ressource> Répertoires et conditionnels> Inclure le chemin de recherche de fichiers
prometheus-client-delphi/Source
Définissez les mesures que vous souhaitez suivre en utilisant les classes appropriées (voir ci-dessous).
Enregistrez vos mesures dans le registre des collectionneurs par défaut ou dans un registre à vous pour la manipulation et l'exportation ultérieures.
Mettez à jour vos mesures au besoin en appelant les méthodes appropriées que vous pouvez trouver sur l'instance Collector en fonction des classes auxquelles ils sont basés.
Vous pouvez exporter vos mesures en appelant l'exportateur de texte ou en utilisant un middleware prêt à l'emploi qui cible votre framework Web Delphi préféré (voir la section MiddleWares ci-dessous pour plus de détails).
Le client de Prometheus Delphi prend en charge les types de métriques suivants.
Un compteur est une métrique cumulative qui représente un seul compteur augmentant monotone dont la valeur ne peut qu'augmenter ou être réinitialisée à zéro en redémarrage. Par exemple, vous pouvez utiliser un compteur pour représenter le nombre de demandes de relève, les tâches terminées ou les erreurs.
N'utilisez pas de compteur pour exposer une valeur qui peut diminuer. Par exemple, n'utilisez pas de compteur pour le nombre de processus en cours d'exécution; Utilisez plutôt une jauge.
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 .Une jauge est une métrique qui représente une seule valeur numérique qui peut arbitrairement monter et descendre.
Les jauges sont généralement utilisées pour des valeurs mesurées telles que les températures ou l'utilisation de la mémoire actuelle, mais aussi "comptes" qui peuvent monter et descendre, comme le nombre de demandes simultanées.
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 histogramme échantillonne les observations (généralement des choses comme les durées de demande ou les tailles de réponse) et les comptient dans des seaux configurables. Il fournit également une somme de toutes les valeurs observées.
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 .Semblable à un histogramme, un résumé échantillonne des observations (généralement des choses comme les durées de demande et la taille de la réponse). Bien qu'il fournisse également un nombre total d'observations et une somme de toutes les valeurs observées, il calcule des quantiles configurables sur une fenêtre de temps de glissement.
*** !!! En cours de développement !!! ***
Vous pouvez également implémenter vos propres mesures personnalisées en héritant des classes appropriées ( TCollector ou TSIMPleColector ).
Toutes les mesures peuvent avoir des étiquettes , permettant le regroupement de séries chronologiques connexes.
Prendre un compteur comme exemple:
uses
Prometheus.Collectors.Counter;
begin
var LCounter := TCounter
.Create( ' http_requests_handled ' , ' HTTP handled requests total ' , [ ' path ' , ' status ' ])
.Register();
end .Les mesures avec étiquettes ne sont pas initialisées lorsqu'elles sont déclarées, car le client ne peut pas savoir quelles valeurs l'étiquette peut avoir. Il est recommandé d'initialiser les valeurs d'étiquette en appelant la méthode appropriée, puis à l'appeler une autre méthode pour modifier la valeur de la métrique associée aux valeurs d'étiquette:
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 .Il existe plusieurs options d'exportation de mesures. Par exemple, vous pouvez exporter des métriques à partir d'une application de service Windows à l'aide d'un composant de serveur TIDHTTP à partir des composants Indy et exposant un point de terminaison "/ métriques" où vous exportez des données de métriques basées sur le texte à Prometheus Server.
Vous pouvez également télécharger un middleware pour votre cadre Web préféré ou jeter un œil aux exemples de projets.
Pour faciliter l'utilisation du client Prometheus dans les applications Web créées avec Delphi, vous trouverez ici Middlewares à télécharger et à installer.
Chaque middleware intègre la prise en charge de l'exposition des mesures au serveur Prométhée à l'aide du format approprié et sans avoir à coder chaque point de terminaison manuellement.
Vous pouvez trouver le client officiel de Prometheus Middlewares dans ces référentiels distincts:
| Middleware |
|---|
| Framework Delphi MVC |
| Cheval |
Le client de Prometheus travaille avec Delphi 11 Alexandrie car il utilise des fonctionnalités avancées du langage Delphi, mais avec quelques changements légers, il pourrait peut-être fonctionner dans les versions précédentes.