Оглавление:
- Шаг 1. Использование методов, предоставляемых Systemd
- Шаг 2: Настройка и использование скриптов Service Checker
- Шаг 3: Заключительные мысли
Видео: Скрипт Service Monitor для серверов Linux: 4 шага
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:54
Наличие стабильной, всегда работающей системы, даже если вы используете Linux, может быть сложной задачей.
Из-за сложности современных программных пакетов и плохого кодирования некоторые процессы неизбежно могут время от времени давать сбой. Это может быть плохо, если у вас есть сервер, и некоторые люди полагаются на эти службы.
Шаг 1. Использование методов, предоставляемых Systemd
Как вы, возможно, уже знаете, большинство современных операционных систем Linux используют systemd.
Если вы не знакомы с systemd, это, согласно википедии:
«… Система инициализации, используемая в дистрибутивах Linux для начальной загрузки пользовательского пространства и последующего управления всеми процессами, вместо систем инициализации UNIX System V или Berkeley Software Distribution (BSD)…»
Многие люди до сих пор спорят, почему было необходимо заменить старую добрую систему инициализации этой более сложной системой управления процессами, но по следующей ссылке можно найти хорошее объяснение:
www.tecmint.com/systemd-replaces-init-in-l…
Самым важным улучшением будет то, что он сможет запускать систему быстрее, чем init, из-за параллельной и параллельной обработки при загрузке вместо последовательного подхода init.
Не вдаваясь в подробности systemd, чтобы добавить процесс в systemd, вы должны создать служебный файл. Синтаксис такого файла может варьироваться от очень простого до чрезвычайно сложного, и мы не будем вдаваться в подробности. Чтобы иметь базовый файл.service, достаточно использовать следующие записи:
[Unit] Description = Описание applicationDocumentation = https://wikipedia.org/ After = local-fs.target network.target [Service] Тип = simpleExecStart = / usr / sbin / applicationExecReload = / usr / sbin / application reloadExecStop = / usr / sbin / application stopRestart = always [Install] WantedBy = multi-user.target
Поместите их в файл application.service в папке / lib / systemd / system.
Что делает каждый из этих вариантов, объясняется в следующей ссылке:
access.redhat.com/documentation/en-US/Red_…
Чтобы запустить приложение, введите следующую команду:
sudo systemctl start application.service
Примечание: расширение.service можно не указывать.
Чтобы остановить приложение:
sudo systemctl остановить application.service
Если файл конфигурации был изменен, и вы хотите перезагрузить настройки:
sudo systemctl перезагрузить application.service
Чтобы перезапустить приложение:
sudo systemctl перезапустить application.service
Чтобы включить автоматический запуск при загрузке:
sudo systemctl включить application.service
Если этот параметр включен, диспетчер процессов systemd попытается запустить приложение на основе настроек, предоставленных системным файлом.
Чтобы отключить его, используйте ту же команду, что и выше, но с параметром disable.
Если вы поместите Restart = always в служебный файл, то systemd будет отслеживать процесс и, если он не может быть найден в списке процессов, попытается перезапустить его автоматически.
Если вы разместите
RestartSec = 30
после директивы перезапуска он будет ждать 30 секунд, прежде чем пытаться перезапустить процесс. Это может быть полезно, поскольку постоянная попытка перезапуска неисправной службы / приложения может привести к высокому требованию к системе (запись журналов ошибок и т. Д.)
Как видите, systemd уже предоставляет некоторые средства для мониторинга процессов. Однако в некоторых случаях этого может быть недостаточно. Что делать, если процесс не завершается (он все еще будет в списке процессов), но перестает отвечать. В этом случае, чтобы убедиться, что процесс действительно запущен, вам могут потребоваться дополнительные проверки.
Здесь вам пригодятся сценарии из этого руководства.
Шаг 2: Настройка и использование скриптов Service Checker
Если вам нужен больший контроль над вашими запущенными процессами / сервисами, эти скрипты вам наверняка пригодятся.
Поскольку код немного велик, он загружен на github и находится в следующем репозитории:
github.com/trex2000/Service-Monitor-Scripts/blob/master/checkService.sh
«Сердце» всего пакета -
checkService.sh
Перед его использованием необходимо заменить полный путь к служебной папке. Это можно найти в начале сценария.
Сценарий может отслеживать несколько процессов и выполнять дополнительные задачи, как описано ниже:
Он просматривает все файлы из подпапки / services с расширениями.serv или.check и проверяет, есть ли активный процесс под названием «приложение».
Если для приложения нет файла '.check', только файл application.serv:
Если процесс активен, он будет считать его активным
Если процесс неактивен, он перезапустит службу, введя следующую команду:
systemctl перезапустить приложение
если файл.serv пуст!
Если файл.serv не пуст и имеет права на исполнение, он попытается запустить его как простой сценарий BASH.
Это полезно, если помимо перезапуска службы нужно что-то сделать.
Например, в файле spamd.serv из репозитория выше, если служба spamd не работает, вместо этого необходимо перезапустить службу spamassassin, что также перезапустит spamd. Перезапуска только spamd недостаточно.
Можно редактировать содержимое такого серв-файла в соответствии с потребностями.
Другой пример - файл pcscd.serv. В этом случае несколько других процессов также были перезапущены / убиты.
Если есть файл проверки, после проверки того, запущен ли процесс, он также запустит этот файл сценария для выполнения дополнительных проверок.
Например, для службы oscam мы создали файл проверки, который пытается подключиться к своему веб-интерфейсу, чтобы убедиться, что он успешен. В противном случае, несмотря на то, что процесс активен, служба не отвечает и ее необходимо перезапустить. Перезапуск службы должен быть выполнен / вызван самим файлом.check.
Другой пример - DLNA-служба mediatomb.
Это небольшой сервер, который предоставляет видео / аудио контент клиентам DLNA и транслирует себя по сети. Иногда служба зависает и больше не может быть обнаружена, но процесс остается активным. Чтобы проверить, доступна ли служба для обнаружения, использовалась служебная программа интерфейса командной строки gssdp-discover. Весь код, проверяющий сервер DLNA, был помещен в скрипт mediatomb.check.
Это всего лишь несколько примеров того, как можно использовать файлы.serv и.check.
Чтобы отслеживать новую службу, вы должны создать.serv и, при необходимости, также файл проверки и написать в них соответствующий скрипт.
Если достаточно только проверки наличия процесса, то будет достаточно пустого файла.serv. Если необходимо выполнить дополнительные проверки, необходимо создать файл.check и написать небольшой сценарий для выполнения этой работы.
Разумеется, сценарий.sh необходимо запускать периодически, поэтому для него также необходимо создать задание cron:
# проверять запущенные службы каждые 5 минут * / 5 * * * * /var/bin/ServiceCheck/checkService.sh> / dev / null
Шаг 3: Заключительные мысли
Я надеюсь, что вы найдете этот пакет полезным, поскольку он может значительно упростить мониторинг процессов Linux и, надеюсь, минимизирует время простоя ваших сервисов.
Не стесняйтесь загружать дополнительные скрипты на github, если будете создавать новые. Просто дайте мне знать, и я добавлю вас в качестве соавтора.
Рекомендуемые:
Симулятор игры для смартфона - играйте в игры для Windows, используя IMU для управления жестами, акселерометр, гироскоп, магнитометр: 5 шагов
SmartPhone Game Simulator - играйте в игры для Windows, используя IMU управления жестами, акселерометр, гироскоп, магнитометр: поддержите этот проект: https://www.paypal.me/vslcreations, сделав пожертвование на программы с открытым исходным кодом & поддержка дальнейшего развития
Подставка для ноутбука на 3 и 3 ступени (с очками для чтения и лотком для ручек): 5 ступеней
Подставка для ноутбука с 3-мя и 3-мя ступенями (с очками для чтения и лотком для ручек). 3 ступеньки подставки для ноутбука можно сделать за 5 минут. Он очень прочный, легкий и его можно сложить, чтобы взять с собой куда угодно
Как создать скрипт для веб-сайта: 8 шагов
Как создать сценарий для веб-сайта: в этом руководстве мы рассмотрим html-сценарий. Примечание: некоторый код может выглядеть как ссылка, просто игнорируйте его
Оцените комментарии к инструкциям - Скрипт Greasemonkey: 5 шагов
Оцените комментарии к инструкциям - сценарий Greasemonkey: иногда кто-то публикует особенно полезный комментарий, за который вы хотели бы поблагодарить. В других случаях люди публикуют довольно идиотские сообщения, которых, по вашему мнению, там не было. Как и в случае с digg, этот скрипт Greasemonkey позволяет вам оценивать комментарии. На данный момент база пользователей
Кронштейн для 3,5-дюймового жесткого диска для отсека для дисковода 5,25 дюйма: 3 шага
Кронштейн для 3,5-дюймового жесткого диска для отсека для дисковода 5,25 дюйма: у большинства из нас все еще есть старые CD / DVD-диски, которые вам уже не нужны, но вам жаль выбрасывать. Это инструкция, как дать вашим старым CD / DVD-ROMам вторую жизнь