league / statsd
一个用于在PHP中处理StatsD的简单库。
Requires
- php: ^7.4 || ^8.0
Requires (Dev)
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.6
README
一个用于在PHP中处理StatsD的库。
安装
通过Composer
composer require league/statsd
要使用Statsd服务提供者,您必须在引导Laravel应用程序时注册该提供者。
使用方法
配置
$statsd = new League\StatsD\Client(); $statsd->configure([ 'host' => '127.0.0.1', 'port' => 8125, 'namespace' => 'example' ]);
或者
$statsd1 = StatsD\Client::instance('server1')->configure([...]); $statsd2 = StatsD\Client::instance('server2')->configure([...]);
StatsD客户端默认情况下等待ini_get('default_socket_timeout')
秒来打开套接字。要减少超时,请将'timeout' => <float>
添加到您的配置中。
如果StatsD客户端无法向StatsD服务器发送数据,它将抛出ConnectionException
。您可以选择禁用这些异常并记录PHP警告。要这样做,请在您的配置中包含以下内容
'throwConnectionExceptions' => false
如果省略,此选项默认为true
。
计数器
$statsd->increment('web.pageview'); $statsd->decrement('storage.remaining'); $statsd->increment([ 'first.metric', 'second.metric' ], 2); $statsd->increment('web.clicks', 1, 0.5);
仪表
$statsd->gauge('api.logged_in_users', 123456);
集合
$userID = 23; $statsd->set('api.unique_logins', $userID);
计时器
$statsd->timing('api.response_time', 256);
$metrics = array('api.response_time' => 256, 'api.memory' => 4096)); $statsd->timings($metrics);
计时块
$statsd->time('api.dbcall', function () { // this code execution will be timed and recorded in ms });
标签
注意! 该功能支持Datadog格式的标签功能!
您可以为客户端发送的所有度量配置它。
$statsd->configure([ 'tags' => ['some_general_tag' => 'value'] ]);
或者您可以为单个度量发送它。
$statsd->increment('web.clicks', 1, 1, ['host' => $_SERVER['HTTP_HOST']]);
框架集成
尽管这个库可以与任何PHP框架一起使用,但以下是一些通过包含的适配器快速集成最流行框架的方法。
Laravel 4.x
在您的app/config/app.php
中找到providers
密钥并注册Statsd服务提供者。
'providers' => [ // ... 'League\StatsD\Laravel\Provider\StatsdServiceProvider', ]
在您的app/config/app.php
中找到aliases
密钥并添加Statsd外观别名。
'aliases' => [ // ... 'Statsd' => 'League\StatsD\Laravel\Facade\StatsdFacade', ]
Laravel 5.x
如果您使用Laravel >=5.5
,statsd使用包发现自动注册服务提供者和外观。
对于Laravel 5的旧版本,或者如果您禁用了包发现
在您的config/app.php
中找到providers
密钥并注册Statsd服务提供者。
'providers' => [ // ... League\StatsD\Laravel5\Provider\StatsdServiceProvider::class, ]
在您的app/config/app.php
中找到aliases
密钥并添加Statsd外观别名。
'aliases' => [ // ... 'Statsd' => League\StatsD\Laravel5\Facade\StatsdFacade::class, ]
Lumen
在您的引导应用程序文件boostrap/app.php
中注册提供者。
在文件的“注册服务提供者”部分底部添加以下行。
$app->register(\League\StatsD\Laravel5\Provider\StatsdServiceProvider::class);
将配置文件statsd.php
手动从目录/vendor/league/statsd/config
复制到目录/config
(您可能需要创建此目录)。
包配置
在您的.env
文件中添加配置
STATSD_HOST=127.0.0.1 STATSD_PORT=8125 STATSD_NAMESPACE=
测试
phpunit
贡献
有关详细信息,请参阅CONTRIBUTING
鸣谢
许可协议
MIT许可协议(MIT)。请参阅许可文件以获取更多信息。