proget-hq/prometheus_client_php

v0.9.3 2020-10-12 05:53 UTC

This package is auto-updated.

Last update: 2024-09-12 15:59:16 UTC


README

Build Status

这个库使用 Redis 或 APCu 进行客户端聚合。如果使用 Redis,我们建议在您的 PHP 工作进程旁边运行一个本地的 Redis 实例。

它是如何工作的?

通常 PHP 工作进程不会共享任何状态。您可以选择三种适配器。Redis、APC 或内存适配器。虽然第一个需要一个单独运行的二进制文件,但第二个只需要安装 APC 扩展。如果您不需要在请求之间持久化度量(例如,一个长时间运行的 cron 作业或脚本),内存适配器可能适合使用。

用法

一个简单的计数器

\Prometheus\CollectorRegistry::getDefault()
    ->getOrRegisterCounter('', 'some_quick_counter', 'just a quick measurement')
    ->inc();

写入增强的度量

$registry = \Prometheus\CollectorRegistry::getDefault();

$counter = $registry->getOrRegisterCounter('test', 'some_counter', 'it increases', ['type']);
$counter->incBy(3, ['blue']);

$gauge = $registry->getOrRegisterGauge('test', 'some_gauge', 'it sets', ['type']);
$gauge->set(2.5, ['blue']);

$histogram = $registry->getOrRegisterHistogram('test', 'some_histogram', 'it observes', ['type'], [0.1, 1, 2, 3.5, 4, 5, 6, 7, 8, 9]);
$histogram->observe(3.5, ['blue']);

手动注册和检索度量(这些步骤在 getOrRegister... 方法中组合)

$registry = \Prometheus\CollectorRegistry::getDefault();

$counterA = $registry->registerCounter('test', 'some_counter', 'it increases', ['type']);
$counterA->incBy(3, ['blue']);

// once a metric is registered, it can be retrieved using e.g. getCounter:
$counterB = $registry->getCounter('test', 'some_counter')
$counterB->incBy(2, ['red']);

暴露度量

$registry = \Prometheus\CollectorRegistry::getDefault();

$renderer = new RenderTextFormat();
$result = $renderer->render($registry->getMetricFamilySamples());

header('Content-type: ' . RenderTextFormat::MIME_TYPE);
echo $result;

更改 Redis 选项(示例显示了默认值)

\Prometheus\Storage\Redis::setDefaultOptions(
    [
        'host' => '127.0.0.1',
        'port' => 6379,
        'password' => null,
        'timeout' => 0.1, // in seconds
        'read_timeout' => 10, // in seconds
        'persistent_connections' => false
    ]
);

使用内存存储

$registry = new CollectorRegistry(new InMemory());

$counter = $registry->registerCounter('test', 'some_counter', 'it increases', ['type']);
$counter->incBy(3, ['blue']);

$renderer = new RenderTextFormat();
$result = $renderer->render($registry->getMetricFamilySamples());

还可以查看 示例

开发

依赖项

  • PHP 5.6
  • PHP Redis 扩展
  • PHP APCu 扩展
  • Composer
  • Redis

启动 Redis 实例

docker-compose up Redis

运行测试

composer install

# when Redis is not listening on localhost:
# export REDIS_HOST=192.168.59.100
./vendor/bin/phpunit

黑盒测试

仅使用 docker-compose 启动 nginx、fpm 和 Redis 设置。

docker-compose up

选择您想要测试的适配器。

docker-compose run phpunit env ADAPTER=apc vendor/bin/phpunit tests/Test/
docker-compose run phpunit env ADAPTER=redis vendor/bin/phpunit tests/Test/