Разработка системы мониторинга для мониторинга состояния здоровья httpd на серверах 100 000 - PullRequest
0 голосов
/ 11 декабря 2018

Это был один из вопросов о дизайнерском интервью, где я не мог прийти к окончательному решению.Я хотел бы подготовить это для моих будущих интервью.Вопрос в том, что у вас есть 100 тыс. Серверов, разделенных между центрами обработки данных (компания XYZ владеет этими центрами обработки данных) в США и Европе.Я должен спроектировать систему мониторинга, которая будет сообщать о состоянии работоспособности службы httpd и в конечном итоге будет отображать результаты на информационной панели.Теперь задача состоит в том, чтобы проверка работоспособности монитора заняла бы 10 секунд, что является ограничением для этого проекта.

Я придумал следующие решения:

  1. Basic - реализовать скрипт, который отправляетGET-запрос к странице состояния httpd / apache и проверьте ответ.В зависимости от ответа об успешном / неудачном выполнении отобразите результаты в пользовательском интерфейсе панели управления соответствующим образом.Сценарий устанавливается на отдельном сервере мониторинга и работает как демон.Это синхронное решение, которое определенно займет более 10 секунд для серверов 100k.
  2. Добавляя в решение 1, я изменил, внедрив асинхронный с использованием async.io или обратных вызовов, так что каждый запрос от сервера мониторинга не будет заблокирован.Тем не менее, это неэффективно по производительности.
  3. Следующим шагом является создание нескольких серверов мониторинга, и каждый из них будет контролировать подмножество серверов в центрах обработки данных.Например: если n = 10, то каждый сервер мониторинга может отслеживать 10 тыс. Серверов, тем самым сокращая время выполнения.Но, тем не менее, интервьюер чувствовал, что это кластерное решение по-прежнему неэффективно, чтобы сократить время в течение 10 с.

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

...