This is a translation of the original English documentation page. Help us make it better.

2 Remote opdrachten

Overzicht

Met externe commando's kunt u bepalen dat een bepaald vooraf gedefinieerd commando automatisch wordt uitgevoerd op de gemonitorde host op basis van een bepaalde voorwaarde.

Externe commando's vormen dus een krachtig mechanisme voor intelligente proactieve monitoring.

In de meest voor de hand liggende toepassingen van deze functie kunt u het volgende proberen:

  • Automatisch een bepaalde toepassing (webserver, middleware, CRM) opnieuw starten als deze niet reageert.
  • De 'reboot' opdracht van IPMI gebruiken om een externe server opnieuw op te starten als deze niet reageert op verzoeken.
  • Automatisch schijfruimte vrijmaken (oudere bestanden verwijderen, /tmp opruimen) als er te weinig schijfruimte is.
  • Een VM migreren van de ene fysieke server naar de andere, afhankelijk van de CPU-belasting.
  • Nieuwe nodes toevoegen aan een cloudomgeving als er onvoldoende CPU (schijf, geheugen, wat dan ook) resources zijn.

Het configureren van een actie voor externe commando's is vergelijkbaar met het configureren van een bericht, het enige verschil is dat Zabbix een commando zal uitvoeren in plaats van een bericht te verzenden.

Externe commando's kunnen worden uitgevoerd door de Zabbix-server, proxy of agent. Externe commando's op de Zabbix-agent kunnen rechtstreeks worden uitgevoerd door de Zabbix-server of via een Zabbix-proxy. Zowel op de Zabbix-agent als op de Zabbix-proxy zijn externe commando's standaard uitgeschakeld. Ze kunnen worden ingeschakeld door:

  • Het toevoegen van een AllowKey=system.run[*] parameter in de agentconfiguratie.
  • Het instellen van de parameter EnableRemoteCommands op '1' in de proxyconfiguratie.

Externe commando's die worden uitgevoerd door de Zabbix-server worden uitgevoerd zoals beschreven in Command execution, inclusief het controleren van de exit code.

Externe commando's worden uitgevoerd, zelfs als de doelhost in onderhoud is.

Limiet voor externe opdrachten

Het limiet voor externe opdrachten na het oplossen van alle macro's is afhankelijk van het type database en de tekenset (niet-ASCII-tekens vereisen meer dan één byte om te worden opgeslagen):

Database Limiet in tekens Limiet in bytes
MySQL 65535 65535
Oracle Database 2048 4000
PostgreSQL 65535 niet beperkt
SQLite (alleen Zabbix-proxy) 65535 niet beperkt

Configuratie

Die externe commando's die worden uitgevoerd op de Zabbix-agent (aangepaste scripts) moeten eerst worden ingeschakeld in de agentconfiguratie. Zorg ervoor dat de AllowKey=system.run[<command>,*] parameter is toegevoegd voor elk toegestaan commando in de agentconfiguratie om het specifieke commando toe te staan met de nowait-modus. Start de agentdaemon opnieuw op als u deze parameter wijzigt.

Externe commando's werken niet met actieve Zabbix-agents.

Vervolgens, bij het configureren van een nieuwe actie in Alerts → Actions → Trigger actions:

  1. Definieer de juiste voorwaarden, bijvoorbeeld stel in dat de actie wordt geactiveerd bij elke ramp met een van de Apache-toepassingen.

  1. In het tabblad Operations, klik op Toevoegen in de blokken Operations, Hersteloperaties of Bijwerkingsoperaties.

  1. Selecteer een van de vooraf gedefinieerde scripts uit de vervolgkeuzelijst Operatie en stel de Doellijst in voor het script.

Vooraf gedefinieerde scripts

Scripts die beschikbaar zijn voor actiebewerkingen (webhook, script, SSH, Telnet, IPMI) worden gedefinieerd in algemene scripts.

