这是Prometheus的Delphi客户库库,类似于为其他语言创建的库。
Prometheus delphi客户库库是一组类,可让您使用Prometheus指标来启动Delphi应用程序。
它允许您使用自定义指标来启动Delphi代码,并提供一些内置和准备使用指标。
该库还支持Prometheus的基于文本的展示格式,可以使用特定的中间Wares上的Web应用程序实例上的HTTP端点进行配置和提供,或直接调用文本出口商。
Prometheus是一种流行的开源监控工具,可在现代软件环境中广泛使用。它提供了一个强大的系统,用于收集和分析来自各种来源的指标,包括应用程序,服务器和其他系统。
要有效地使用Prometheus ,您需要以您喜欢的编程语言实现的客户库库,可以将其集成到您的应用程序中,以将相关指标公开到Prometheus服务器中。
在这里,我们将讨论为embarcadero delphi编写的普罗米修斯的客户库。
Prometheus Delphi客户库库提供了一系列功能,使其成为使用Prometheus监视Delphi应用程序的功能强大且灵活的工具。
通过使用图书馆,您可以对Delphi应用程序的性能和行为获得宝贵的见解,并做出数据驱动的决策以改进它们。
以下是一些支持的功能:
要开始使用Prometheus delphi客户库库,您需要遵循以下步骤。
使用boss install命令进行安装:
boss install marcobreveglieri/prometheus-client-delphi如果您选择手动安装它,请从github下载源代码,只需在项目>选项>选项>“资源编译器”>“目录和条件”> Include文件搜索路径中添加以下文件夹
prometheus-client-delphi/Source
定义要使用适当类跟踪的指标(请参见下文)。
在默认收藏家注册表中或您自己的注册表中注册您的指标,以进行后续处理和出口。
根据需要更新您的指标,请调用您可以在Collector实例上找到的适当方法,具体取决于其基于的类。
您可以导出指标调用基于文本的出口商或使用准备针对您喜欢的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 .导出指标有几种选择。例如,您可以使用TIDHTTP服务器组件从Indy组件中从Windows Service应用程序中导出指标,并将基于文本的指标数据导出到Prometheus Server中的“/指标”端点。
您还可以为您喜欢的Web框架下载中间件,也可以查看示例项目。
为了简化使用Delphi创建的Web应用程序中的Prometheus客户端的使用,您可以在这里找到以下载和安装的中间Wares 。
每个中间件都会使用适当的格式集成了将指标暴露于Prometheus服务器的支持,而无需手动编码每个端点。
您可以在这些单独的存储库中找到Prometheus的官方客户中间。
| 中间件 |
|---|
| Delphi MVC框架 |
| 马 |
Prometheus Client使用Delphi 11 Alexandria,因为它利用了Delphi语言的高级功能,但是有了一些细微的更改,它可能可以在以前的版本中起作用。