Monit — это программа с открытым исходным кодом, используемая для мониторинга служб в системах Linux и обеспечения их постоянной доступности. Если по какой-либо причине программа закрывается, Monit попытается вернуть ее в оперативный режим и заставить постоянно оставаться в сети.
Monit также поставляется с веб-интерфейсом, который вы можете использовать для контроля и мониторинга состояния вашего приложения/процесса. В этом руководстве мы рассмотрим установку и настройку monit в Ubuntu 20.04|18.04.
Установка Monit на Ubuntu 20.04|18.04
Пакет Monit доступен в официальных репозиториях Ubuntu. Установите его с помощью команды:
sudo apt-get install monit
Чтобы запустить процесс, используйте команду systemctl, доступную в Ubuntu 20.04/18.04:
sudo systemctl enable --now monit
Проверьте, запущена ли служба:
$ sudo systemctl status monit
● monit.service - LSB: service and resource monitoring daemon
Loaded: loaded (/etc/init.d/monit; generated)
Active: active (running) since Wed 2018-06-06 19:29:37 UTC; 1min 45s ago
Docs: man:systemd-sysv-generator(8)
Tasks: 1 (limit: 4704)
CGroup: /system.slice/monit.service
└─21382 /usr/bin/monit -c /etc/monit/monitrc
Jun 06 19:29:37 ubuntu18.04.computingforgeeks.com systemd[1]: Starting LSB: service and resource monitoring daemon...
Jun 06 19:29:37 ubuntu18.04.computingforgeeks.com monit[21366]: * Starting daemon monitor monit
Jun 06 19:29:37 ubuntu18.04.computingforgeeks.com monit[21366]: ...done.
Jun 06 19:29:37 ubuntu18.04.computingforgeeks.com systemd[1]: Started LSB: service and resource monitoring daemon.
Файлы конфигурации Monit находятся в каталоге /etc/monit/ . Основной файл конфигурации — /etc/monit/monitrc . Этот файл сильно закомментирован, вы можете ссылаться на него для всех конфигов. По умолчанию все файлы, расположенные в /etc/monit/conf.d/ и /etc/monit/conf-enabled/ , читаются monit при его запуске, вы можете поместить свои конфигурации мониторинга процессов в этот каталог, чтобы все было организовано.
Включить мониторинг HTTP-интерфейса
Monit имеет встроенный HTTP-интерфейс, который можно использовать для просмотра состояния отслеживаемых служб и управления ими через веб-интерфейс. По умолчанию интерфейс monit HTTP не включен, включите его, раскомментировав следующие строки в файле /etc/monit/monitrc .
set httpd port 2812 and
use address localhost # only accept connection from localhost
allow localhost # allow localhost to connect to the server and
allow admin:monit # require user 'admin' with password 'monit'
Вы можете изменить admin:monit с именем пользователя и паролем, которые вы хотите использовать. Чтобы разрешить доступ с другого IP-адреса, добавьте его, как показано ниже:
allow 192.168.0.1
Перезапустите monit после внесения изменений:
$ sudo systemctl restart monit
или же $ sudo monit reload
Проверить статус Monit
Ввод команды monit status отобразит подробную информацию о статусе monit.
$ sudo monit status
Monit 5.25.1 uptime: 0m
System 'ubuntu18.04.computingforgeeks.com'
status OK
monitoring status Monitored
monitoring mode active
on reboot start
load average [0.00] [0.01] [0.00]
cpu 0.0%us 0.0%sy 0.0%wa
memory usage 513.8 MB [13.0%]
swap usage 0 B [0.0%]
uptime 4d 21h 31m
boot time Fri, 01 Jun 2018 22:25:13
data collected Wed, 06 Jun 2018 19:56:00
Чтобы проверить синтаксис файлов конфигурации, используйте:
$ sudo monit -t
Control file syntax OK
Проверьте сводку отслеживаемых процессов:
# monit summary
Monit 5.25.1 uptime: 6m
┌─────────────────────────────────┬────────────────────────────┬───────────────┐
│ Service Name │ Status │ Type │
├─────────────────────────────────┼────────────────────────────┼───────────────┤
│ ubuntu18.04.computingforgeek... │ OK │ System │
└─────────────────────────────────┴────────────────────────────┴───────────────┘
Мониторинг процессов/программ с помощью Monit
Я сделаю демонстрацию того, как контролировать процесс с помощью monit. На моем локальном компьютере у меня запущены программы apache2 и MariaDB . Я собираюсь создать настраиваемый файл конфигурации для них двоих в /etc/monit/conf.d/custom.conf .
# Apache configuration
check process apache2 with pidfile /run/apache2/apache2.pid
start program = "/bin/systemctl start apache2" with timeout 60 seconds
stop program = "/bin/systemctl stop apache2"
# MariaDB configuration
#
check process mariadb with pidfile /run/mysqld/mysqld.pid
start program = "/bin/systemctl start mariadb" with timeout 60 seconds
stop program = "/bin/systemctl stop mariadb"
# Docker configuration
#
check process docker with pidfile /run/docker.pid
start program = "/bin/systemctl start docker" with timeout 60 seconds
stop program = "/bin/systemctl stop docker"
Обратите внимание, что команды «запустить программу» и «остановить программу» должны указывать абсолютный путь, например, /bin/systemctl вместо systemctl.
Проверьте наличие синтаксических ошибок после внесения изменений:
# monit -t
Control file syntax OK
Если все в порядке, перезагрузите файл конфигурации monit, чтобы он прочитал новые изменения.
# monit reload
Reinitializing monit daemon
Теперь проверьте сводку списка отслеживаемых процессов:
~# monit summary
Monit 5.25.1 uptime: 41m
┌─────────────────────────────────┬────────────────────────────┬───────────────┐
│ Service Name │ Status │ Type │
├─────────────────────────────────┼────────────────────────────┼───────────────┤
│ ubuntu18.04.computingforgeek... │ OK │ System │
├─────────────────────────────────┼────────────────────────────┼───────────────┤
│ apache2 │ OK │ Process │
├─────────────────────────────────┼────────────────────────────┼───────────────┤
│ mariadb │ OK │ Process │
├─────────────────────────────────┼────────────────────────────┼───────────────┤
│ docker │ OK │ Process │
└─────────────────────────────────┴────────────────────────────┴───────────────┘
Чтобы запустить все отслеживаемые программы.
# monit start all
Доступ к веб-интерфейсу Monit:
Для доступа к веб-интерфейсу используйте URL:
http://[ip-адрес|домен]:2812
Войдите в систему с именем пользователя «admin» и паролем «monit».
Чтобы разрешить доступ к порту с удаленных IP-адресов на брандмауэре, запустите:
$ sudo ufw allow 2812
Rule added Rule added (v6)