Добавление драйвера мониторинга серверов

Ход

Для того, чтобы реализовать механизм мониторинга, отличный от стандартного вам необходимо:

  • Создать класс и имплементировать интерфейс App\Services\Monitoring\Drivers\Driver.

  • Написать реализацию метода retrieve(). Этот метод принимает объект сервера (App\Entity\Server), для которого необходимо произвести получение данных об онлайне и возвращает объект передачи данных типа App\Services\Monitoring\Drivers\DTO.

/app/Services/Monitoring/Drivers/CustomDriver
<?php
declare(strict_types = 1);

namespace App\Services\Monitoring\Drivers;

use App\Entity\Server;

class CustomDriver implements Driver
{
    /**
     * {@inheritdoc}
     */
    public function retrieve(Server $server): DTO
    {
        // Логика получения данных мониторинга сервера.
    }
}
  • Установить только что созданный класс в качестве основного драйвера мониторинга:

    • Перейдите в файл /config/monitoring.php .

    • Установите полное имя класса нового драйвера с элемент driver:

/config/monitoring.php
'driver' => \App\Services\Monitoring\Drivers\CustomDriver::class
  • Сбросьте кэш приложения, дабы новая конфигурация закэшировалась.

Спецификация

Ключевые слова "ДОЛЖЕН”, “НЕ ДОЛЖЕН”, “ ТРЕБУЕТСЯ”, “СЛЕДУЕТ”, “НЕ СЛЕДУЕТ”, “РЕКОМЕНДУЕТСЯ”, “МОЖЕТ” должны интерпретироваться так же, как описано в RFC 2119.

  • Класс драйвера ДОЛЖЕН реализовывать интерфейсApp\Services\Monitoring\Drivers\Driver.

  • РЕКОМЕНДУЕТСЯ добавлять к имени класса суффикс Driver, дабы класс драйвера можно было идентифицировать по названию.

  • РЕКОМЕНДУЕТСЯ помещать драйверы мониторинга в неймспейс App\Services\Monitoring\Drivers.

  • Реализация метода retrieve() ДОЛЖНА содержать логику получения данных об онлайне заданного сервера.

  • Реализация метода retrieve() НЕ ДОЛЖНА содержать логику кэширования полученных данных. Кэширование выполняется в другом слое приложения и не входит в зону ответственности драйвера.

  • При невозможности соединиться с сервером, реализация ДОЛЖНА сообщать об этом приложению по средствам передачи соответствующего параметра в возвращаемый из метода объект.

  • При возникновении ошибки получения/парсинга данных, реализация ДОЛЖНА сообщать об этом приложению по средствам передачи соответствующего параметра в возвращаемый из метода объект.

  • При возникновении ошибки, которую драйвер не в состоянии обработать ДОЛЖНО бросаться исключение типа App\Services\Monitoring\MonitoringException. Приложение самостоятельно обработает эту исключительную ситуацию.

Last updated