You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Laravel中测量任务执行速率?实时监控批量请求指标

嘿,针对你在Laravel中测量批量请求任务执行速率、并对接Zabbix实现时间切片展示的需求,我整理了实用的实现思路和核心关键词,帮你精准获取实时指标:

一、任务内埋点:精准记录请求速率

在你的MakeRequestBulkJob任务里直接添加时间统计逻辑,把请求数量、耗时等数据输出到Zabbix可抓取的载体(比如自定义日志、本地文件或数据库)。示例代码修改如下:

public function handle() {
    $startTime = microtime(true); // 记录任务启动时间戳
    $httpClient = new HttpClient();
    $url = http_build_url(config('app.baseurl'),[
        'query' => ['id' => \uniqid()], 
        HTTP_URL_JOIN_QUERY
    ]);
    
    $requests = [];
    for($i=0; $i<$this->count;$i++){
        $requests[] = new Request('GET', $url);
    }
    
    $responses = Pool::batch($httpClient, $requests, ['concurrency' => 100]);
    $results = [];
    foreach ($responses as $res) {
        $statusCode = $res->getStatusCode();
        $results[$statusCode] = isset($results[$statusCode]) ? $results[$statusCode]+1 : 1;
    }

    // 计算核心指标:总请求数、总耗时、平均请求速率(请求/秒)
    $totalRequests = count($requests);
    $totalDuration = microtime(true) - $startTime;
    $avgRequestRate = round($totalRequests / $totalDuration, 2);

    // 将指标写入自定义日志,供Zabbix Agent抓取
    $metricData = json_encode([
        'timestamp' => time(),
        'total_requests' => $totalRequests,
        'avg_rate' => $avgRequestRate,
        'status_counts' => $results
    ]) . PHP_EOL;
    file_put_contents(storage_path('logs/request_metrics.log'), $metricData, FILE_APPEND);
    
    dump($results);
}

这种方式能精准获取单次任务的请求速率,是最直接的自定义统计方案。

二、Laravel生态辅助工具

如果需要更全局的队列任务监控,可以结合:

  • Laravel Horizon:仅支持Redis队列,能实时查看队列整体的任务处理速率、耗时、失败率等指标,适合从宏观层面监控队列性能;
  • Laravel Telescope:可以追踪单个任务的执行细节,包括耗时、数据库查询等,辅助排查性能瓶颈。
三、对接Zabbix的核心关键词

你可以用以下关键词自行查找更详细的配置教程:

  • Laravel Zabbix custom metrics:自定义指标对接Zabbix的实现方案
  • Zabbix agent userparameter:通过UserParameter抓取自定义日志/文件中的指标
  • Zabbix time-series aggregation:Zabbix时间序列数据聚合(实现按时间切片展示)
  • Laravel job performance monitoring:Laravel任务性能监控的最佳实践
四、Zabbix配置关键步骤
  1. 在Zabbix Agent配置文件中添加UserParameter,指定抓取你生成的request_metrics.log文件内容;
  2. 在Zabbix后台创建对应监控项,设置合适的数据采集间隔(比如1分钟);
  3. 创建监控图形时,选择时间聚合函数(如按分钟求平均、求和),即可实现请求速率的时间切片展示。

内容的提问来源于stack exchange,提问作者Павел Иванов

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:27:31