

Monit — это бесплатное программное обеспечение с открытым исходным кодом, которое помогает следить за процессами. Он может перезапускать службы, которые не отвечают. Вы можете использовать Systemd или daemontools для этой же цели. В этой статье мы расскажем, как установить и настроить monit для контроля за процессами на Debian или Ubuntu Linux.
Какова цель установки monit?
На домашней странице monit сказано:
«Monit — небольшая утилита с открытым исходным кодом для управления и мониторинга Unix. Monit проводит автоматическое техническое обслуживание. Это утилита со всеми функциями, необходимыми для системного мониторинга и исправления ошибок. Это похоже на сторожевого пса с панелью инструментов на вашем сервере. Контролируйте сетевые подключения к различным серверам как на локальных так и на удаленных хостах. Поддерживаются порты TCP, UDP и Unix сокет. Сетевые тесты могут выполняться на уровне протокола. Monit имеет встроенные тесты для основных интернет-протоколов, таких как HTTP, SMTP и т.д. Если sendmail не запущен, Monit может снова запустить sendmail автоматически или если apache использует слишком много ресурсов (например, если выполняется DoS-атака) Monit может остановить или перезапустить apache и отправить вам предупреждающее сообщение».
Установка monit
Введите следующую команду apt-get command /apt:
$ sudo apt-get install monit
Пример вывода:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
sysvinit-core
The following NEW packages will be installed:
monit
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 273 kB of archives.
After this operation, 826 kB of additional disk space will be used.
Get:1 http://mirrors.digitalocean.com/ubuntu xenial/universe amd64 monit amd64 1:5.16-2 [273 kB]
Fetched 273 kB in 0s (733 kB/s)
Selecting previously unselected package monit.
(Reading database ... 144487 files and directories currently installed.)
Preparing to unpack .../monit_1%3a5.16-2_amd64.deb ...
Unpacking monit (1:5.16-2) ...
Processing triggers for systemd (229-4ubuntu17) ...
Processing triggers for ureadahead (0.100.0-19) ...
Processing triggers for man-db (2.7.5-1) ...
Setting up monit (1:5.16-2) ...
Processing triggers for systemd (229-4ubuntu17) ...
Processing triggers for ureadahead (0.100.0-19) ...
Как включить службу monit во время загрузки?
Введите следующую команду:
$ sudo systemctl enable monit
Как запустить/остановить/перезапустить службу monit?
Синтаксис:
$ sudo systemctl status monit
$ sudo systemctl stop monit
$ sudo systemctl restart monit
$ sudo systemctl start monit
Настройка monit
Вам необходимо отредактировать следующие файлы:
- Основной файл конфигурации: /etc/monit/monitrc
- Директории конфигураций: /etc/monit/conf-available/ и /etc/monit/conf-enabled/
Давайте отредактируем файл /etc/monit/monitrc, используя текстовый редактор (к примеру vim):
$ sudo vi /etc/monit/monitrc
или команду nano:
$ sudo nano /etc/monit/monitrc
Сначала настройте адрес электронной почты на который будете получать предупреждения (ваш Linux должен быть настроен для отправки электронной почты):
set alert [email protected]
Вы можете получать только предупреждения о нарушении безопасности, используя следующий синтаксис:
set alert [email protected] on { checksum, permission, uid, gid }
Обратите внимание, что monit по умолчанию отправляет только одно уведомление по электронной почте, если произошел сбой, а второе — когда/если он исправлен. Если вы хотите получать уведомления о каждом пятом цикле в состоянии отказа, вы можете использовать:
alert [email protected] with reminder on 5 cycles
Включите встроенный HTTP-интерфейс, который можно использовать для просмотра состояния служб, контролируемых и управляющих сервисами, из веб-интерфейса:
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'
Сохраните и закройте файл конфигурации.
Как настроить monit для мониторинга моего собственного процесса с именем foo?
Создайте файл с именем /etc/monit/conf-available/foo:
$ sudo vi /etc/monit/conf-available/foo
Добавьте следующую конфигурацию:
check process foo
matching "foo"
start program = "/etc/init.d/foo start"
stop program = "/usr/bin/killall foo"
Сохраните и закройте файл. Теперь активируйте его конфигурацию:
$ sudo ln -s /etc/monit/conf-available/foo /etc/monit/conf-enabled/
Запустите проверку синтаксиса для файла конфигурации monit control:
$ monit -t
Control file syntax OK
Перезагрузите monit, для этого пропишите:
$ sudo /etc/init.d/monit reload
OR
$ sudo systemctl reload monit
Как настроить monit для мониторинга сервера OpenVPN?
OpenVPN — это бесплатный и открытый сервер VPN с открытым исходным кодом для Linux и Unix-подобных систем. Убедитесь, что OpenVPN запускается:
$ sudo vi /etc/monit/conf-available/openvpn
Добавьте следующую конфигурацию:
check process openvpn with pidfile /var/run/openvpn/server.pid
group nogroup
start program = "/etc/init.d/openvpn start"
stop program = "/etc/init.d/openvpn stop"
if failed host localhost port 1194 then restart
if 5 restarts with 5 cycles then timeout
depend on openvpn_bin
check file openvpn_bin with path /usr/sbin/openvpn
group nogroup
include /etc/monit/templates/rootbin
Сохраните и закройте файл. Теперь необходимо активировать его конфигурацию:
$ sudo ln -s /etc/monit/conf-available/openvpn /etc/monit/conf-enabled/
Запустите проверку синтаксиса для файла конфигурации monit control:
$ monit -t
Control file syntax OK
Перезагрузите monit, для этого пропишите:
$ sudo /etc/init.d/monit reload
OR
$ sudo systemctl reload monit
Как настроить monit для мониторинга сервера MariaDB/MySQL?
$ cat /etc/monit/conf-available/mysql
Пример вывода:
check process mysqld with pidfile /var/run/mysqld/mysqld.pid
group database
group mysql
start program = "/etc/init.d/mysql start"
stop program = "/etc/init.d/mysql stop"
if failed host localhost port 3306 protocol mysql with timeout 15 seconds for 3 times within 4 cycles then restart
if failed unixsocket /var/run/mysqld/mysqld.sock protocol mysql for 3 times within 4 cycles then restart
if 5 restarts with 5 cycles then timeout
depend mysql_bin
depend mysql_rc
check file mysql_bin with path /usr/sbin/mysqld
group mysql
include /etc/monit/templates/rootbin
check file mysql_rc with path /etc/init.d/mysql
group mysql
include /etc/monit/templates/rootbin
Как настроить monit для сервера Nginx?
$ cat /etc/monit/conf-available/nginx
Примеры вывода:
check process nginx with pidfile /var/run/nginx.pid
group www
group nginx
start program = "/etc/init.d/nginx start"
stop program = "/etc/init.d/nginx stop"
if 5 restarts with 5 cycles then timeout
depend nginx_bin
depend nginx_rc
check file nginx_bin with path /usr/sbin/nginx
group nginx
include /etc/monit/templates/rootbin
check file nginx_rc with path /etc/init.d/nginx
group nginx
include /etc/monit/templates/rootbin
Как настроить monit для сервера Apache?
$ cat /etc/monit/conf-available/apache2
Пример вывода:
check process apache with pidfile /var/run/apache2/apache2.pid
group www
group apache
start program = "/etc/init.d/apache2 start"
stop program = "/etc/init.d/apache2 stop"
if 4 restarts within 20 cycles then timeout
if failed host localhost port 80 with protocol http and request "/server-status" with timeout 25 seconds for 4 times within 5 cycles then restart
depend apache_bin
depend apache_rc
check file apache_bin with path /usr/sbin/apache2
group apache
include /etc/monit/templates/rootbin
check file apache_rc with path /etc/init.d/apache2
group apache
include /etc/monit/templates/rootbin
Как настроить monit для SSH-сервера OpenSSH?
$ cat /etc/monit/conf-available/openssh-server
Пример конфигурации:
check process sshd with pidfile /var/run/sshd.pid
group system
group sshd
start program = "/etc/init.d/ssh start"
stop program = "/etc/init.d/ssh stop"
if failed host localhost port 22 with proto ssh then restart
if 5 restarts with 5 cycles then timeout
depend on sshd_bin
depend on sftp_bin
depend on sshd_rc
depend on sshd_rsa_key
depend on sshd_dsa_key
check file sshd_bin with path /usr/sbin/sshd
group sshd
include /etc/monit/templates/rootbin
check file sftp_bin with path /usr/lib/openssh/sftp-server
group sshd
include /etc/monit/templates/rootbin
check file sshd_rsa_key with path /etc/ssh/ssh_host_rsa_key
group sshd
include /etc/monit/templates/rootstrict
check file sshd_dsa_key with path /etc/ssh/ssh_host_dsa_key
group sshd
include /etc/monit/templates/rootstrict
check file sshd_rc with path /etc/ssh/sshd_config
group sshd
include /etc/monit/templates/rootrc
Помните, что вы должны использовать команду ln, чтобы создать символьную ссылку и перезагрузить monit server:
$ cd /etc/monit/conf-enabled/
$ sudo ln -s /etc/monit/conf-available/openssh-server
$ sudo ln -s /etc/monit/conf-available/nginx
$ sudo ln -s /etc/monit/conf-available/mysql
$ sudo ln -s /etc/monit/conf-available/apache2
$ sudo monit -t
$ sudo /etc/init.d/monit reload
Как просмотреть информацию о monit из CLI?
Выполните следующую команду, чтобы просмотреть краткое описание monit:
$ sudo monit summary
Пример вывода:
The Monit daemon 5.16 uptime: 1h 9m
Process 'openvpn' Running
File 'openvpn_bin' Accessible
System 'blr-nixcraft-do-0001' Running
Чтобы увидеть статус monit run:
$ sudo monit status
Пример вывода:
Чтобы просмотреть подробную информацию о процессе openvpn:
$ sudo monit status openvpn
Пример вывода:
The Monit daemon 5.16 uptime: 1h 15m
Process 'openvpn'
status Running
monitoring status Monitored
pid 31577
parent pid 1
uid 65534
effective uid 65534
gid 65534
uptime 1h 17m
threads 1
children 0
memory 6.1 MB
memory total 6.1 MB
memory percent 1.3%
memory percent total 1.3%
cpu percent 0.0%
cpu percent total 0.0%
port response time 2.091 ms to [localhost]:443 type TCP/IP protocol DEFAULT
data collected Sun, 25 Jun 2017 00:12:40
Как просмотреть файлы журнала monit?
Для этого вы можете использовать команду tail следующим образом:
$ sudo tail -f /var/log/monit.log
Пример вывода:
[IST Jun 24 23:54:40] info : Starting Monit HTTP server at [localhost]:2812
[IST Jun 24 23:54:40] info : Monit HTTP server started
[IST Jun 24 23:54:40] info : 'blr-nixcraft-do-0001' Monit reloaded
Или используйте команду grep следующим образом, чтобы найти что-то в файле журнала:
$ grep foo /var/log/monit.log
$ grep sshd /var/log/monit.log
$ grep openvpn /var/log/monit.log
Пример вывода:
[IST Jun 24 22:55:28] info : 'openvpn' start: /etc/init.d/openvpn
Чтобы просмотреть и контролировать monit из веб-браузера, введите URL-адрес вашего сервера в браузере (при условии, что вы настроили параметр http, как описано выше):
http://server1.sedicomm.com:2812
Вы можете щелкнуть по службе, такой как OpenVPN, чтобы просмотреть ее статус или запустить/остановить/перезапустить из самого веб-браузера:
С поставленной задачей мониторинга серверных служб Linux/UNIX мы справились с помощью Monit!
Спасибо за уделенное время на прочтение статьи!
Если возникли вопросы, задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).
Курсы Cisco и Linux с трудоустройством!
- Поможем стать экспертом в сетевом администрировании и получить международные сертификаты Cisco CCNA Routing & Switching или Linux LPI.
- Предлагаем проверенную программу и учебник экспертов из Cisco Networking Academy и Linux Professional Institute, сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и сделать карьеру. 100% наших выпускников трудоустраиваются.
- Проводим вечерние онлайн-лекции на нашей платформе или обучайтесь очно на базе Киевского офиса.
- Спросим у вас об удобном времени для практик и подстроимся: понимаем, что времени учиться мало.
- Если хотите индивидуальный график — обсудим и осуществим.
- Выставим четкие дедлайны для самоорганизации. Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- отредактировать резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроим на работу в Cisco по программе Cisco Incubator, New Graduate и Experienced. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.