Рубрики
Uncategorized

Создание импульса-инструмент мониторинга сервера, удобный для разработчиков (часть 6)

Prineville Data Server Center создает Pulse-монитор сервера, удобный для разработчиков … Tagged с DevOps, ServerMonitoring, Linux, Laravel.

Центр сервера данных Prineville от Facebook

Создание импульса-инструмент мониторинга сервера, удобный для разработчиков (часть 6)

Это часть еженедельной серии блога разработки, где я документирую создание приложения от первоначальной идеи до ее развертывания на масштабируемой архитектуре. Даже будучи опытным разработчиком, я считаю, что эти истории являются интересными, и я обычно подбираю чаевые или два, поэтому, если вы хотите прийти вместе, и, надеюсь, каким -то образом принесет пользу, давайте копаем!

Примечание : Pulse уже запущен и доступен для использования. Вы можете создать учетную запись, посетив https://pulse.alphametric.co

Серверы дают нам холодное плечо

До сих пор Pulse был разработан для реагирования на данные, отправленные серверами. Другими словами, это реагирует на стимулы. Однако есть еще один вопрос, который мы должны задать себе:

Что происходит, когда сервер не отправляет данные? Или, более конкретно, что происходит, когда он молчит?

Пользователи должны будут иметь возможность полагаться на импульс не только для контроля отдельных компонентов своих серверов, но и на своих серверах в целом.

Прежде чем мы рассмотрим техническое решение для этого, давайте посмотрим на некоторые причины, по которым мы могли бы классифицировать сервер как молча:

  1. Сервер может быть выключен/выключен.
  2. Сервер не может быть подключен к Интернету.
  3. Сервер может быть перегружен/сбит сбой/или заканчивается память.
  4. Служба планирования Cron Cron может быть снижена.
  5. У сервера может быть неправильная запись в Crontab, что означает, что сценарий, ответственный за отправку данных, не работает правильно или даже вообще.

Один или несколько из вышеперечисленных будет означать, что Pulse не может выполнять свою работу. Поскольку мы не собираемся запустить программное обеспечение для диагностики на сервере, Pulse вместо этого нужно будет взять слепой подход к этому и просто возьмите с собой молчаливый статус независимо от основной причины.

Теперь, когда у нас есть фон, давайте посмотрим на реализацию, которую мы можем использовать для обработки сценариев, где серверы молчат.

Обнаружение молчаливых серверов

Laravel включает в себя компонент планирования задач, который мы можем использовать для сброса работы с заданием или консольной командой с предварительно определенным интервалом:

$schedule-\>command("app:silent-servers")-\>everyFiveMinutes();

В качестве примечания я предпочитаю размещать такую функциональность в консольную команду, поскольку она позволяет мне легко запустить его через ремесленную CLI.

Итак, как мы узнаем, какие серверы молчат? Что ж, к счастью, у нас есть взаимосвязь с базой данных между серверами и журналами, чтобы помочь нам в этом. Поскольку наши журналы содержат временные метки, мы можем просто получить последнюю, которую мы имеем, и использовать их, чтобы сделать вывод, когда мы в последний раз слышали на сервере.

Базовый запрос на поиск молчаливых серверов

Давайте немного разберем это. Во -первых, мы пропускаем серверы, которые уже помечены как молчаливые, а также серверы, которые являются новыми и все еще должны быть полностью настроены пользователем. Далее мы втягиваем необходимые столбцы, и, наконец, мы внедряем последний доступный журнал для сервера.

Как только у нас появятся эти результаты, мы их бродем. Это функция Laravel, которая помогает предотвратить истощение памяти при работе с потенциально тысячами записей. Вместо этого он потянет в 25 записей, пройдите их через закрытие, затем потяните в следующие 25 с другим запросом и петля до завершения.

Репортаж о молчаливых серверах

На этом этапе мы на самом деле не подтвердили молчаливые серверы. У нас есть только потенциально молчаливые серверы. Теперь нам необходимо просмотреть метку времени недавнего журнала и определить, превышает ли разница в текущем времени предел, который Pulse переносит, прежде чем рассмотреть его молчание.

Важно, чтобы мы не были слишком строгими с ограничением, так как реальность реального мира заключается в том, что задержки происходят. Тем не менее, мы не можем быть слишком либеральными. Найти сладкое место — это то, что, вероятно, будет определено с течением времени, но сейчас мы начнем с десяти минут. Если у вас есть мнение по этому поводу, я бы хотел это услышать!

Давайте посмотрим на код, который делает эту работу:

Процесс работы с молчаливыми серверами

Давайте разберем это и посмотрим, что на самом деле происходит:

  1. Мы фильтруют коллекцию, чтобы включить только серверы без журнала или серверов с последним журналом, который был создан десять или более минут назад.
  2. Затем мы отправляем один запрос базы данных для обновления статуса всех серверов, которые соответствовали фильтру. Этот шаг особенно важен, так как мы не хотим продолжать отправлять электронные письма каждые пять минут о том, что сервер молчит … пользователь должен знать только один раз.
  3. Наконец, мы отправляем пользователю уведомление по электронной почте, чтобы сообщить им, что их сервер не отправляет данные в Pulse, и, следовательно, может иметь проблему.

Правильно делать все правильно

Вы можете подумать, что если это весь код, используемый, как только сервер будет помечен как молчаливый, не будет ли он навсегда оставаться таким? К счастью, нет.

Система ведения журнала Pulse не зависит от функции проверки Silent Server. Таким образом, все необходимо сделать пользователю, чтобы «исправить» молчаливый сервер, просто правильно, любая проблема, которая привела к тому, что сервер не отправляет данные.

Когда Pulse снова начнет получать данные, он проанализирует их, а затем обновит статус сервера до хорошего или плохого. Это тот же подход, который используется Pulse при настройке нового сервера. Статус останется новым, пока Pulse не начнет получать данные, тогда он просто обновит их.

Если вам любопытно, вот кодовый импульс используется при обновлении статуса сервера:

Logic Pulse использует для установки состояния сервера

Завершая

Ну, это все на этой неделе. Далее мы уходим от самого приложения и рассмотрим сценарий оболочки, который пользователи будут работать на своих серверах, чтобы отправить статистику на пульс. Мы также обсудим мотивацию этой стратегии, а также разрешения SUDO и то, как они способствовали этому подходу.

Все это будет в статье на следующей неделе. В то же время, обязательно следуйте за мной здесь на среднем, а также на Twitter Для более частых обновлений.

Примечание : Pulse уже запущен и доступен для использования. Вы можете создать учетную запись, посетив https://pulse.alphametric.co

Спасибо, и счастливое кодирование!

Оригинал: «https://dev.to/mattkingshott/creating-pulsea-developer-friendly-server-monitoring-tool-part-6-25eg»