У меня есть серверы разработки с почасовой оплатой.
Некоторые машины на самом деле не используются в течение нескольких дней в неделю, существует ли механизм, который будет кричать серверу после X времени, что он не активен.
под активным, я имею в виду, никаких ssh-соединений, никаких изменений диска и т. д.
Спасибо
Сервер всегда что-то делать (писать журналы, запускать процесс инициализации, прочее ядро и т. д.). Вы действительно спрашиваете, Как узнать, что пользователь не использует сервер?
Если вам нужна активность пользователей, я бы посмотрел на pinky
команда. Я предлагаю вам написать задание cron, которое запускается каждый час или около того, и анализирует вывод pinky
. Он покажет вам, когда в последний раз был активен какой-либо из активных TTY и с каким пользователем.
$ pinky
Login Name TTY Idle When Where
jdoe John Doe ?:0 ????? 2016-07-28 13:13 :0
jdoe John Doe pts/1 00:14 2016-07-28 13:15 :1
Это менее надежно, но если вам просто нужно знать, есть ли внешние подключения к серверу (HTTP и т. Д.), Вы можете проанализировать вывод netstat -tupn
. Если сервер устанавливает исходящие соединения, вам, вероятно, потребуется отфильтровать их.
Я не рекомендую это делать, если вы точно не знаете, какие связи вам нужны. Если вы не слишком конкретны, вероятность ложных срабатываний (и случайных отключений) будет довольно высокой.
Обычно в наши дни это в основном делается путем автомасштабирования, но это больше относится к экземплярам контейнера, работающим в некоторой контейнерной среде, такой как Kubernetes (это обычная функция в таких средах).
Вы не говорите, являются ли эти машины аппаратными или виртуальными. Если бы они были аппаратными машинами, одним из классических решений был бы переход в виртуализированную среду (возможно, повторное использование серверов и повышение плотности серверов и, вероятно, уменьшение количества серверов), что позволило бы вам выполнять горячую миграцию гостей на меньшее количество хостов, когда меньше хостов. необходимо. Я полагаю, что VMWare, вероятно, уже имеет инструменты, которые уже делают это.
Но вы сказали, что это среда разработки, и поэтому я предлагаю вам несколько возможных решений.
1) Имейте что-то, что просто отключает их и запускает по расписанию; активируется ли завершение работы с помощью cron или другого расписания корпоративных заданий, зависит от вас; и у вас может не быть доступа для удаленного запуска машин. Одно из соображений, которое необходимо учитывать, - это то, что вы хотите, чтобы машины были доступны для исправлений и обновлений политик. График также будет способствовать более согласованным ожиданиям пользователей. Если используется оборудование, настройки BIOS могут использоваться для загрузки или сценарий для вашей / их виртуальной среды.
2) Поскольку это среда разработки, вы можете взглянуть на Vagrant и перейти от одной (предположительно общей) среды разработки к одной на каждой рабочей станции разработчиков ... это, вероятно, будет больше сдвиг, чем вы были бы готовы хотя бы сделать. Существует некоторая кривая обучения, и вам может потребоваться увеличить ресурсы, доступные разработчикам, но ваши разработчики могут ухватиться за этот шанс, во многом в зависимости от того, насколько вы, возможно, захотите принять концепцию инфраструктуры как кода (IaC) для повторяющиеся среды инициализации.
... 3) В зависимости от вашей среды и характера системы разработки ... Я могу представить себе балансировщик нагрузки HTTP, который, когда все рядовые серверы не работают, перенаправлял клиента на страницу, которая давала им возможность запрашивать среда будет запущена.
Надеюсь, это даст вам несколько плодотворных идей.
Ура, Кэмерон