Мониторинг отладки - PullRequest
73 голосов
/ 28 июля 2010

Я считаю, что отладка монитора является основной болью. Среда оболочки Monit в основном не имеет ничего (никаких путей или других переменных среды). Кроме того, я не могу найти файл журнала.

Проблема в том, что если команда start или stop в скрипте monit завершается неудачно, трудно понять, что с ней не так. Часто это не так просто, как просто запустить команду в оболочке, потому что среда оболочки отличается от среды оболочки monit.

Какие методы используют люди для отладки конфигураций monit?

Например, я был бы рад иметь оболочку monit для тестирования моих скриптов или файл журнала, чтобы увидеть, что пошло не так.

Ответы [ 7 ]

88 голосов
/ 18 января 2011

У меня была такая же проблема.Использование подробного параметра командной строки monit немного помогает, но я обнаружил, что лучшим способом было создать среду, максимально похожую на среду monit, и запустить оттуда программу запуска / остановки.

# 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
$

IОбнаружено, что наиболее распространенными проблемами являются переменные среды (особенно PATH) или разрешения.Вы должны помнить, что monit обычно запускается от имени пользователя root.

Также, если вы используете as uid myusername в своей конфигурации monit, вам следует перейти на пользователя myusername перед выполнением теста.надеюсь, что это поможет.

35 голосов
/ 14 декабря 2010

Обязательно всегда дважды проверяйте свой conf и следите за своими процессами вручную, прежде чем позволить 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

Затем в monit:

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"

Вам все еще нужно выяснить, какую информацию вы хотите в оболочке, такую ​​как информация о процессах, id, ограничения системных ресурсов,и т.д.

8 голосов
/ 23 октября 2012

monit -c /path/to/your/config -v

5 голосов
/ 04 июня 2017

Вы можете запустить 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]
5 голосов
/ 02 февраля 2012

По умолчанию, мониторинг журналов в системном журнале сообщений, и вы можете проверить там, чтобы увидеть, что происходит.

Кроме того, в зависимости от вашей конфигурации, вы можете войти в другое место

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 OSX

tail -f /var/log/system.log

Windows

Здесь будут драконы

Но есть интересный проект, который я нашел, когда искал, как сделать это из болезненного любопытства: https://github.com/derFunk/monit-windows-agent

1 голос
/ 04 января 2013

Да, monit не так-то просто отладить.

Вот несколько лучших советов

  • Используйте скрипт-обертку, который устанавливает ваш файл журнала.Запишите свои аргументы команды там, пока вы это делаете:

shell:

#!/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

Это очень помогает.

Другая вещь, которая мне помогаетэто запустить Монит с '-v', который дает вам многословие.Таким образом, рабочий процесс

  • заставить вашу оболочку работать из оболочки "sudo my-wrapper"
  • , затем попытаться запустить ее из monit, запустить из командной строки с помощью -v"
  • , затем попытайтесь запустить его из monit в фоновом режиме.
0 голосов
/ 13 декабря 2010

Вы также можете попробовать запустить monit validate после запуска процессов, чтобы попытаться выяснить, есть ли какие-либо из них, возникают проблемы (и иногда получить больше информации, чем вы могли бы получить в файлах журналов, если есть какие-либо проблемы).Кроме того, вы не можете сделать больше.

...