theplankmeister / datadog_bundle
通过为您的 Symfony4 应用提供的服务,提供 Datadog 中动态统计信息操作。
Requires
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.14
- phpspec/phpspec: ^5.1
- phpstan/phpstan-symfony: ^0.10.2
This package is auto-updated.
Last update: 2024-09-12 23:53:06 UTC
README
此包提供了通过用户定义的类调整 Datadog 指标的一个相对简单的接口,使用注解来声明指标类型、操作和名称,为您的应用提供代码补全,并与 PHPStan 等代码分析工具兼容。
安装
为了在您的应用中安装此包,请使用 composer 进行安装
$ composer require theplankmeister/datadog_bundle
配置
默认情况下,所需配置仅为在您的服务文件中定义指标前缀的 datadog_metric_prefix 参数。
parameters: my_param: something another_param: something else datadog_metric_prefix: metric_prefix
使用方法
假设您已在您的应用中启用了自动注入。如果没有,那么您知道如何手动连接服务以保证可用性。在您的应用命名空间中创建一个扩展 ThePlankmeister\DatadogBundle\AbstractDatadogService 的类。例如: src/Datadog/Stats.php
<?php namespace App\Datadog; use ThePlankmeister\DatadogBundle\AbstractDatadogService; class Stats extends AbstractDatadogService { }
这将通过自动注入和类型提示 App\Datadog\Stats 类在您的应用中提供。现在您需要使用类注解声明指标和要执行的指标操作(如果需要,还要传递参数)。以下是一个示例
<?php /** * @method void incFooBarBaz(float $sampleRate = 1.0, array|string|null $tags = null, int $incValue = 1) When Netaxept registration fails **/ class Stats extends AbstractDatadogService { }
此注解的关键部分是 @method void <method name>([arguments]) [description]。请注意,方法名为 incFooBarBaz。前 3 个字符 inc 用于确定此方法将调用 Datadog 的 increment 方法。方法名的其余部分假定为大驼峰命名法,将在大小写边界处断开并在其间插入点。与前缀一起,这意味着此方法调用将增加 metric_prefix.foo.bar.baz 指标。下面列出了支持的数据狗方法和要调用它们的前缀。
也有可能(实际上,对于某些方法来说这是必需的)传递这些方法的参数,这些参数将传递给相应的 Datadog 方法。例如,给定上述注解,在您的应用中,您可以
<?php namespace App\Amazing\Service; use App\Datadog\Stats; class Foo { /** * This is injected in the constructor * @var Stats **/ protected $stats; ... public function bar() { $this->stats->incFooBarBaz(0.2, ['tagname' => 'value'], 5); } ... }
在这里,指标 metric_prefix.foo.bar.baz 将增加,尽管样本率为 0.2,同时使用提供的标签/值,并使用增量值 5。
使用 timing()、microtiming()、gauge()、histogram()、distribution() 和 set() 方法时,必须提供参数,就像在相应的 DogStatsd 方法 中预期的那样。
使用这些简单的规则,可以充分利用 DogStatsd 类的 increment()、decrement()、timing()、microtiming()、gauge()、histogram()、distribution()、set() 和 updateStats() 方法,只需在您的统计类中添加一个 @method 注解即可,同时提供应用中的代码补全,并让 PHPStan 对您的代码库感到满意。