Esta página foi traduzida automaticamente. Se você notar um erro, selecione-o e pressione Ctrl+Enter para reportá-lo aos editores.

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 resolver todas as macros depende do tipo de banco de dados e do conjunto de caracteres (caracteres não ASCII requerem mais de um byte para serem armazenados):

Banco de dados Limite em caracteres Limite em bytes
MySQL 65535 65535
PostgreSQL 65535 sem limite
SQLite (apenas Zabbix proxy) 65535 sem limite

A saída da execução do comando remoto (valor de retorno) é limitada a 16MB (incluindo espaços em branco à direita que são truncados). O limite do comando remoto IPMI é baseado na biblioteca IPMI instalada. Observe que os limites do banco de dados se aplicam a todos os comandos remotos.

Configuração

Esses comandos remotos que são executados no agent Zabbix (scripts personalizados) devem ser primeiro habilitados na configuração do agent.

Certifique-se de que o parâmetro AllowKey=system.run[<command>,*] seja adicionado para cada comando permitido na configuração do agent para permitir comandos específicos com o modo nowait. Reinicie o daemon do agent se alterar este parâmetro.

Em seguida, ao configurar uma nova ação em Alertas → Ações → Ações de trigger:

  1. Defina as condições apropriadas, por exemplo, defina que a ação é ativada em qualquer problema de desastre com um dos aplicativos Apache.

  1. Na aba Operações, clique em Adicionar no bloco Operações, Operações de recuperação ou Operações de atualização.

  1. Selecione um dos scripts predefinidos na lista suspensa Operação e defina a Lista de destino para o script.

Scripts predefinidos

Scripts que estão disponíveis para operações de ação (webhook, script, SSH, Telnet, IPMI) são definidos em scripts globais.

Por exemplo:

sudo /etc/init.d/apache restart 

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

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

A partir do agent do Zabbix 7.0, comandos remotos também podem ser executados em um agent que está operando no modo ativo. O agent do Zabbix - seja ativo ou passivo - deve ser executado no host remoto e executa os comandos em segundo plano.

Comandos remotos no agent do Zabbix são executados sem timeout pela chave system.run[,nowait] e não são verificados quanto aos resultados da execução. No server do Zabbix e no proxy do Zabbix, comandos remotos são executados com timeout conforme definido no parâmetro TrapperTimeout do arquivo zabbix_server.conf ou zabbix_proxy.conf e são verificados quanto aos resultados da execução. Para informações adicionais, consulte Timeout do script.

Permissões de acesso

Certifique-se de que o usuário 'zabbix' tenha permissões de execução para os comandos configurados. Pode ser interessante usar o sudo para dar acesso a comandos privilegiados. Para configurar o acesso, execute como root:

visudo

Exemplos de linhas 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 usuários não locais executem comandos. Para alterar isso, comente a opção requiretty em /etc/sudoers.

Comandos remotos com múltiplas interfaces

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

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

  • Interface padrão do agent 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 scripts globais que podem ser usados como comandos remotos em operações de ação.

Exemplo 1

Reinício do Windows em determinada condição.

Para reiniciar automaticamente o Windows ao detectar um problema pelo Zabbix, defina o seguinte script:

Parâmetro do 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 do script Valor
Escopo 'Operação de ação'
Tipo 'IPMI'
Comando reset

Exemplo 3

Desligue o host usando o controle IPMI.

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