Я читал об инструментах, таких как Nagios, но я думаю, что это немного излишне для моей ситуации.
Кто-нибудь знает, как я могу начать?
Легко. Посмотрите на настройку конфигурации мониторинга с Monit. Это легкий и простой в настройке инструмент мониторинга системы, который очень полезен для настройки в сценариях точно так же, как вы описываете; сервис отключается, перезапустите его и предупредите меня об этом.
Я в основном использую его для веб-серверов Apache, но есть много примеров того, что можно сделать для других программ / программ, таких как MySQL и тому подобное.
Настройка Monit.
То, как я это настроил, это так. Сначала установите саму программу Monit следующим образом:
sudo apt-get install monit
После установки отредактируйте конфигурацию здесь; Я предпочитаю использовать nano
но не стесняйтесь использовать любой текстовый редактор, который вы предпочитаете:
sudo nano /etc/monit/monitrc
Настройте значения демона по умолчанию для проверки служб каждые 60 секунд с задержкой запуска 120:
set daemon 60
with start delay 60
Затем найти область mailserver
из monitrc
и добавьте следующую строку. Postfix или SMTP должны быть активны, чтобы это работало. Обычно на моих серверах установлен Postfix, поэтому я использую следующую настройку:
set mailserver localhost
Затем я проверяю, что каталог конфигурации Monit настроен так:
sudo mkdir -p /etc/monit/conf.d
Настройка набора правил мониторинга Monit Apache2.
Теперь, как я уже сказал, я в основном использую Monit для мониторинга Apache, так что это простая конфигурация, которую я люблю использовать, но основная концепция похожа для MySQL, MongoDB или других вещей. Я бы сохранил это в этом файле:
sudo nano /etc/monit/conf.d/apache2.conf
И это будет содержимое этого файла:
check process apache with pidfile /var/run/apache2.pid
start "/usr/sbin/service apache2 start"
stop "/usr/sbin/service apache2 stop"
if failed host 127.0.0.1 port 80
with timeout 15 seconds
then restart
alert email_address@example.com only on { timeout, nonexist }
Синтаксис достаточно понятен, но в основном:
- Процесс зависит от
apache2.pid
; Обязательно измените его, чтобы оно соответствовало фактическому местоположению вашего apache2.pid
или httpd.pid
в вашей среде.
- Затем имеет команды, связанные с процессами
start
и stop
.
- И имеет логику, которая контролирует веб-сервер через порт
80
на localhost
хосте (127.0.0.1
)
- И только действия сервера недоступны в течение 15 секунд.
- Если он должен действовать, он пытается перезапустить.
- А затем отправляет оповещение на указанный адрес электронной почты о случаях истечения времени ожидания или отсутствия сервера.
Настройка набора правил мониторинга Monit MySQL.
Основываясь на примерах, на которые я ссылался выше, я бы предположил, что такая конфигурация будет работать для MySQL. Сначала создайте файл следующим образом:
sudo nano /etc/monit/conf.d/mysql.conf
И я адаптировал пример так, чтобы он, я бы предположил, вел себя аналогично тому, что я настроил для Apache:
check process mysqld with pidfile /var/run/mysqld/mysqld.pid
start program = "/usr/sbin/service mysql start"
stop program = "/usr/sbin/service mysql stop"
if failed host 127.0.0.1 port 3306 protocol mysql
with timeout 15 seconds
then restart
alert email_address@example.com only on { timeout, nonexist }
Конечно, это должно быть настроено в соответствии с вашей реальной рабочей средой, такой как настройка местоположения mysqld.pid
, адреса электронной почты и т.д., Но в прошлом это довольно общее в идеях / реализации.
Как только это будет установлено, перезапустите monit
и все должно быть хорошо:
sudo service monit restart
Настройка набора правил мониторинга Monit MongoDB.
Чтобы создать набор правил мониторинга MongoDB, создайте такой файл:
sudo nano /etc/monit/conf.d/mongod.conf
А вот и правило мониторинга MongoDB; обратите внимание, что это соответствует активному демону MongoDB, а не PID (aka: mongod.lock
), так как он не работает с этим:
check process mongod matching "/usr/bin/mongod"
start program = "/usr/sbin/service mongod start"
stop program = "/usr/sbin/service mongod stop"
if failed host 127.0.0.1 port 27017 protocol http
with timeout 15 seconds
then restart
alert email_address@example.com only on { timeout, nonexist }
Конечно, это должно быть настроено в соответствии с вашей реальной рабочей средой, такой как настройка фактического пути двоичного /usr/bin/mongod
, адреса электронной почты и т.д., Но в прошлом это довольно общее в идеях / реализации.
Как только это будет установлено, перезапустите monit
и все должно быть хорошо:
sudo service monit restart
Мониторинг Монит.
Вы можете следить за журналом Monit, чтобы увидеть его в действии:
sudo tail -f -n 200 /var/log/monit.log
И в качестве теста вы можете просто остановить сервер MySQL или MongoDB, а затем посмотреть, что отображается в этом журнале. Если все идет хорошо, вы должны увидеть весь процесс мониторинга и перезапуск, включая отправку электронного письма на адрес, который вы указали в конфигурации.