invoiced/php-resque-statsd

将 php-resque 作业的指标提交到 StatsD/Graphite

dev-master 2016-11-29 00:49 UTC

This package is auto-updated.

Last update: 2024-09-13 07:47:21 UTC


README

php-resque-statsd 将 StatsD 指标跟踪集成到 php-resque 中。

对于每个由 php-resque 捕获的作业,都会将多个指标提交到 StatsD,包括跟踪作业执行次数的计数器和跟踪 php-resque 工作者工作时间的计时器。

php-resque-statsd 还支持跟踪使用 php-resque-scheduler 安排的作业的指标。将跟踪安排作业的适当监听器自动注册,因此您无需额外操作。

使用 php-resque-statsd

php-resque-statsd 以单个类(lib/ResqueStatsD.php)的形式存在,除 php-resque 本身外没有其他依赖项。

要开始使用 StatsD 跟踪您的作业,您只需要将 ResqueStatsD.php 包含到您的项目中。

如果您使用 php-resque 提供的 resque.php 脚本启动 php-resque,您只需要修改通过 APP_INCLUDE 环境变量提供给 php-resque 的引导文件即可。

require_once '/path/to/ResqueStatsD.php';

StatsD 连接详细信息

php-resque-scheduler 将自动检查以下环境变量(如果存在),并在连接到 StatsD 时使用它们

  • STATSD_HOST / STATSD_PORT
  • GRAPHITE_HOST

为了便于与现有设置集成,如果 STATSD_HOSTGRAPHITE_HOST 包含单个冒号和随后的一或多个数字,则将解释为 HOST:PORT 组合,并相应地设置主机和端口。

如果您在项目中不使用环境变量,您仍然可以告诉 php-resque-statsd StatsD 的位置

$host = '127.0.0.1';
$port = 8579;

require_once '/path/to/ResqueStatsD.php';
ResqueStatsd::setHost($host, $port);

指标

php-resque-statsd 默认为其生成的所有指标使用前缀 resque。如果需要,您可以覆盖此行为。

require_once '/path/to/ResqueStatsd.php';
ResqueStatsd::setPrefix('resque.production');

基于队列的指标

以下指标针对每个队列进行跟踪,而不是每个唯一的作业

  • stats.resque.queue.QUEUE_NAME.enqueued 此队列中入队作业的计数器

  • stats.resque.queue.QUEUE_NAME.finished 此队列中成功处理作业的计数器

  • stats.resque.queue.QUEUE_NAME.failed 此队列中失败作业的计数器

  • stats.timers.queue.QUEUE_NAME.processed 此队列中处理作业的计时器

  • stats.resque.queue.QUEUE_NAME.scheduled 如果使用 php-resque-scheduler,此队列中安排的未来执行作业的数量

例如,对于在队列 transcode 中执行的 所有作业,以下 StatsD 指标将被创建

  • stats.resque.queue.transcode.enqueued
  • stats.resque.queue.transcode.finished
  • stats.resque.queue.transcode.failed
  • stats.timers.resque.queue.transcode.processed
  • stats.resque.queue.transcode.scheduled

基于作业的指标

指标也按作业级别进行跟踪

  • stats.resque.job.JOB_CLASS.enqueued 此作业入队次数的计数器

  • stats.resque.job.JOB_CLASS.finished 此作业成功处理次数的计数器

  • stats.resque.job.JOB_CLASS.failed 此作业失败次数的计数器

  • stats.timers.job.JOB_CLASS.processed 此作业处理时间的计时器

  • stats.resque.job.JOB_CLASS.scheduled 如果使用 php-resque-scheduler,此作业安排未来执行次数

例如,名为 Job_SendEmail 的作业将创建以下指标

  • stats.resque.job.Job_SendEmail.enqueued
  • stats.resque.job.Job_SendEmail.finished
  • stats.resque.job.Job_SendEmail.failed
  • stats.timers.resque.job.Job_SendEmail.processed
  • stats.resque.job.Job_SendEmail.scheduled

贡献者

  • chrisboulton