Я не могу понять monit status
или другие команды CLI для работы.
Я построил monit
v5.8 для работы на Raspberry Pi. Я могу добавлять службы, которые нужно отслеживать, и к веб-интерфейсу можно легко получить доступ, так как я настроил его для общего доступа только для чтения (это тестовый сервер, а не моя окончательная производственная установка, поэтому дело прямо сейчас).
Проблема в том, что когда я бегу monit status
при входе в систему как root
Я получил:
# monit status
monit: cannot read status from the monit daemon
у меня тоже есть monit
запускается при загрузке через это /etc/inittab
запись в файл:
mo:2345:respawn:/usr/local/bin/monit -Ic /etc/monitrc
Я проверил, что monit запущен, и я получаю оповещения по электронной почте каждый раз, когда либо вручную завершаю процесс monit, либо перезагружаю свой raspberry pi. Итак, теперь я проверяю свой monitrc
разрешения файла, чтобы узнать, какой группе разрешен доступ.
# ls -al /etc/monitrc
-rw------- 1 root root 2359 Aug 24 14:48 /etc/monitrc
Вот мой соответствующий раздел allow контрольного файла.
set httpd port 80
allow [omitted] readonly
allow @root
allow localhost
allow 0.0.0.0/0.0.0.0
Также попытался установить разрешения для этого файла на 640
чтобы разрешить групповые разрешения на чтение, но независимо от того, что я пытаюсь, я получаю ту же ошибку, что и указано выше, или когда разрешения установлены на 640
Я получил:
# monit status
monit: The control file '/etc/monitrc' must have permissions no more than -rwx------ (0700); right now permissions are -rw-r----- (0640).
Что мне здесь не хватает? Я знаю что httpd
должен быть включен, так как это интерфейс, который CLI использует для получения информации (по крайней мере, я читал), поэтому я сделал это. А с точки зрения monit
выполняет свою работу по мониторингу и отправляет оповещения по электронной почте, это тоже работает.
Вот мой весь monitrc
файл - опять же, это версия v5.8, и он был собран с обоими PAM
и SSL
служба поддержки. Процесс выполняется под root
пользователь:
# Global settings
set daemon 300
with start delay 5
set logfile /var/log/monit.log
set pidfile /var/run/monit.pid
set idfile /var/run/.monit.id
set statefile /var/run/.monit.state
# Mail alerts
## Set the list of mail servers for alert delivery. Multiple servers may be
## specified using a comma separator. If the first mail server fails, Monit
# will use the second mail server in the list and so on. By default Monit uses
# port 25 - it is possible to override this with the PORT option.
#
set mailserver smtp.gmail.com port 587
username [omitted] password [omitted]
using tlsv1
## Send status and events to M/Monit (for more informations about M/Monit
## see http://mmonit.com/). By default Monit registers credentials with
## M/Monit so M/Monit can smoothly communicate back to Monit and you don't
## have to register Monit credentials manually in M/Monit. It is possible to
## disable credential registration using the commented out option below.
## Though, if safety is a concern we recommend instead using https when
## communicating with M/Monit and send credentials encrypted.
#
# set mmonit http://monit:monit@192.168.1.10:8080/collector
# # and register without credentials # Don't register credentials
#
#
## Monit by default uses the following format for alerts if the the mail-format
## statement is missing::
set mail-format {
from: cmn.monit@gmail.com
subject: $SERVICE $DESCRIPTION
message: $EVENT
Service: $SERVICE
Date: $DATE
Action: $ACTION
Host: $HOST
Description: $DESCRIPTION
Monit instance provided by chicagomeshnet.com
}
# Web status page
set httpd port 80
allow [omitted] readonly
allow @root
allow localhost
allow 0.0.0.0/0.0.0.0
## You can set alert recipients whom will receive alerts if/when a
## service defined in this file has errors. Alerts may be restricted on
## events by using a filter as in the second example below.
Пытаться -v
и -vv
флаги для повышения подробности команды статуса. Следующим отличным инструментом для устранения таких проблем является strace
. Устанавливаем и запускаем:
strace -efile -o trace.log monit status
Скорее всего, вы найдете причину в конце журнала. Если это не помогает, запустите:
strace -f -o trace.log monit status
чтобы увидеть все системные вызовы, выполняемые программой и ее дочерними элементами. Ищи не найден, В соединении отказано, и ошибки такого рода.
Чтобы он заработал, мне нужно было allow admin:monit
правило.
set httpd port 2812 and
use address 0.0.0.0
allow 0.0.0.0/0
allow localhost
allow admin:monit
allow guest:guest read-only
Из этот ответ и http://dasunhegoda.com/what-why-how-monit/756/