Я считаю, что отладочный мониторинг - это большая проблема. В среде оболочки Monit в основном ничего нет (нет путей или других переменных среды). Кроме того, я не могу найти файл журнала.
Проблема в том, что если команда start или stop в сценарии мониторинга не работает, трудно понять, что с ней не так. Часто это не так просто, как просто запустить команду в оболочке, потому что среда оболочки отличается от среды оболочки monit.
Какие методы используются для отладки конфигураций монитора?
Например, я был бы счастлив иметь оболочку monit для тестирования моих скриптов или файл журнала, чтобы увидеть, что пошло не так.
Ответы:
У меня была такая же проблема. Использование подробного параметра командной строки monit немного помогает, но я обнаружил, что лучший способ - создать среду, максимально похожую на среду monit, и запустить оттуда программу start / stop.
# monit runs as superuser $ sudo su # the -i option ignores the inherited environment # this PATH is what monit supplies by default $ env -i PATH=/bin:/usr/bin:/sbin:/usr/sbin /bin/sh # try running start/stop program here $
Я обнаружил, что наиболее распространенные проблемы связаны с переменными среды (особенно
PATH
) или разрешениями. Вы должны помнить, что monit обычно запускается от имени пользователя root.Также, если вы используете
as uid myusername
в своей конфигурации monit, вам следует перейти на usermyusername
перед проведением теста.Надеюсь, это поможет.
источник
su myusername
Обязательно дважды проверяйте свою конфигурацию и отслеживайте свои процессы вручную, прежде чем позволить monit все обрабатывать. systat (1), top (1) и ps (1) - ваши друзья, чтобы выяснить использование ресурсов и ограничения. Важно также знать, какой процесс вы отслеживаете.
Что касается сценариев запуска и остановки, я использую сценарий оболочки для перенаправления вывода и проверки среды и других переменных. Что-то вроде этого :
$ cat monit-wrapper.sh #!/bin/sh { echo "MONIT-WRAPPER date" date echo "MONIT-WRAPPER env" env echo "MONIT-WRAPPER $@" $@ R=$? echo "MONIT-WRAPPER exit code $R" } >/tmp/monit.log 2>&1
Затем в мониторе:
start program = "/home/billitch/bin/monit-wrapper.sh my-real-start-script and args" stop program = "/home/billitch/bin/monit-wrapper.sh my-real-stop-script and args"
Вам все еще нужно выяснить, какая информация вам нужна в оболочке, например, информация о процессе, идентификатор, ограничения системных ресурсов и т. Д.
источник
start program=/bin/bash -c "..."
Вы можете запустить Monit в режиме подробного вывода / отладки, добавив
MONIT_OPTS="-v"
в/etc/default/monit
(не забудьте перезапустить;/etc/init.d/monit restart
).Затем вы можете захватить вывод, используя
tail -f /var/log/monit.log
[CEST Jun 4 21:10:42] info : Starting Monit 5.17.1 daemon with http interface at [*]:2812 [CEST Jun 4 21:10:42] info : Starting Monit HTTP server at [*]:2812 [CEST Jun 4 21:10:42] info : Monit HTTP server started [CEST Jun 4 21:10:42] info : 'ocean' Monit 5.17.1 started [CEST Jun 4 21:10:42] debug : Sending Monit instance changed notification to monit@example.io [CEST Jun 4 21:10:42] debug : Trying to send mail via smtp.sendgrid.net:587 [CEST Jun 4 21:10:43] debug : Processing postponed events queue [CEST Jun 4 21:10:43] debug : 'rootfs' succeeded getting filesystem statistics for '/' [CEST Jun 4 21:10:43] debug : 'rootfs' filesytem flags has not changed [CEST Jun 4 21:10:43] debug : 'rootfs' inode usage test succeeded [current inode usage=8.5%] [CEST Jun 4 21:10:43] debug : 'rootfs' space usage test succeeded [current space usage=59.6%] [CEST Jun 4 21:10:43] debug : 'ws.example.com' succeeded testing protocol [WEBSOCKET] at [ws.example.com]:80/faye [TCP/IP] [response time 114.070 ms] [CEST Jun 4 21:10:43] debug : 'ws.example.com' connection succeeded to [ws.example.com]:80/faye [TCP/IP]
источник
monit -c /path/to/your/config -v
источник
По умолчанию отслеживайте журналы в журнале системных сообщений, и вы можете проверить там, что происходит.
Кроме того, в зависимости от вашей конфигурации вы можете входить в другое место
tail -f /var/log/monit
http://mmonit.com/monit/documentation/monit.html#LOGGING
Принимая значения по умолчанию (как и в любой старой версии monit, которую я использую), вы можете отслеживать журналы как таковые:
CentOS:
tail -f /var/log/messages
Ubuntu:
tail -f /var/log/syslog
Mac OS X
tail -f /var/log/system.log
Windows
Вот драконы
Но есть интересный проект, который я нашел, когда искал, как это сделать из болезненного любопытства: https://github.com/derFunk/monit-windows-agent
источник
/var/log/syslog
где находится var / log / messages?Да, monit не так-то просто отлаживать.
Вот несколько лучших практик
оболочка:
#!/usr/bin/env bash logfile=/var/log/myjob.log touch ${logfile} echo $$ ": ################# Starting " $(date) "########### pid " $$ >> ${logfile} echo "Command: the-command $@" >> ${logfile} # log your command arguments { exec the-command $@ } >> ${logfile} 2>&1
Это очень помогает.
Еще я считаю, что помогает запустить monit с параметром -v, что дает вам многословие. Итак, рабочий процесс
источник
Вы также можете попробовать запустить monit validate после запуска процессов, чтобы попытаться выяснить, есть ли у кого-либо из них проблемы (и иногда получить больше информации, чем вы получили бы в файлах журнала, если есть какие-либо проблемы). Кроме того, вы ничего не можете сделать.
источник