3 Scripts

Vista general

A la secció Alertes → Scripts, es poden configurar i gestionar scripts globals definits per l'usuari.

Els scripts globals, segons l'abast configurat i els permisos de l'usuari, són disponibles per a l'execució:

  • des del menú de l'equip a diverses ubicacions d'interfície (Taulers de control, Problemes, Dades més recents, Mapes, etc.)
  • des del menú d'esdeveniments
  • es pot executar com una operació d'acció

Els scripts s'executen només a l'agent Zabbix, al servidor Zabbix (proxy) o al servidor Zabbix. Veieu també Execució de comandes.

Els scripts remots de l'agent Zabbix i del proxy Zabbix són desactivats de manera predeterminada. Es poden activar mitjançant:

  • Comandes remotes executades a l'agent Zabbix
    • afegint un paràmetre AllowKey=system.run[<command>,*] per a cada ordre autoritzada a la configuració de l'agent, * representa el mode wait i nowait;
  • Comandes remotes executades al proxy Zabbix
    • Avís: no cal habilitar comandes remotes al proxy Zabbix si s'executen comandes remotes a l'agent Zabbix monitorat pel proxy Zabbix. Si, tanmateix, és necessari executar comandes remotes al proxy Zabbix, establiu el paràmetre EnableRemoteCommands a '1' a la configuració del proxy.

L'execució d'scripts globals a Zabbix es pot deshabilitar definint la variable EnableGlobalScripts=0 a la configuració del servidor. Per a instal·lacions noves, des de Zabbix 7.0, l'execució d'scripts globals al servidor Zabbix és deshabilitada per defecte.

Es mostra una llista dels scripts existents amb els seus detalls.

Dades mostrades:

Columna Descripció
Nom Nom de l'script. En fer clic al nom de l'script s'obre el [formulari de configuració] de l'script (scripts#configuring_a_global_script).
Àmbit Àmbit de l'script: operació d'acció, acció manual de l'equip o acció manual d'esdeveniments. Aquesta configuració determina on és disponible l'script.
S'empra en accions S'hi veuen totes les accions on s'empra l'script, (des de Zabbix 7.0.4) precedides del nombre total d'aquestes accions.
Fer clic al nom de l'acció s'obre el formulari de configuració de l'acció. Si l'usuari no té permisos per a l'acció, no es pot fer clic al nom.
Tipus Es mostra el tipus d'script: comanda Webhook, Script, SSH, Telnet o IPMI.
Executar a Es mostra si l'script s'executarà només a l'agent Zabbix, al proxy Zabbix o al servidor Zabbix.
Comandes Es mostren totes les ordres que s'han d'executar a l'script.
Grup d'usuaris Es mostra el grup d'usuaris per al qual està disponible l'script (o Tot per a tots els grups d'usuaris).
Grup d'equips Es mostra el grup d'equip per al qual està disponible l'script (o Tot per a tots els grups d'equip).
Accés a l'equip Es mostra el nivell de permís per al grup d'equip: Llegir o Escriure. Només els usuaris amb el nivell de permís necessari tindran accés per executar l'script.

Per configurar un script nou, feu clic al botó Crea script a l'extrem superior dret.

Opcions d'edició massiva

Un botó a sota de la llista ofereix una opció d'edició massiva:

  • Esborrar - esborra scripts

Per emprar aquesta opció, marqueu les caselles davant dels scripts respectius i feu clic a Esborrar.

Ús de filtres

Podeu emprar filtres per veure només els scripts que us interessen. Per obtindre un millor rendiment de la cerca, les dades es cerquen amb macros no resoltes.

L'enllaç Filtre és disponible a sobre de la llista d'scripts. Si hi feu clic, hi haurà un filtre disponible i podeu filtrar els scripts per nom i àmbit.

Configuració d'un script global

Attributs de l'script:

