raven-8.x-2.x-dev/src/Hook/MonitoringRunSensors.php

src/Hook/MonitoringRunSensors.php
<?php

namespace Drupal\raven\Hook;

use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Hook\Attribute\Hook;
use Drupal\monitoring\Result\SensorResultInterface;
use Sentry\Event;
use Sentry\Severity;

/**
 * Implements hook_monitoring_run_sensors().
 */
#[Hook('monitoring_run_sensors')]
class MonitoringRunSensors {

  public function __construct(protected ConfigFactoryInterface $configFactory) {
  }

  /**
   * Implements hook_monitoring_run_sensors().
   *
   * @param \Drupal\monitoring\Result\SensorResultInterface[] $results
   *   The sensor results.
   */
  public function __invoke(array $results): void {
    if (!$this->configFactory->get('raven.settings')->get('send_monitoring_sensor_status_changes')) {
      return;
    }
    $levels = [
      SensorResultInterface::STATUS_OK => Severity::DEBUG,
      SensorResultInterface::STATUS_INFO => Severity::INFO,
      SensorResultInterface::STATUS_WARNING => Severity::WARNING,
      SensorResultInterface::STATUS_CRITICAL => Severity::FATAL,
      SensorResultInterface::STATUS_UNKNOWN => Severity::ERROR,
    ];
    foreach ($results as $result) {
      if ($result->isCached()) {
        continue;
      }
      if (($previous = $result->getPreviousResult()) && $previous->getStatus() === $result->getStatus()) {
        continue;
      }
      $event = Event::createEvent();
      $event->setLevel(new Severity($levels[$result->getStatus()]));
      $message = '[category] label: message';
      $message_placeholders = [
        'category' => $result->getSensorConfig()->getCategory(),
        'label' => $result->getSensorConfig()->getLabel(),
        'message' => $result->getMessage(),
      ];
      $formatted_message = strtr($message, $message_placeholders);
      $event->setMessage($message, $message_placeholders, $formatted_message);
      \Sentry\captureEvent($event);
    }
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc