2 Comandos remotos

Visão geral

Com os comandos remotos você pode definir um comando a ser executado automaticamente sob determinada condição.

Desta maneira, os comandos remotos são um mecanismo eficiente para monitoração pró-ativa.

As situações mais comuns onde se utiliza este recurso são:

  • Reiniciar automaticamente alguma aplicação (servidor web, aplicações, CRM) se ele não estiver respondendo
  • Utilizar o comando IPMI de 'reboot' para reiniciar remotamente um servidor que não responde
  • Liberar automaticamente espaço em disco (removendo arquivos antigos, limpando o /tmp) se o espaço estiver acabando
  • Migrar uma VM para outro servidor físico dependendo do esgotamento de CPU do servidor físico atual
  • Adicionar novos nodes em um ambiente de nuvem que estiver com seus recursos esgotando (armazenamento, memória, CPU, etc)

Configurar uma ação para comandos remotos é muito similar a enviar uma mensagem, a única diferença é que o Zabbix irá executar o comando ao invés de enviar a mensagem.

Os comandos remotos não são suportados através de Proxy, pois o servidor Zabbix se conecta diretamente ao agente para solicitar a execução remota.

O comando remoto é limitado a 255 caracteres. Múltiplos comandos podem ser executados, bastando que sejam separados por novas linhas. É permitido o uso de macros. Consulte o manual de execução de comandos para maiores detalhes.

O tutorial a seguir apresenta como um comando remoto poderia ser configurado.

Configuração

Para os comandos remotos serem executados pelo Zabbix Agent (scripts personalizados) o mesmo deverá ter seu arquivo de configuração devidamente configurado para permitir isso.

Certifique-se que o parâmetro EnableRemoteCommands está definido como 1 e sua linha não está comentada. Reinicie o agente após modificar este parâmetro.

Comandos remotos não funcionam através de agentes ativos.

Para configurar uma nova ação:

  • Acesse Configuração→ Ações
  • Na aba de Operações, selecione o tipo Comando remoto
  • Selecione o tipo de comando remoto (IPMI, Custom script, SSH, Telnet, Script global)
  • Informe o comando remoto

Por exemplo:

sudo /etc/init.d/apache restart 

Neste caso o Zabbix Agent tentara reiniciar o processo do apache. Certifique-se que a opção Executar em esteja definida como Agente Zabbix.

O comando exemplificado utiliza-se do sudo e o usuário 'zabbix' por padrão não possui permissionamento para reiniciar serviços. Veja a seguir algumas dicas sobre configuração do sudo.

O Zabbix Agent precisa estar em execução no host remoto e aceitar conexões de entrada (monitoração passiva). A execução dos comando será feita pelo agente em segundo plano.

O Zabbix não verifica se o comando foi ou não executado com sucesso.

Comandos remotos no Zabbix Agent são executados no agente sem limite de tempo ('system.run[,nowait]'). No Zabbix Server eles serão executados com limite de tempo definido pelo parâmetro TrapperTimeout presente no arquivo de configuração do servidor.

  • Na aba de Condições, defina as condições apropriadas. Neste exemplo, a ação será executada somente quando ocorrerem eventos com severidade em nível de Desastre e estiverem associados à aplicação Apache.

Permissão de acesso

Certifique-se que o usuário 'zabbix' possua permissões de execução nos comandos configurados. Uma forma interessante de garantir isso é através do comando sudo para os comandos privilegiados. Para configurar, execute como o usuário 'root':

# visudo

Exemplos de linhas que podem ser utilizadas no arquivo sudoers:

# permite o usuário 'zabbix' executar sem precisar de senha.
       zabbix ALL=NOPASSWD: ALL
       
       # permite que o usuário 'zabbix' reinicie o apache sem precisar de senha.
       zabbix ALL=NOPASSWD: /etc/init.d/apache restart

Em alguns ambientes o arquvio sudoers irá proibir que usuários remotos executem comandos. Para modificar isso, remova o comentário da opção requiretty no sudoers.

Comandos remotos e múltiplas interfaces

Se o sistema de destino possuir múltiplas interfaces de um mesmo tipo (Zabbix Agent ou IPMI), os comandos remotos serão executados apenas através da interface padrão.

Exemplos

Exemplo 1

Reiniciar o Windows em determinada condição.

Para reiniciar automaticamente o windows quando problemas forem detectados pelo Zabbix, defina a operação a seguir:

Parâmetro Descrição
Tipo da operação 'Remote command'
Tipo 'Script personalizado'
Comando c:\windows\system32\shutdown.exe -r -f
Exemplo 2

Reiniciar o host através do controle IPMI.

Parâmetro Descrição
Tipo da operação 'Remote command'
Tipo 'IPMI'
Comando reset on
Exemplo 3

Desligar o host através do controle IPMI.

Parâmetro Descrição
Tipo da operação 'Remote command'
Tipo 'IPMI'
Comando power off
Example 3

Power off the host by using IPMI control.

PARAMETER Description
Operation type 'Remote command'
Type 'IPMI'
Command power off