theplankmeister/datadog_bundle

通过为您的 Symfony4 应用提供的服务,提供 Datadog 中动态统计信息操作。

2.0.0 2020-02-12 12:36 UTC

This package is auto-updated.

Last update: 2024-09-12 23:53:06 UTC


README

Build Status Latest Stable Version License

此包提供了通过用户定义的类调整 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 对您的代码库感到满意。