Bijvoorbeeld:

sudo /etc/init.d/apache restart 

In dit geval zal Zabbix proberen een Apache-proces te herstarten. Zorg ervoor dat het commando wordt uitgevoerd op de Zabbix-agent (klik op de knop Zabbix-agent bij Uitvoeren op).

Let op het gebruik van sudo - de Zabbix-gebruiker heeft standaard geen toestemming om systeemdiensten te herstarten. Zie hieronder voor hints over hoe u sudo kunt configureren.

De Zabbix-agent moet worden uitgevoerd op de externe host en inkomende verbindingen accepteren. De Zabbix-agent voert commando's uit op de achtergrond.

Externe commando's op de Zabbix-agent worden zonder time-out uitgevoerd met de systeem.run[,nowait] sleutel en worden niet gecontroleerd op uitvoeringsresultaten. Op de Zabbix-server en de Zabbix-proxy worden externe commando's uitgevoerd met een time-out zoals ingesteld in de TrapperTimeout-parameter van het zabbix_server.conf- of zabbix_proxy.conf-bestand en worden gecontroleerd op uitvoeringsresultaten.

Toegangsrechten

Zorg ervoor dat de 'zabbix'-gebruiker uitvoerrechten heeft voor geconfigureerde commando's. Het kan interessant zijn om sudo te gebruiken om toegang te geven tot bevoorrechte commando's. Om toegang te configureren, voert u uit als root:

# visudo

Voorbeeldregels die in het sudoers-bestand kunnen worden gebruikt:

# Hiermee kan de 'zabbix'-gebruiker alle opdrachten uitvoeren zonder wachtwoord.
       zabbix ALL=NOPASSWD: ALL
       
       # Hiermee kan de 'zabbix'-gebruiker Apache herstarten zonder wachtwoord.
       zabbix ALL=NOPASSWD: /etc/init.d/apache restart

Op sommige systemen voorkomt het sudoers-bestand dat niet-lokale gebruikers opdrachten kunnen uitvoeren. Om dit te wijzigen, kunt u de requiretty-optie in /etc/sudoers uitcommentariëren.

Remote commando's met meerdere interfaces

Als het doelsysteem meerdere interfaces heeft van het geselecteerde type (Zabbix-agent of IPMI), worden externe commando's uitgevoerd op de standaard interface.

Het is mogelijk om externe commando's via SSH en Telnet uit te voeren met een andere interface dan die van de Zabbix-agent. De beschikbare interface om te gebruiken wordt geselecteerd in de volgende volgorde:

  • Zabbix-agent standaardinterface
  • SNMP standaardinterface
  • JMX standaardinterface
  • IPMI standaardinterface

IPMI externe commando's

Voor IPMI externe commando's moet de volgende syntaxis worden gebruikt:

<commando> [<waarde>]

waarbij

  • <commando> - een van de IPMI-commando's zonder spaties
  • <waarde> - 'on', 'off' of een niet-ondertekend geheel getal. <waarde> is een optionele parameter.

Voorbeelden

Voorbeelden van globale scripts die als externe opdrachten kunnen worden gebruikt in actie-operaties.

Voorbeeld 1

Herstart van Windows onder bepaalde voorwaarden.

Om Windows automatisch opnieuw op te starten bij een probleem dat wordt gedetecteerd door Zabbix, definieer het volgende script:

Scriptparameter Waarde
Bereik 'Actiebewerking'
Type 'Script'
Opdracht c:\windows\system32\shutdown.exe -r -f

Voorbeeld 2

Herstart de host met behulp van IPMI-besturing.

Scriptparameter Waarde
Bereik 'Actiebewerking'
Type 'IPMI'
Opdracht reset

Voorbeeld 3

Schakel de host uit met behulp van IPMI-besturing.

Scriptparameter Waarde
Bereik 'Actiebewerking'
Type 'IPMI'
Opdracht power off