tutu-ru / lib-metrics
Metrics
Installs: 38 069
Dependents: 4
Suggesters: 0
Security: 0
Stars: 0
Watchers: 11
Forks: 0
Open Issues: 0
Requires
- php: ^7.1
- domnikl/statsd: ^2.7
- psr/log: ^1.0
- tutu-ru/lib-config: ^2.0
Requires (Dev)
- phpunit/phpunit: ^7.4
- squizlabs/php_codesniffer: ^3.3
This package is auto-updated.
Last update: 2025-03-28 14:49:35 UTC
README
Версии 3.0.* мертвы - используйте 2ю мажорную версию!
Отправка метрик в statsd_exporter
use TutuRu\Metrics\StatsdExporterClientFactory; $statsdExporterClient = StatsdExporterClientFactory::create($config, $psrLogger); $statsdExporterClient->count('counter', 10); $statsdExporterClient->gauge('gauge', 50); // в этот момент происходит реальная отправка данных $statsdExporterClient->save();
MetricCollector
Объект позволяющей инкапсулировать логику замеров в одном месте.
use TutuRu\Metrics\StatsdExporterClientFactory; use TutuRu\Metrics\MetricCollector; $statsdExporterClient = StatsdExporterClientFactory::create($config, $psrLogger); class MyDataCollector extends MetricCollector { protected function getTimersMetricName(): string { return 'my_metrics'; } protected function getTimersMetricTags(): array { return ['env' => 'test']; } protected function onSave(): void { $this->increment('additional_data'); } } $collector = new MyDataCollector(); $collector->startTiming(); // code $collector->endTiming(); $collector->sendToStatsdExporter($statsdExporterClient); $statsdExporterClient->save();
Передача клиента другим объектам
Для того, чтобы клиент декларировал возможность передать ему stats_exporter клиент нужен интерфейс MetricAwareInterface
.
Пример:
use TutuRu\Metrics\StatsdExporterClientFactory; use TutuRu\Metrics\StatsdExporterAwareInterface; use TutuRu\Metrics\StatsdExporterAwareTrait; $statsdExporterClient = StatsdExporterClientFactory::create($config, $psrLogger); class MyObject implements StatsdExporterAwareInterface { use StatsdExporterAwareTrait; public function doSomething() { if (!is_null($this->statsdExporterClient)) { $this->statsdExporterClient->summary('summary_metric', 500); } } } $object = new MyObject(); $object->setStatsdExporterClient($statsdExporterClient); $object->doSomething(); $statsdExporterClient->save();
Использование в тестах других библиотек
use PHPUnit\Framework\TestCase; use TutuRu\Tests\Metrics\MemoryStatsdExporter\MemoryStatsdExporterClient; class MyTest extends TestCase { public function testMetrics() { $statsdExporterClient = new MemoryStatsdExporterClient($appName); $testObject = new TestObject(); $testObject->setStatsdExporterClient($statsdExporterClient); $testObject->someCode(); $statsdExporterClient->save(); $metrics = $statsdExporterClient->getExportedMetrics(); $firstMetric = current($metrics); $firstMetric->getName(); $firstMetric->getUnit(); $firstMetric->getValue(); $firstMetric->getTags(); } }