cosmastech/statsd-client-adapter

用于与DataDog或PHPLeague的statsd客户端一起使用的StatsD客户端适配器

0.4.0 2024-07-21 13:21 UTC

README

Latest Stable Version Total Downloads License PHP Version Require

StatsD客户端适配器

此包最初设计用于解决以下问题:

  • 我在生产环境中使用DataDog,但
  • 我不想在我的开发或测试环境中将统计数据推送到DataDog

我可能希望将那些宝贵的统计数据推送到哪里?可能是日志?可能是本地运行的 StatsD服务器?如果在我的单元测试中,我想确认正在推送日志,但又不想通过配置StatsD服务器的集成测试设置来麻烦,怎么办?

虽然 PHP League的statsd包 很好,但它不允许发送DataDog特定的统计数据(例如 直方图分布)。DataDog客户端也不允许轻松地推送到另一个StatsD实现。

此处的目标是为这两个实现提供单个接口,并易于扩展以支持不同的实现。

如果您想在Laravel中使用此库,请查看 laravel-statsd-adapter

适配器

InMemoryClientAdapter

此适配器将您的统计数据简单地记录在内存中的对象中。这最好用作在单元测试中验证统计记录的方式。

有关如何实现此方法的示例,请参阅 examples/in_memory.php

DataDogStatsDClientAdapter

这是围绕DataDog的 php-datadogstatsd 客户端的一个包装器。

如果您希望使用此适配器,请确保已安装php-datadogstatsd客户端。

composer require datadog/php-datadogstatsd

有关其配置的详细信息,请参阅 官方DogStatsD文档

有关如何实现此方法的示例,请参阅 examples/datadog.php

DatadogLoggingClient

此适配器被视为本地开发客户端,它将数据写入实现 psr-logger 接口 的类。您可以在packagist上找到实现此接口的包的 列表。如果您使用的是像Symfony或Laravel这样的框架,那么您已经安装了最流行和最可靠的实现之一: monolog/monolog

对于本地开发设置,您可以将统计数据直接写入日志。这将以与发送到DataDog相同的格式写入。

有关如何实现此方法的示例,请参阅 examples/log_datadog.php

LeagueStatsDClientAdapter

您还可以通过利用 PHP League的statsd包 将数据写入任意statsd服务器。

首先确保已安装此包。

composer require league/statsd

有关如何配置客户端的信息,请阅读他们的文档

注意,默认情况下,histogram()distribution()方法都是无操作(no-op),因为它们在statsd中不可用。

有关如何实现此功能的示例,请参阅examples/league.php

注意事项

  1. 只有DataDog的实现中的increment/decrement允许包含样本率。如果您在其他调用中使用样本率,他们的样本率将不会作为统计的一部分包含。
  2. LeagueStatsDClientAdapter上有histogram()distribution()方法,但它们不会被发送到statsd。

测试

composer test