Paràmetre Descripció
Nom Nom únic de l'script.
Ex. Busqueu el sistema de fitxers /tmp
Àmbit Àmbit de l'script: operació d'acció, acció manual de l'equip o acció manual d'esdeveniments. Aquesta configuració determina on es pot emprar l'script: a les comandes remotes d'operacions d'acció, des del menú equips o des del menú d'esdeveniments respectivament.
Establir l'abast a "Acció d'operació" fa que l'script sigui disponible per a tots els usuaris amb accés a ConfiguracióAccions.
Si realment s'empra un script en un acció, el seu abast no es pot canviar fora de l'"Acció d'operació".
Compatibilitat amb macros
L'abast afecta el rang de macros disponibles. Per exemple, les macros relacionades amb l'usuari ({USER.*}) s'admeten als scripts per permetre que es transmeti informació sobre l'usuari que va iniciar l'script. Tanmateix, no s'admeten si l'abast de l'script és una operació d'acció, ja que les operacions d'acció es fan automàticament.
Per esbrinar quines macros s'admeten, cerqueu "Notificacions i comandes basades en triggers/comandes basades en triggers", "Scripts d'acció manual de l'equip" i "Scripts d'acció manual d'esdeveniments" a la taula de macros compatibles. Tingueu en compte que si una macro pot resoldre un valor amb espais (per exemple, nom d'equip), cal citar quan sigui necessari.
Camí del menú Camí del menú desitjat a l'script. Per exemple, Default o Default/, mostrarà l'script al directori respectiu. Els menús es poden niuar, p. Menú principal/Submenú1/Submenú2. En accedir als scripts mitjançant el menú d'equip/esdeveniment a les seccions de monitoratge, s'organitzaran segons els directoris donats.
Aquest camp només es veu si s'ha triat 'Acció manual de l'equip' o 'Acció manual de l'esdeveniment' com a Àmbit.
Tipus Feu clic al botó corresponent per seleccionar el tipus d'script:
Webhook, Script, SSH, Telnet o [IPMI] (/manual/config/notifications/action/operation/remote_command#ipmi_remote_commands).
El tipus URL és disponible només quan 'Acció manual d'equip' o 'Acció manual d'esdeveniment' s'ha definit a Àmbit.
Tipus d'script: URL
URL Especifiqueu l'URL d'accés ràpid del menú d'equips o menú d'esdeveniments.
S'admeten macros i macros d'usuari personalitzades. El suport de les macros depèn de l'àmbit de l'script (veieu Àmbit més amunt).
Empreu la macro {MANUALINPUT} al camp per permetre especificar una entrada manual al moment d'execució de l'script, com ara :
http://{MANUALINPUT}/zabbix/zabbix.php?action=dashboard.view
Els valors de macro no han d'ésser URL-encoded.
Obrir a una finestra nova Si l'URL s'ha d'obrir a una finestra nova o a una pestanya del mateix navegador.
Tipus d'script: Webhook
Paràmetres Especifiqueu les variables de webhook com a parelles d'atribut-valor.
Veieu també: Configuració de mitjans Webhook.
Macros i usuari personalitzat són compatibles amb els valors dels paràmetres. La compatibilitat amb les macros depèn de l'abast de l'script (veieu Ambit més amunt).
Script Introduïu el codi JavaScript a l'editor modal que s'obre quan cliquem al camp de paràmetres, o a la icona de text del llàpis que hi ha al costat.
El suport de macro depèn de l'abast de l'script (veieu Àmbit a dalt).
Veieu també: Configuració de mitjans Webhook, Objectes Javascript addicionals.
Temps d'espera Temps d'espera d'execució de JavaScript (1-60 s, 30 s per defecte).
S'admeten sufixos de temps, com ara 30s, 1m.
Tipus de script: Script
Quan executar Feu clic al botó corresponent per executar l'script de l'intèrpret de comandes a:
agent Zabbix - l'agent Zabbix executarà l'script (si l'element system.run és permès) a l'equip
Servidor o proxy Zabbix - l'script s'executarà pel servidor o proxy Zabbix.
S'executarà al proxy si s'ha activat el paràmetre de servidor EnableRemoteCommands - depenent de si l'equip és monitorat per un servidor o un proxy
servidor Zabbix - l'script només l'executarà el servidor Zabbix.
Aquesta opció no serà pas disponible si els scripts globals són desactivats per el paràmetre del servidor EnableGlobalScripts.
Comandes Introduïu el camí complet de les comandes que s'han d'executar a l'script.
El suport de macro depèn de l'abast de l'script (veieu Àmbit més amunt). S'admeten macros d'usuari personalitzades.
Tipus d'script: SSH
Mètode d'autenticació Trieu el mètode d'autenticació: mot de pas o clau pública.
Nom d'usuari Introdueix el nom d'usuari.
Mot de pas Introduïu el mot de pas.
Aquest camp és disponible si s'ha triat 'Mot de pas' com a mètode d'autenticació.
Fitxer de clau pública Introduïu la ruta al fitxer de clau pública.
Aquest camp és disponible si es tria 'Clau pública' com a mètode d'autenticació.
Fitxer de clau privada Introduïu la ruta al fitxer de clau privada.
Aquest camp és disponible si es tria 'Clau pública' com a mètode d'autenticació.
Frase de pas Introduïu la frase de pas.
Aquest camp és disponible si s'ha triat 'Clau pública' com a mètode d'autenticació.
Port Introduïu el port.
Comandes Introduïu les comandes.
El suport de macro depèn de l'abast de l'script (veieu Àmbit més amunt). S'admeten macros d'usuari personalitzades.
Tipus d'script: Telnet
Nom d'usuari Introduïu el nom d'usuari.
Mot de pas Introduïu el mot de pas.
Port Introduïu el port.
Comandes Introduïu les comandes.
El suport de macro depèn de l'abast de l'script (veieu Àmbit més amunt). S'admeten macros d'usuari personalitzades.
Tipus d'script: IPMI
Comandes Introduïu les comandes IPMI.
La compatibilitat amb macros depèn de l'abast de l'script (veieu Ambit més amunt). S'admeten macros d'usuari personalitzades.
Descripció Introduïu una descripció per a l'script.
Grup d'equips Trieu el grup d'equips per al qual serà disponible l'script (o Tot per a tots els grups d'equips).
Grup d'usuaris Trieu el grup d'usuaris per al qual serà disponible l'script (o Tot per a tots els grups d'usuaris).
Aquest camp només apareix si 'Acció manual de l'equip' o 'Acció manual d'esdeveniment' és triat com a Àmbit.
Permisos d'equip necessaris Trieu el nivell de permís per al grup d'equip: Lectura o Escriptura. Només els usuaris amb el nivell de permís necessari tindran accés per executar l'script.
Aquest camp només es mostra si s'ha triat "Acció manual de l'equip" o "Acció manual d'esdeveniment" com a Àmbit .
Configuració avançada Feu clic a l'etiqueta Configuració avançada per veure les opcions de configuració avançada options.
Aquest camp només apareix si 'Acció manual de l'equip' o 'Acció manual d'esdeveniment' és triat com a Àmbit.

