Для многих людей интернет стал просто незаменим, он является источником их доходов. Большинство веб-приложений не могут позволить себе быть недоступными даже несколько секунд. Spatie выпустили очень полезный пакет **Laravel Uptime Monitor**, который обеспечивает простой и мощный способ отслеживания доступности вашего сайта и даты истечения SSL-сертификата. Uptime Monitor уведомит вас о недоступности вашего сайта при помощи гибкой системы уведомлений Laravel 5.3. А когда ваш сайт "поднимется", пакет любезно уведомит вас и расскажет, в течении какого времени сайт был недоступен. Давайте посмотрим, как настроить и использовать этот пакет. == Установка == Сначала установите Laravel Uptime Monitor при помощи Composer: %%(sh) composer require spatie/laravel-uptime-monitor %% Добавьте его сервис-провайдер в %%(t)config/app.php%%: %% 'providers' => [ ... Spatie\UptimeMonitor\UptimeMonitorServiceProvider::class, ]; %% Затем, чтобы опубликовать файл настроек, выполните следующую команду в терминале: %%(sh) php artisan vendor:publish --provider="Spatie\UptimeMonitor\UptimeMonitorServiceProvider" %% Выполните следующую команду, чтобы мигрировать таблицу **монитора** в базу данных %%(sh) php artisan migrate %% И наконец, откройте файл %%(t)app/Console/Kernel.php%% и запланируйте команды %%(sh)monitor:check-uptime%% и %%(sh)monitor:check-certificate%% вот так: %% protected function schedule(Schedule $schedule) { $schedule->command('monitor:check-uptime')->everyMinute(); $schedule->command('monitor:check-certificate')->daily(); } %% Не забудьте добавить запись Laravel Cron на сервере, чтобы команды **монитора** могли выполняться повторно: %%(t) * * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1 %% == Использование == После установки пакета вы можете добавить веб-сайты, которые необходимо отслеживать, с помощью команды %%(sh)monitor:create%%. Если вы добавите URL, начинающийся на %%(t)https://%%, монитор начнёт отслеживать и SSL-сертификат: %%(sh) php artisan monitor:create https://laravel-news.com %% При необходимости он спросит, надо ли искать в отклике сайта определённую строку. Если строки в отклике нет, проверка доступности сайта считается проваленной. Через несколько минут выполните %%(sh)php artisan monitor:list%% {{Image /packages/proger/habravel/uploads/718-Screen-Shot-2016.png, height=100px}} Выведется список всех отслеживаемых сайтов и результаты проверок доступности и SSL-сертификатов с некоторыми данными об этих сертификатах. Ещё есть команды %%(sh)monitor:delete%%, %%(sh)monitor:enable%% и %%(sh)monitor:disable%%. Первая - для удаления сайта из списка мониторинга, а другие две - для включения и отключения мониторинга указанного URL сайта: %%(sh) php artisan monitor:delete http://example.com php artisan monitor:enable http://example.com php artisan monitor:disable http://example.com %% == Обзор == Если вы откроете файл %%(t)config/laravel-uptime-monitor.php%%, то увидите, что пакет Laravel Uptime Monitor имеет множество настроек. Обратите внимание на следующие важные настройки: * Вы можете настроить **уведомления** (опция **notifications**) - добавить каналы уведомлений для каждого события, которое будет вызывать пакет Laravel Uptime Monitor (он поддерживает шесть разных типов событий). Вы легко можете использовать любой канал, поддерживаемый системой уведомлений Laravel 5.3, такой как Slack, почта и т.д. * Если вы используете Laravel Uptime Monitor из нескольких мест, вы можете использовать опцию **location** для их обозначения. Указанные **location** будет отправляться в каждом уведомлении. * Опция **resend_uptime_check_failed_notification_every_minutes** служит для указания интервала отправки уведомления о том, что сайт не доступен; по умолчанию он равен 60 минутам. * Ещё две опции: первая **mail** - для указания почтового адреса для уведомлений от пакета, вторая **webhook_url** - для указания URL для Slack, если вы пользуетесь каналом уведомлений Slack. * Опция **run_interval_in_minutes** служит для указания интервала между проверками доступности. Обратите внимание на то, что если проверка неудачна, пакет проигнорирует эту опцию и начнёт проверять данный сайт каждую минуту. * Опция **timeout_per_site** задаёт период в секундах, после которого процесс проверки должен "сдаться", по умолчанию он равен 10 секундам. * Опция **fire_monitor_failed_event_after_consecutive_failures** определяет количество проваленных проверок доступности, после которого необходимо вызвать событие %%Spatie\UptimeMonitor\Events\MonitorFailed%%, по умолчанию - две. * Опция **fire_expiring_soon_event_if_certificate_expires_within_days** вызывает событие %%(t)SslExpiresSoon%%, когда до истечения SSL-сертификата остаётся меньше дней, чем указано в этой опции. Если вам нужен мощный инструмент для мониторинга доступности сайтов и дат истечения SSL-сертификатов - попробуйте Laravel Uptime Monitor.