これは、他の言語用に作成されたライブラリと同様のプロメテウスのDelphiクライアントライブラリです。
Prometheus Delphiクライアントライブラリは、 Prometheusメトリックを使用してDelphiアプリケーションを装備できるクラスのセットです。
これにより、カスタムメトリックを使用してDelphiコードを計測でき、組み込みの使用可能なメトリックを提供できます。
ライブラリはまた、Prometheusのテキストベースの博覧会形式をサポートしています。これは、特定のMiddleWaresを使用して、またはテキストエクスポートを直接呼び出すWebアプリケーションのインスタンスのHTTPエンドポイントを介して構成および利用可能にすることができます。
Prometheusは、最新のソフトウェア環境で広く使用されている人気のオープンソース監視ツールです。アプリケーション、サーバー、その他のシステムなど、さまざまなソースからメトリックを収集および分析するための強力なシステムを提供します。
Prometheusを効果的に使用するには、関連するメトリックをPrometheusサーバーに公開するためにアプリケーションに統合できるお気に入りのプログラミング言語に実装されたクライアントライブラリが必要です。
ここでは、Embarcadero Delphiのために書かれたPrometheusのクライアントライブラリについて説明します。
Prometheus Delphiクライアントライブラリは、Prometheusを使用してDelphiアプリケーションを監視するための強力で柔軟なツールになるさまざまな機能を提供しています。
ライブラリを使用することにより、Delphiアプリケーションのパフォーマンスと動作に関する貴重な洞察を得ることができ、それらを改善するためのデータ駆動型の決定を行うことができます。
サポートされている機能のいくつかは次のとおりです。
Prometheus Delphiクライアントライブラリを始めるには、これらの手順に従う必要があります。
インストールはboss installコマンドを使用して行われます。
boss install marcobreveglieri/prometheus-client-delphi手動でインストールすることを選択した場合は、githubからソースコードをダウンロードするだけで、プロジェクトに次のフォルダーを追加するだけで、プロジェクト>オプション>リソースコンパイラ>ディレクトリと条件>ファイル検索パスを含める
prometheus-client-delphi/Source
適切なクラスを使用して追跡するメトリックを定義します(以下を参照)。
デフォルトのコレクターレジストリ内またはその後の取り扱いとエクスポートのために、独自のレジストリ内でメトリックを登録します。
必要に応じてメトリックを更新して、コレクターインスタンスで見つけることができる適切な方法を呼び出します。
テキストベースの輸出業者を呼び出すメトリックをエクスポートするか、お気に入りのDelphi Webフレームワークをターゲットにする準備ができたミドルウェアを使用することができます(詳細については、以下のMiddleWaresセクションを参照)。
Prometheus Delphiクライアントは、次のメトリックタイプをサポートしています。
カウンターは、値が増加したり、再起動時にゼロにリセットできる単一の単調に増加するカウンターを表す累積メトリックです。たとえば、カウンターを使用して、提供されるリクエストの数、完了したタスク、またはエラーを表すことができます。
カウンターを使用して、減少する値を公開しないでください。たとえば、現在実行中のプロセスの数にカウンターを使用しないでください。代わりにゲージを使用します。
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 .ゲージは、任意に上下することができる単一の数値値を表すメトリックです。
ゲージは通常、温度や現在のメモリ使用量などの測定値に使用されますが、同時リクエストの数と同様に、上下する可能性のある「カウント」も使用されます。
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 .ヒストグラムは、観測値(通常、要求期間や応答サイズなど)をサンプリングし、構成可能なバケットでそれらをカウントします。また、観測されたすべての値の合計も提供します。
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 .ヒストグラムと同様に、要約は観測値をサンプルします(通常、要求期間や応答サイズなど)。また、観測値の合計とすべての観測値の合計も提供しますが、スライド時間ウィンドウで構成可能な分位を計算します。
*** !!!開発中!!! ***
また、適切なクラス( TCollectorまたはTSimplecollector )を継承することにより、独自のカスタムメトリックを実装することもできます。
すべてのメトリックにはラベルがあり、関連する時系列のグループ化が可能になります。
例としてカウンターを取る:
uses
Prometheus.Collectors.Counter;
begin
var LCounter := TCounter
.Create( ' http_requests_handled ' , ' HTTP handled requests total ' , [ ' path ' , ' status ' ])
.Register();
end .ラベルが宣言されたときにラベルを使用したメトリックは初期化されません。クライアントは、ラベルにどのような値を持つことができるかを知ることができないためです。適切なメソッドを呼び出してラベル値を初期化し、最終的に別のメソッドを呼び出して、ラベル値に関連付けられたメトリックの値を変更することをお勧めします。
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 .メトリックをエクスポートするには、いくつかのオプションがあります。たとえば、 IndyコンポーネントのTIDHTTPサーバーコンポーネントを使用してWindowsサービスアプリケーションからメトリックをエクスポートし、テキストベースのメトリックデータをPrometheusサーバーにエクスポートする「/メトリック」エンドポイントを公開できます。
また、お気に入りのWebフレームワークのミドルウェアをダウンロードしたり、サンプルプロジェクトをご覧ください。
Delphiで作成されたWebアプリケーション内でPrometheusクライアントの使用を容易にするために、ダウンロードしてインストールするためのMiddleWaresがここにあります。
各ミドルウェアは、適切な形式を使用して、各エンドポイントを手動でコーディングすることなく、メトリックをPrometheusサーバーに公開するためのサポートを統合します。
これらの別々のリポジトリには、公式のプロメテウスクライアントミドルウェアを見つけることができます。
| ミドルウェア |
|---|
| Delphi MVCフレームワーク |
| 馬 |
Prometheusクライアントは、Delphi Languageの高度な機能を利用しているため、 Delphi 11 Alexandriaと連携していますが、わずかな変更により、以前のバージョンで機能する可能性があります。