Configuració avançada

Les opcions de configuració avançades són disponibles a una secció plegable Configuració avançada:

|Paràmetre|Descripció| |-----------|--------------------------------------- --| |Activar l'entrada de l'usuari|Marqueu la casella de selecció per habilitar l'entrada manual de l'usuari abans d'executar l'script.
L'entrada manual de l'usuari substituirà el valor de la macro {MANUALINPUT} a l'script.
Veieu també: Entrada manual de l'usuari.| |Introducció de petició|Introduïu una petició de text personalitzada per a l'entrada personalitzada de l'usuari. Aquest text es mostrarà a sobre del camp d'entrada a la finestra emergent Entrada manual.
Per veure una vista prèvia de la finestra emergent Entrada manual, feu clic a Prova l'entrada de l'usuari. La previsualització també permet provar si la cadena d'entrada compleix la regla de validació d'entrada (veieu els paràmetres a continuació).
El suport de macros i macros d'usuari depèn de l'abast de l'script (veieu Àmbit als paràmetres de configuració generals de l'script).| |Tipus d'entrada|Trieu el tipus d'entrada manual:
Cadena - cadena única;
Dropdown - el valor es selecciona entre diverses opcions desplegables.| |Opcions desplegables|Introduïu valors únics per al menú desplegable d'entrada de l'usuari en una llista delimitada per comes.
Per incloure una opció buida al menú desplegable, afegiu una coma addicional al principi, al mig o al final de la llista.< br>Aquest camp només es mostra si s'ha escollit 'Menú desplegable' com a Tipus d'entrada.| |Cadena d'entrada predeterminada|Introduïu la cadena per defecte per a l'entrada de l'usuari (o cap).
Aquest camp es validarà amb l'expressió regular proporcionada al camp Regla de validació d'entrada.
El valor introduït aquí serà es mostra per defecte a la finestra emergent Entrada manual.
Aquest camp només es mostra si s'ha triat 'Cadena' com a Tipus d'entrada.| |Regla de validació d'entrada|Introduïu una expressió regular per validar la cadena d'entrada de l'usuari.
S'admeten expressions regulars globals.
Aquest camp només es mostra si s'ha escollit 'Cadena' com a Tipus d'entrada.| |Activar la confirmació|Marqueu la casella de selecció per mostrar un missatge de confirmació abans d'executar l'script. Aquesta característica pot ser especialment útil amb operacions potencialment perilloses (com ara un script de reinici) o les que poden trigar molt de temps.| |Text de confirmació|Introduïu un text de confirmació personalitzat per a la finestra emergent de confirmació activada amb la casella de selecció de dalt (per exemple, El sistema remot es reiniciarà. Voleu fer-ho?). Per veure com quedarà el text, feu clic a Confirmació de la prova al costat del camp.
Macros i macros d'usuari personalitzades. Les macros d'usuari són compatibles.
Nota: les macros no s'ampliaran en provar el missatge de confirmació.|

