vend/statsd

此包已被废弃,不再维护。没有建议的替代包。

适用于PHP 5.5+的简单可扩展StatsD客户端库

v1.1.1 2016-02-17 03:27 UTC

README

适用于PHP 5.5+的简单可扩展StatsD客户端

Build Status Code Coverage Scrutinizer Code Quality Latest Stable Version Latest Unstable Version

功能

  • 正确分割大量指标跨越多个数据报文
  • 可以替换发送的指标的底层格式,以支持类似Datadog的标签和直方图
  • 支持样本率,但将跳过发送的决定留给调用者(使用工厂和套接字直接操作)
  • 在发送指标时不会阻塞,只支持UDP(具有主观性,但那可能就是你所需要的)

使用方法

此库在整个过程中使用依赖注入。要实例化客户端,你需要一个套接字和一个工厂。

use Vend\Statsd\Client;
use Vend\Statsd\Socket;
use Vend\Statsd\Factory;

$client = new Client(
    new Socket(),
    new Factory()
);

一旦你有了客户端,你可以使用熟悉的statsd方法在客户端上排队指标。客户端在调用 ->flush() 之前不会发送它们。

$client->increment('some.metric_key'); // incremented by 1
$client->decrement('some.metric_key'); // decremented by 1
$client->counter('some.counter', 3);   // incremented by 3
$client->gauge('some.gauge', 10);
$client->timer('some.timer', 0.25);
$client->set('some.set', 'some_value');

$client->flush(); // actually sends the metrics

这些方法返回工厂生成的 MetricInterface(因此你可以附加额外的信息)。

你也可以使用工厂和套接字直接立即发送指标。《MetricInterface》上的 ->getData() 方法提供了应该发送到statsd服务器的序列化字符串。

$socket = new Socket('127.0.0.1', 8125);
$factory = new Factory();

$socket->open();
$socket->write($factory->increment('some.key')->getData());
$socket->close();

扩展

有关如何扩展库的示例,请参阅 Vend\Statsd\Datadog 命名空间。通过将其传递给客户端,使用不同的 Factory。特定的Datadog工厂将允许指标携带标签信息。

NullClientClientAwareInterfaceClientAwareTrait

有助于将statsd客户端进行可选(设置)注入到你的类中的实用程序类。使用方法与PSR3等效物几乎相同。