caikeal / prometheus_client_php
PHP应用程序的Prometheus仪表库。
v1.1.1
2020-10-27 07:33 UTC
Requires
- php: ^7.1.3
- ext-json: *
- guzzlehttp/guzzle: ^6.3
- illuminate/redis: ^5.6
- symfony/polyfill-apcu: ^1.6
Requires (Dev)
- phpunit/phpunit: ^8.4
- squizlabs/php_codesniffer: ^3.5
Suggests
- ext-apc: Required if using APCu.
README
此库使用Redis或APCu进行客户端聚合。如果使用Redis,建议在您的PHP工作进程旁边运行本地Redis实例。
它如何工作?
通常PHP工作进程不会共享任何状态。您可以选择三种适配器:Redis、APC或内存适配器。虽然第一种需要一个独立的二进制程序运行,但第二种只需要安装APC扩展。如果您不需要在请求之间持久化度量(例如,长时间运行的cron作业或脚本),内存适配器可能适合使用。
安装
将其作为Composer依赖项添加
composer require caikeal/prometheus_client_php
用法
一个简单的计数器
\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选项(示例显示默认值)
使用内存存储
$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());
高级用法
高级直方图用法
在实例化时传递空数组作为桶参数,将使用一组默认桶。虽然这对于典型的Web应用来说是一个很好的基础,但还有一个命名构造函数来帮助生成指数/几何桶。
例如
Histogram::exponentialBuckets(0.05, 1.5, 10);
这将使您的桶从1.5开始,每个桶增长1.5倍,跨越10个桶。
也可以查看示例。
开发
依赖项
- PHP ^7.1
- 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