2 Даљинске команде

Преглед

Помоћу удаљених команди можете дефинисати да се одређена унапред дефинисана команда аутоматски извршава на праћеном домаћину под одређеним условом.

Стога су удаљене команде моћан механизам за паметно проактивно праћење.

У најочигледнијим употребама ове функције можете покушати да:

  • Аутоматски поново покренете неку апликацију (веб сервер, мидлвер, CRM) ако не реагује
  • Користи IPMI команду 'reboot' да поново покренете неки удаљени сервер ако он не одговара на захтеве
  • Аутоматски ослободите простор на диску (уклањање старијих датотека, чишћење /tmp) ако вам понестане простора на диску
  • Мигрирате виртуелну машину са једног физичког уређаја на други у зависности од оптерећења процесора
  • Додате нове чворове у облачно окружење у случају недовољних ресурса процесора (диска, меморије, шта год)

Конфигурисање акције за удаљене команде је слично оном за слање поруке, једина разлика је што ће Zabbix извршити команду уместо слања поруке.

Удаљене команде може извршити Zabbix сервер, прокси или агент. Удаљене команде на Zabbix агенту могу се извршити директно од стране Zabbix сервера или преко Zabbix проксија. И на Zabbix агенту и на Zabbix проксију, удаљене команде су подразумевано онемогућене. Могу се омогућити:

  • додавањем параметра AllowKey=system.run[*] у конфигурацији агента;
  • постављањем параметра EnableRemoteCommands на '1' у конфигурацији проксија.

Удаљене команде које извршава Zabbix сервер извршавају се као што је описано у Извршавање команди, укључујући проверу излазног кода.

Удаљене команде се извршавају чак и ако је циљни хост у одржавању.

Ограничење удаљених команди

Ограничење удаљених команди након решавања свих макроа зависи од типа базе података и скупа знакова (знакови који нису ASCII захтевају више од једног бајта за чување):

Database Limit in characters Limit in bytes
MySQL 65535 65535
PostgreSQL 65535
SQLite (само Zabbix прокси) 65535 not limited

Излаз извршавања удаљене команде (повраћена вредност) је ограничен на 16MB (укључујући скраћени размак на крају). Ограничење IPMI удаљене команде је засновано на инсталираној IPMI библиотеци. Имајте на уму да се ограничења базе података примењују на све удаљене команде.

Конфигурација

Даљинске команде које се извршавају на Zabbix агенту (прилагођене скрипте) морају прво бити омогућене у конфигурацији агента конфигурација.

Уверите се да је параметар AllowKey=system.run[<command>,*] додат за сваку дозвољену команду у конфигурацији агента како би се дозволила одређена команда са режимом nowait. Поново покрените демон агента ако промените овај параметар.

Затим, приликом конфигурисања нове акције у Упозорења → Акције → Окидачи акција:

  1. Дефинишите одговарајуће услове, на пример, подесите да се акција активира након било каквих проблема са једном од Apache апликација.

  1. На картици Операције, кликните на Додај у блоку Операције, Операције опоравка или Операције ажурирања.

  1. Изаберите један од унапред дефинисаних скрипти из падајуће листе Операција и подесите Циљну листу за скрипту.

Predefined scripts

Scripts that are available for action operations (webhook, script, SSH, Telnet, IPMI) are defined in global scripts.

For example:

sudo /etc/init.d/apache restart 

In this case, Zabbix will try to restart an Apache process. With this command, make sure that the command is executed on Zabbix agent (click the Zabbix agent button against Execute on).

Note the use of sudo - Zabbix user does not have permissions to restart system services by default. See below for hints on how to configure sudo.

Starting with Zabbix agent 7.0, remote commands can also be executed on an agent that is operating in active mode. Zabbix agent - whether active or passive - should run on the remote host, and executes the commands in background.

Remote commands on Zabbix agent are executed without timeout by the system.run[,nowait] key and are not checked for execution results. On Zabbix server and Zabbix proxy, remote commands are executed with timeout as set in the TrapperTimeout parameter of zabbix_server.conf or zabbix_proxy.conf file and are checked for execution results. For additional information, see Script timeout.

Дозволе за приступ

Уверите се да корисник 'zabbix' има дозволе за извршавање конфигурисаних команди. Можда ће вас занимати коришћење sudo за давање приступа привилегованим командама. Да бисте конфигурисали приступ, извршите као root:

visudo

Примери линија које се могу користити у датотеци sudoers:

дозвољава кориснику 'zabbix' да покреће све команде без лозинке.

zabbix ALL=NOPASSWD: ALL

дозвољава кориснику 'zabbix' да поново покрене apache без лозинке.

zabbix ALL=NOPASSWD: /etc/init.d/apache restart

На неким системима, датотека sudoers ће спречити кориснике који нису локални да извршавају команде. Да бисте ово променили, коментаришите опцију requiretty у /etc/sudoers.

Удаљене команде са више интерфејса

Ако циљни систем има више интерфејса изабраног типа (Zabbix агент или IPMI), удаљене команде ће се извршавати по подразумеваној вредности интерфејс.

Могуће је извршити даљинске команде преко SSH и Telnet користећи други интерфејс од оног Zabbix агента. Доступни интерфејс за употреба се бира следећим редоследом:

  • Подразумевани интерфејс Zabbix агента
  • SNMP подразумевани интерфејс
  • JMX подразумевани интерфејс
  • IPMI подразумевани интерфејс

IPMI даљинске команде

За IPMI удаљене команде треба користити следећу синтаксу:

<command> [<value>]

where

  • <command> - једна од IPMI команди без размака
  • <value> - 'укључено', 'искључено' или било који цео број без предзнака. <value> је опциони параметар.

Примери

Примери за глобал скрипте које се могу користити као даљинске команде у акцијама.

Пример 1

Поновно покретање Windows-а под одређеним условима.

Да бисте аутоматски поново покренули Windows након проблема који је открио Zabbix, дефинишите следећу скрипту:

Script parameter Value
Scope 'Операција радње'
Type 'Скрипта'
Command c:\windows\system32\shutdown.exe -r -f

Пример 2

Поново покрените домаћина користећи IPMI контролу.

Script parameter Value
Scope 'Action operation'
Type 'IPMI'
Command reset

Пример 3

Искључите домаћина користећи IPMI контролу.

Script parameter Value
Scope 'Операција радње'
Type 'IPMI'
Command искључење