pmg / queue-cloudwatch
使用CloudWatch指标跟踪您的队列
v6.0.0
2023-01-12 16:30 UTC
Requires
- php: ^8.0
- aws/aws-sdk-php: ^3.0
- pmg/queue: ^6.0
- psr/log: ^1.0 || ^2.0 || ^3.0
Requires (Dev)
- phpunit/phpunit: ^9.5
- pmg/queue: ^6.0@beta
- symfony/phpunit-bridge: ^5.4
This package is auto-updated.
Last update: 2024-09-05 17:16:53 UTC
README
A pmg/queue
driver decorator that dispatches cloudwatch metrics when messages are sent through.
示例
use AWS\CloudWatch\CloudWatchClient; use PMG\Queue\Driver; use PMG\Queue\CloudWatch\MetricsDriver; /** @var Driver $driver */ $driver = createAnActualDriverSomehow(); // this is the default metric namespace, change if desired. $metricNamespace = 'PMG/Queue'; $finalDriver = new MetricsDriver($driver, CloudWatchClient::factory([ 'region' => 'us-east-1', 'version' => 'latest', ]), $metricNamespace); // now use $finalDriver in your consumers/producers
指标
所有指标都有维度...
QueueName
- 指标所属队列的名称MessageName
- 从Message::getName
返回的值。当消息不存在于日志中时,此维度将被设置为__none__
。
驱动器指标
DriverError
- 当包装的驱动器抛出DriverError
异常时触发的Count
指标单位。这将有一个包含抛出异常的类名的ErrorClass
维度。
消息计数
每个驱动器上的方法都有一个指标,基本上。它们都使用 Count
作为指标单位。
MessageEnqueue
- 在Driver::enqueue
时触发MessageDequeue
- 在Driver::dequeue
时触发。这仅在从包装的Driver::dequeue
返回消息时触发。MessageSuccess
- 在Driver::ack
时触发MessageFailure
- 在Driver::fail
时触发MessageRetry
- 在Driver::retry
时触发MessageRelease
- 在Driver::release
时触发
您可以使用这些消息计数来对高失败或重试消息量进行警报。
消息计时器
指标驱动器将跟踪从出队到确认、失败或重试的作业时间。这些都使用 Milliseconds
作为它们的指标单位。
MessageTime
- 消息花费的时间,无论消息如何结束都会跟踪。
MessageTime
指标将有一个额外的名为 MessageStatus
的维度,表示计时器完成时给定消息的结束方式。这将
Success
当消息传递给Driver::ack
时Failure
当消息传递给Driver::fail
时Retry
当消息传递给Driver::retry
时Release
当消息传递给Driver::release
时
错误处理
首先,包装的驱动器总是首先调用。如果包装的驱动器发生错误,则会在记录任何进一步指标之前跟踪并重新抛出。这里的想法是,驱动器错误使任何作用于消息的过程无效。
云监控客户端的错误将被捕获并记录。如果您希望看到这些错误,可以将第四个 $logger
参数传递给 MetricsDriver
,但默认情况下使用 NullLogger
。
use AWS\CloudWatch\CloudWatchClient; use PMG\Queue\Driver; use PMG\Queue\CloudWatch\MetricsDriver; /** @var Driver $driver */ $driver = createAnActualDriverSomehow(); // this is the default metric namespace, change if desired. $metricNamespace = 'PMG/Queue'; $finalDriver = new MetricsDriver($driver, CloudWatchClient::factory([ 'region' => 'us-east-1', 'version' => 'latest', ]), $metricNamespace, $yourLoggerFromSomeplace); // now use $finalDriver in your consumers/producers
测试
./vendor/bin/phpunit
测试包括一组实际与云监控交互的集成测试。确保已设置凭据才能运行这些测试。否则,您可以使用...排除它们
./vendor/bin/phpunit --exclude-group integration