На облачных платформах вы часто слышите, что из-за высокой нагрузки на соседние виртуальные машины, дисков через Ethernet с избыточной подпиской, резервного копирования или динамической миграции на другое оборудование виртуальная машина может на мгновение «зависнуть».
У меня есть подозрение, что это происходит с одной из наших виртуальных машин Ubuntu у облачного провайдера, которого я не хочу публично опозорить.
Каждую ночь он недоступен для внешних служб мониторинга. Сама машина выглядит здоровой с точки зрения нагрузки, трафика и т. Д. Однако провайдер предполагает, что с сетью все в порядке.
Я хотел бы иметь возможность (не) доказать, что эти пейджеры вызывают зависания виртуальных машин.
Одна из моих идей заключалась в том, чтобы записывать дату в журнал каждую секунду, и после короткого момента недоступности посмотреть, не пропустили ли мы «бит».
Однако это кажется ошибочным, потому что что, если виртуальная машина поддерживает свои собственные часы и допускает отклонение от оборудования хоста.
Если наши внутренние часы замерзают вместе с виртуальной машиной, у нас все равно будет хорошая последовательность секунд в этом файле журнала и часы, которые теперь отстают от реального времени.
Есть ли лучший способ / инструмент, который я могу использовать, чтобы определить, что машина зависает?
Я предполагаю, что реальное время, и наше время будет показателем, но опять же, есть и другие причины дрейфа часов.
Я думаю, что вы на правильном пути, записывая время в файл журнала каждую секунду, но по указанным вами причинам это может быть ненадежным. В дополнение к записи времени на локальный диск, почему бы вашему процессу cron не обратиться к известной стабильной системе по сети и не заставить эту систему записывать запрос на диск? Что-то столь же простое, как wget, может работать, если вы делаете HTTP-запрос к системе и эта система регистрирует запросы. Конечно, в идеале вы хотите, чтобы целевая система была относительно «близка» к системе, которую вы подозреваете в проблемной с точки зрения сети, но это может помочь вам получить хотя бы некоторые данные для отладки.
Я бы пинговал виртуальную машину с внешнего хоста. Если виртуальная машина зависает, ее сетевой стек тоже должен отображаться в последовательности регистрируемых эхо-запросов.
Вы можете использовать Nagios, ИТ-решение для мониторинга. С этим вы можете проверить Загрузка процессора (и многое другое) и получать оповещения на свою почту или через веб-консоль. Вам необходимо установить сервер на свой компьютер и удаленный исполнитель плагинов на виртуальной машине.
Вот довольно крутой урок: http://www.tecmint.com/how-to-add-linux-host-to-nagios-monitoring-server/