alan / yii2-metrics
There is no license information available for the latest version (v1.0.3) of this package.
yii2 framework metrics
v1.0.3
2023-04-12 07:10 UTC
Requires
- ext-json: *
- alan/yii2-crontab: ^1.0
- promphp/prometheus_client_php: ^2.4.0
- yiisoft/yii2: *
- yiisoft/yii2-redis: ^2.0
Requires (Dev)
- phpunit/phpunit: <7
README
接入步骤:
- 定义常量 YII_APP_NAME,该常量用于底层区分应用,由于我们经常使用yii2的高级框架,我建议定义在common配置文件下面common/config/main.php
defined('YII_APP_NAME') or define('YII_APP_NAME', 'myYiiApplication');
- 在主配置文件里面定义行为 建设配置在common/config/main.php
<?php
return [
'as metrics' => [
'class' => yii2\metrics\filters\MetricsFilter::class,
'appName' => YII_APP_NAME,
],
'components' => [
// 其它组件的配置
],
];
- 添加支持/metrics路由
<?php
namespace backend\controllers;
use yii\rest\Controller;
use yii2\metrics\MetricsTrait;
class MetricsController extends Controller {
use MetricsTrait;
public function behaviors(): array
{
$behaviors = parent::behaviors();
$this->fillIpControllerBehavior($behaviors, ['127.0.0.1']);//允许访问访路由的ip白名单
return $behaviors;
}
}
- 上报rabbitmq任务数数据
use yii\console\Controller;
use yii2\metrics\MetricsTrait;
class CrontabController extends Controller {
/**
* 上报rabbitMq任务剩余情况到prometheus
*/
public function actionRabbitMqMetrics()
{
//此该填写了backend模块的id
$factory = new \yii2\metrics\rabbitMq\Factory(YII_APP_NAME, 'app-backend');
try {
foreach ($factory->getIterator() as $task) {
\yii2\crontab\base\Crontab::instance()->withTargetData($task)->withHandler($task)->run();
}
}catch (\Exception $exception) {
echo sprintf("actionCheckQueues has exception msg:%s, at file:%s, at line: %d, trace: %s\n",
$exception->getMessage(), $exception->getFile(), $exception->getLine(), '');
}
}
}
- 添加计划任务
# 商户上报mq任务数量
* * * * * php yii crontab/rabbit-mq-metrics