Si es configuren tant l'entrada manual de l'usuari com un missatge de confirmació, es mostraran en finestres emergents consecutives.

Entrada manual de l'usuari

L'entrada manual de l'usuari permet proporcionar un paràmetre personalitzat a cada execució de l'script. Això estalvia la necessitat de crear diversos scripts d'usuari similars amb només una diferència de paràmetres.

Per exemple, és possible que vulgueu proporcionar un nombre enter diferent o una adreça URL diferent a l'script durant l'execució.

Per habilitar l'entrada manual de l'usuari:

  • empreu la macro {MANUALINPUT} a l'script (ordres, script, paràmetre de l'script) quan calgui; o al camp URL dels scripts d'URL;
  • a Configuració avançada de l'script, habiliteu l'entrada manual de l'usuari i configureu les opcions d'entrada.

Amb l'entrada de l'usuari habilitada, abans de l'execució de l'script, apareixerà una finestra emergent Entrada manual a l'usuari demanant que proporcioni un valor personalitzat. El valor proporcionat substituirà {MANUALINPUT} a l'script.

En funció de la configuració, se li demanarà a l'usuari que introdueixi un valor de cadena:

O trieu el valor d'un menú desplegable d'opcions predeterminades:

L'entrada manual de l'usuari només és disponible per als scripts on l'abast és "Acció manual de l'equip" o "Acció d'esdeveniment manual".

Execució d'script i resultat

Els scripts executats pel servidor Zabbix s'executen en l'ordre descrit a la secció Execució de comandes, inclosa la comprovació del codi de sortida. El resultat de l'script es mostrarà en una finestra emergent que apareixerà després de l'execució de l'script.

El valor de retorn de l'script és una sortida estàndard amb error estàndard.

Veieu un exemple d'script i una finestra de resultats a continuació:

 uname -v
        /tmp/non_existing_script.sh
        echo "Aquest script l'ha iniciat {USER.USERNAME}"

La sortida de l'script no ensenya l'script.

Temps límit de l'script

Agent Zabbix

Podeu trobar una situació en què es produeixi un temps d'espera durant l'execució d'un script.

Veieu un exemple d'script executat a l'agent Zabbix i la finestra de resultats a continuació:

 sleep 5
        df -h

El missatge d'error en aquest cas és:

 Temps d'espera esgotat durant l'execució d'un script de shell.

Per evitar aquesta situació, és recomanable optimitzar el propi script (en lloc d'ajustar el paràmetre Timeout a un valor corresponent (en el nostre cas, "5") modificant la configuració de l'agent Zabbix i Configuració del servidor Zabbix.

Tanmateix, per a l'agent Zabbix en mode actiu, el paràmetre Timeout a Configuració del servidor Zabbix hauria de ser almenys uns segons més que el paràmetre RefreshActiveChecks a Configuració de l'agent Zabbix. Això garanteix que el servidor tingui prou temps per rebre els resultats de la comprovació activa de l'agent. Tingueu en compte que l'execució d'scripts en un agent actiu és compatible des de l'agent Zabbix 7.0.

Si el paràmetre Timeout encara es modifica a la Configuració de l'agent Zabbix, pot aparèixer el missatge d'error següent:

 No s'ha pogut obtindre el valor de l'agent: ZBX_TCP_READ() s'ha esgotat.

Això vol dir que s'ha fet un canvi a Configuració de l'agent Zabbix i cal canviar el paràmetre Timeout també a Configuració del servidor Zabbix .

Servidor/proxy Zabbix

Aquí hi ha un script d'exemple executat al servidor Zabbix i la finestra de resultats a continuació:

 sleep 11
        df-h

També és recomanable optimitzar el propi script (en lloc d'ajustar el paràmetre TrapperTimeout a un valor corresponent (en el nostre cas > '11') modificant la Configuració del servidor Zabbix).