Esta é uma tradução da página de documentação original em inglês. Ajude-nos a torná-la melhor.

2 Comandos remotos

Visão geral

Com comandos remotos você pode definir que um determinado comando pré-definido é executado automaticamente no host monitorado sob alguma condição.

Assim, os comandos remotos são um mecanismo poderoso para inteligência proativa monitoramento.

Nos usos mais óbvios do recurso, você pode tentar:

  • Reinicie automaticamente algum aplicativo (servidor web, middleware, CRM) se não responder
  • Use o comando IPMI 'reboot' para reinicializar algum servidor remoto se isso acontecer não atende pedidos
  • Liberar automaticamente o espaço em disco (removendo arquivos antigos, limpando /tmp) se ficar sem espaço em disco
  • Migrar uma VM de uma caixa física para outra dependendo da CPU carga
  • Adicione novos nós a um ambiente de nuvem em caso de CPU insuficiente (disco, memória, o que for) recursos

A configuração de uma ação para comandos remotos é semelhante à de envio uma mensagem, a única diferença é que o Zabbix irá executar um comando em vez de enviar uma mensagem.

Comandos remotos podem ser executados pelo servidor Zabbix, proxy ou agente. Controlo remoto comandos no agente Zabbix podem ser executados diretamente pelo servidor Zabbix ou através do proxy Zabbix. Tanto no Zabbix Agent quanto no Zabbix proxy remote comandos são desabilitados por padrão. Eles podem ser habilitados por:

  • adicionar um parâmetro AllowKey=system.run[*] na configuração do agente;
  • definindo o parâmetro EnableRemoteCommands para '1' no proxy configuração.

Os comandos remotos executados pelo servidor Zabbix são executados conforme descrito em Execução do comando incluindo saída verificação de código.

Os comandos remotos são executados mesmo se o host de destino estiver em manutenção.

Limite de comando remoto

O limite de comando remoto após a resolução de todas as macros depende do tipo de banco de dados e conjunto de caracteres (caracteres não ASCII requerem mais de um byte a ser armazenado):

Banco de dados Limite em caracteres Limite em bytes
MySQL 65535 65535
Banco de dados Oracle 2048 4000
PostgreSQL 65535 não limitado
SQLite (somente proxy Zabbix) 65535 não limitado

O tutorial a seguir fornece instruções passo a passo sobre como definir comandos remotos.

Configuração

Esses comandos remotos que são executados no agente Zabbix (scripts personalizados) deve ser ativado primeiro no agente configuração.

Certifique-se de que o parâmetro AllowKey=system.run[*] seja adicionado. Reiniciar daemon do agente se alterar este parâmetro.

::: não importante Comandos remotos não funcionam com Zabbix ativo agentes. :::

Então, ao configurar uma nova ação em Configuração → Ações:

  • Definir as condições adequadas. Neste exemplo, defina que o ação é ativada em qualquer problema de desastre com um dos Apache formulários:

  • No Operações guia, clique em Adicionar nas operações/operações de recuperação/atualização bloco de operações
  • No campo suspenso Operação, selecione um dos pré-definidos roteiros

  • Selecione a lista de destino para o script

Scripts predefinidos

Todos os scripts (webhook, script, SSH, Telnet, IPMI) disponíveis para operações de ação são definidas em global scripts.

Por exemplo:

sudo /etc/init.d/apache restart

Neste caso, o Zabbix tentará reiniciar um processo do Apache. Com isso comando, certifique-se de que o comando seja executado no agente Zabbix (clique o botão Agente Zabbix em Executar em).

::: não importante Observe o uso de sudo - o usuário do Zabbix não têm permissões para reiniciar os serviços do sistema por padrão. Veja abaixo para dicas sobre como configurar o sudo. :::

O agente Zabbix deve ser executado no host remoto e aceitar conexões de entrada. O agente Zabbix executa comandos em fundo.

Comandos remotos no agente Zabbix são executados sem timeout pelo system.run[,nowait] e não são verificados quanto aos resultados da execução. Em Servidor Zabbix e proxy Zabbix, comandos remotos são executados com timeout conforme definido no parâmetro TrapperTimeout de zabbix_server.conf ou zabbix_proxy.conf e são marcado para resultados de execução.

Permissões de acesso

Certifique-se de que o usuário 'zabbix' tenha permissões de execução para comandos. Alguém pode estar interessado em usar sudo para dar acesso a comandos privilegiados. Para configurar o acesso, execute como root:

#visudo

Linhas de exemplo que podem ser usadas no arquivo sudoers:

# permite que o usuário 'zabbix' execute todos os comandos sem senha.
       zabbix ALL=NOPASSWD: ALL
       
       # permite que o usuário 'zabbix' reinicie o apache sem senha.
       zabbix ALL=NOPASSWD: /etc/init.d/apache restart

Em alguns sistemas, o arquivo sudoers impedirá que arquivos não locais usuários de executar comandos. Para mudar isso, comente opção obrigatória em /etc/sudoers.

Comandos remotos com múltiplas interfaces

Se o sistema de destino tiver várias interfaces do tipo selecionado (agente Zabbix ou IPMI), os comandos remotos serão executados no padrão interface.

É possível executar comandos remotos via SSH e Telnet usando outra interface que não a do agente Zabbix. A interface disponível para o uso é selecionado na seguinte ordem:

  * Interface padrão do agente Zabbix
         * Interface padrão SNMP
         * Interface padrão JMX
         * Interface padrão IPMI

Comandos remotos IPMI

Para comandos remotos IPMI, a seguinte sintaxe deve ser usada:

<comando> [<valor>]

Onde

  • <command> - um dos comandos IPMI sem espaços
  • <valor> - 'on', 'off' ou qualquer inteiro sem sinal. <valor> é um parâmetro opcional.

Exemplos

Exemplos de global scripts que podem ser usados como comandos remotos em operações de ação.

Exemplo 1

Reinicialização do Windows em determinadas condições.

Para reiniciar automaticamente o Windows após um problema detectado pelo Zabbix, defina o seguinte script:

Parâmetro de script Valor
Escopo 'Operação de ação'
Tipo 'Script'
Comando c:\windows\system32\shutdown.exe -r -f
Exemplo 2

Reinicie o host usando o controle IPMI.

Parâmetro de script Valor
Escopo 'Operação de ação'
Tipo 'IPMI'
Comando reinicializar
Exemplo 3

Desligue o host usando o controle IPMI.

Parâmetro de script Valor
Escopo 'Operação de ação'
Tipo 'IPMI'
Comando desligar