Dies ist eine Delphi -Client -Bibliothek für Prometheus, ähnlich wie Bibliotheken, die für andere Sprachen erstellt wurden.
Die Prometheus Delphi Client Library ist eine Reihe von Klassen, mit denen Sie Ihre Delphi -Anwendungen mit Prometheus -Metriken instrumentieren können.
Sie können Ihren Delphi-Code mit benutzerdefinierten Metriken instrumentieren und integriert und bereit sind bereit, Metriken zu verwenden.
Die Bibliothek unterstützt außerdem das textbasierte Expositionsformat von Prometheus, das über einen HTTP -Endpunkt in der Instanz Ihrer Webanwendung mit bestimmten Middlewares oder direktem Aufruf des Textexporteurs konfiguriert und verfügbar gemacht werden kann.
Prometheus ist ein beliebtes Open-Source-Überwachungstool, das in modernen Softwareumgebungen häufig verwendet wird. Es bietet ein leistungsstarkes System zum Sammeln und Analysieren von Metriken aus verschiedenen Quellen, einschließlich Anwendungen, Servern und anderen Systemen.
Um Prometheus effektiv zu verwenden, benötigen Sie eine Clientbibliothek, die in Ihrer bevorzugten Programmiersprache implementiert ist und in Ihre Anwendungen integriert werden kann, um die relevanten Metriken dem Prometheus -Server auszusetzen.
Hier werden wir die Client -Bibliothek für Prometheus besprechen, die für Embarcadero Delphi geschrieben wurden.
Die Prometheus Delphi Client Library bietet eine Reihe von Funktionen , die sie zu einem leistungsstarken und flexiblen Werkzeug zur Überwachung von Delphi -Anwendungen mithilfe von Prometheus machen.
Durch die Nutzung der Bibliothek können Sie wertvolle Einblicke in die Leistung und das Verhalten Ihrer Delphi-Anwendungen erhalten und datengesteuerte Entscheidungen treffen, um sie zu verbessern.
Hier sind einige unterstützte Funktionen:
Um mit der Prometheus Delphi Client Library zu beginnen, müssen Sie diese Schritte befolgen.
Die Installation erfolgt mit dem Befehl boss install :
boss install marcobreveglieri/prometheus-client-delphiWenn Sie es manuell installieren möchten, laden Sie den Quellcode von GitHub herunter, fügen Sie einfach die folgenden Ordner zu Ihrem Projekt hinzu, in Projekt> Optionen> Ressourcenkompiler> Verzeichnisse und Bedingungen> Dateisuchpfad einschließen
prometheus-client-delphi/Source
Definieren Sie die Metriken, die Sie mit den entsprechenden Klassen verfolgen möchten (siehe unten).
Registrieren Sie Ihre Metriken in der Standardkollektorregistrierung oder in einer eigenen Registrierung für die nachfolgende Handhabung und Exportation.
Aktualisieren Sie Ihre Metriken nach Bedarf, um die entsprechenden Methoden aufzurufen, die Sie in der Collector -Instanz abhängig von den Klassen finden, auf die sie basieren.
Sie können Ihre Metriken exportieren, die den textbasierten Exporteur aufrufen oder eine Bereitschaft zur Verwendung von Middleware verwenden, die auf Ihr bevorzugtes Delphi -Web -Framework abzielt (siehe Abschnitt MiddleWares unten für Einzelheiten).
Der Prometheus -Delphi -Client unterstützt die folgenden Metriktypen.
Ein Zähler ist eine kumulative Metrik, die einen einzigen monoton zunehmenden Zähler darstellt, dessen Wert beim Neustart nur erhöhen oder auf Null zurückgesetzt werden kann. Sie können beispielsweise einen Zähler verwenden, um die Anzahl der geführten Anfragen, die erledigten Aufgaben oder Fehler darzustellen.
Verwenden Sie keinen Zähler, um einen Wert freizulegen, der abnehmen kann. Verwenden Sie beispielsweise keinen Zähler für die Anzahl der derzeit ausgeführten Prozesse. Verwenden Sie stattdessen eine Anzeige.
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 .Eine Messgerät ist eine Metrik, die einen einzelnen numerischen Wert darstellt, der willkürlich auf und ab gehen kann.
Messgeräte werden in der Regel für gemessene Werte wie Temperaturen oder aktuelle Speicherverwendung verwendet, aber auch "Zählungen", die wie die Anzahl der gleichzeitigen Anforderungen auf und ab gehen können.
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 .Ein Histogramm -Proben -Beobachtungen (normalerweise Dinge wie Anfordern von Dauern oder Antwortgrößen) und zählt sie in konfigurierbaren Eimern. Es liefert auch eine Summe aller beobachteten Werte.
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 .Ähnlich wie bei einem Histogramm probiert eine zusammenfassende Beobachtungen (normalerweise Dinge wie Anforderungsdauern und Antwortgrößen). Während es auch eine Gesamtzahl von Beobachtungen und eine Summe aller beobachteten Werte liefert, berechnet es konfigurierbare Quantile über ein Schiebzeitfenster.
*** !!! In der Entwicklung !!! ***
Sie können auch Ihre eigenen benutzerdefinierten Metriken implementieren, indem Sie die entsprechenden Klassen ( TCollector oder Tsimplecollector ) erben.
Alle Metriken können Etiketten haben und die Gruppierung verwandter Zeitreihen ermöglichen.
Als Beispiel einen Zähler nehmen:
uses
Prometheus.Collectors.Counter;
begin
var LCounter := TCounter
.Create( ' http_requests_handled ' , ' HTTP handled requests total ' , [ ' path ' , ' status ' ])
.Register();
end .Metriken mit Etiketten werden bei der Deklaration nicht initialisiert, da der Kunde nicht wissen kann, welche Werte das Etikett haben kann. Es wird empfohlen, die Etikettenwerte zu initialisieren, indem Sie die entsprechende Methode aufrufen und schließlich eine andere Methode aufrufen, um den Wert der mit den Etikettenwerten zugeordneten Metrik zu ändern:
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 .Es gibt verschiedene Optionen zum Exportieren von Metriken. Beispielsweise können Sie Metriken aus einer Windows -Dienstanwendung mithilfe einer TIDHTTP -Serverkomponente aus Indy -Komponenten exportieren und einen "/Metrics" -Dend aufdecken, an dem Sie textbasierte Metrikdaten auf Prometheus -Server exportieren.
Sie können auch eine Middleware für Ihr Lieblings -Web -Framework herunterladen oder sich die Beispielprojekte ansehen.
Um die Verwendung des Prometheus -Clients in Webanwendungen, die mit Delphi erstellt wurden, zu erleichtern, finden Sie hier Middlewares zum Herunterladen und Installieren.
Jede Middleware integriert die Unterstützung für die Belastung von Metriken auf Prometheus -Server mithilfe des entsprechenden Formats und ohne jeden Endpunkt manuell codieren zu müssen.
In diesen getrennten Repositorys finden Sie offizielle Prometheus -Kunden Middlewares :
| Middleware |
|---|
| Delphi MVC Framework |
| Pferd |
Der Prometheus -Client arbeitet mit Delphi 11 Alexandria zusammen, da er fortgeschrittene Funktionen der Delphi -Sprache verwendet, aber mit einigen geringfügigen Änderungen könnte er möglicherweise in früheren Versionen funktionieren.