myoperator / metrics
将指标推送到StatsD服务器的包装器
2.2.0
2015-10-29 09:44 UTC
Requires
- php: >= 5.3.0
Requires (Dev)
- phpunit/phpunit: >= 4.4.0
This package is not auto-updated.
Last update: 2024-09-28 07:56:55 UTC
README
此库为基于myoperator PHP应用程序的应用程序指标提供基础。
依赖关系
- codeasashu/statsd-php (Composer 包)
- php >= 7.2
- UDP statsd 连接
快速入门
将此库作为composer依赖项安装到您想要添加指标的项目中。
composer require myoperator/metrics
或者简单地将以下内容添加到您的 composer.json
{
"require": {
"myoperator/metrics": "^1"
}
}
然后在您的引导脚本或任何可初始化的脚本中初始化 Metrics 实例
use MyOperator\Metrics\Metrics; Metrics::setApplication('your-app-name'); // Your metrics base name Metrics::setConnection('localhost', 8125); // UDP connection host and port
然后您可以在应用程序的任何地方获取 Metrics 实例并发送指标。例如,为耗时函数发送 timing 指标
Metrics::getInstance()->startTiming('fn.time'); $this->consumeTime(); Metrics::getInstance()->endTiming('fn.time'); //Same name that you started logging time with
注意 此仓库是位于 https://github.com/codeasashu/statsd-php 的源代码的扩展
要查看所有文档,请参阅 https://github.com/codeasashu/statsd-php 文档,并查看可用方法和日志记录机制
指标类型
以下指标类型受支持,并且它们的名称与名称相同
计数器
计数器发送任意数量的任何事物,只能随时间增加
例如
$user->login(); //some method to login user metrics::getinstance()->count('user.login', 1); //increase user login by 1
计数器可用于记录
- 服务的请求数量
- 完成的任务(用户登录,发票生成)
- 错误或异常
仪表
仪表用于度量任何随时间增加或减少的任意随机数
例如
$items = $queue->getItems(); //some method to get items in queue metrics::getinstance()->count('queue.item.count', count($items)); //Send number of items in queue
仪表可用于记录
- 队列中的项目数量
- 缓存内存大小
- 活动进程/线程/容器的数量
计时器
计时器是任何指标的关键组件,添加它构成了SLO的基础。此外,计时器还可以用于计算平均值,总和等。
计时器可以通过以下方式记录
基于开始和停止的计时器
在此,我们开始计时器并在任务完成后停止。这最适合在同一个脚本中执行任务的场景。
Metric::getInstance()->startTiming('task.time'); //String for reference $task->takeTime(); //Time taking task Metric::getInstance()->endTiming('task.time'); //End the time
自我时间计算
如果您想自己计时指标,可以使用 timing 方法
$starttime = microtime(true); $task->takeTime(); //Some time taking task $timeconsmed = (microtime(true) - $starttime) * 1000; Metric::getInstance()->timing('task.time', $timeconsmed);
基于回调的方法
Metric::getInstance()->time("task.time", function() { $task->takeTime(); //Some time taking task });