Não é possível ler o status do daemon de monit, mesmo com o grupo permitido

3

Não consigo obter monit status ou outros comandos da CLI para trabalhar.

Eu criei monit v5.8 para executar em um Raspberry Pi. Eu sou capaz de adicionar serviços a serem monitorados, e a interface web pode ser acessada muito bem, como eu configurei para acesso público somente leitura (é um servidor de teste, não minha configuração final de produção, então não é um grande lidar agora mesmo).

O problema é que, quando executo monit status enquanto estou logado como root , obtenho:

# monit status
monit: cannot read status from the monit daemon

Eu também tenho monit iniciado na inicialização por meio desta entrada do arquivo /etc/inittab :

mo:2345:respawn:/usr/local/bin/monit -Ic /etc/monitrc

Eu verifiquei que o monit está sendo executado e estou recebendo alertas de email sempre que eu mato o processo de monit manualmente ou reinicializo meu pi de framboesa. Então, em seguida, verifico as permissões do meu arquivo monitrc para ver qual grupo tem permissão de acesso.

# ls -al /etc/monitrc
-rw------- 1 root root 2359 Aug 24 14:48 /etc/monitrc

Aqui está minha seção de permissão relevante do arquivo de controle.

set httpd port 80
    allow [omitted] readonly
    allow @root
    allow localhost
    allow 0.0.0.0/0.0.0.0

Também tentei definir permissões nesse arquivo para 640 para permitir permissões de leitura de grupo, mas não importa o que eu tente, recebo o mesmo erro mencionado acima ou quando as permissões estão definidas como 640 recebo:

# monit status
monit: The control file '/etc/monitrc' must have permissions no more than -rwx------ (0700); right now permissions are -rw-r----- (0640).

O que estou perdendo aqui? Eu sei que o httpd deve estar habilitado, já que essa é a interface que a CLI usa para obter informações (ou pelo menos é o que eu li), então eu fiz isso. E em termos de monit fazendo seu trabalho de monitoramento e enviando alertas por e-mail, tudo está funcionando também.

Este é o meu arquivo monitrc inteiro - mais uma vez, esta é a versão v5.8 e foi criada com o suporte PAM e SSL . O processo é executado sob o root user:

# 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:[email protected]: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: [email protected]
 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.
    
por jefflunt 24.08.2014 / 16:57

2 respostas

2

Teste -v e -vv flags para aumentar o detalhamento do comando de status. A próxima grande ferramenta para depurar esses problemas é strace . Instale e execute:

strace -efile -o trace.log monit status

O mais provável é que você encontre o motivo próximo ao final do registro. Se isso não ajudar, execute:

strace -f -o trace.log monit status

para ver todos os syscall-s que o programa e seus filhos estão fazendo. Pesquise não encontrado , conexão recusada e esse tipo de erros.

    
por 24.08.2014 / 18:01
0

Para que eu funcione, eu tive que ter uma regra 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

De esta resposta e link

    
por 04.12.2016 / 12:39