9 Извршење команде
Zabbix користи уобичајену функционалност за спољне провере, корисничке параметре, system.run ставке, прилагођене скрипте упозорења, удаљене команде и глобално скрипте.
Кораци извршавања
Подразумевано, сви скриптови у Zabbix-у се извршавају помоћу sh шкољке и није могуће изменити подразумевану шкољку. Да бисте користили другачију љуску, можете користити заобилазно решење: креирајте датотеку скрипте и позовите ту скрипту током извршавања команде.
Команда/скрипта се извршава слично и на Unix и на Windows платформама:
- Zabbix (родитељски процес) креира цевовод за комуникацију
- Zabbix поставља цевовод као излаз за креирани подређени процес
- Zabbix креира подређени процес (покреће команду/скрипту)
- Нова група процеса (у Unix) или задатак (у Windows) се креира за подређени процес
- Zabbix чита из цеви док не истекне време или нико не пише на други крај (СВИ дескриптори датотека/датотечни дескриптори су затворени). Имајте на уму да подређени процес може да креира више процеса и да се изађе пре него што изађу или затворе дескриптор датотеке.
- Ако време чекања није достигнуто, Забикс чека док се почетни подређени процес не заврши или док не истекне време чекања
- Ако је почетни подређени процес изашао и време чекања није достигнуто, Zabbix проверава излазни код почетног подређеног процеса и упоређује га са 0 (вредност која није нула сматра се неуспешним извршавањем, само за прилагођене скрипте упозорења, удаљене команде и корисничке скрипте извршене на Zabbix серверу и Zabbix проксију)
- У овом тренутку се претпоставља да је све завршено и да је целокупно стабло процеса (тј. група процеса или посао) завршено
Zabbix претпоставља да је команда/скрипта завршила обраду када је почетни подређени процес изашао И ниједан други процес више не држи излазни дескриптор/дескриптор датотеке отвореним. Када се обрада заврши, СВИ креирани процеси се завршавају.
Сви двоструки наводници и обрнуте косе црте у команди се избегавају обрнутим косим цртама и команда је затворена у двоструке наводнике.
Излаз из провере кода
Излазни код се проверава под следећим условима:
- Само за прилагођене скрипте упозорења, удаљене команде и корисничке скрипте извршава се на Zabbix серверу и Zabbix прокси серверу.
- Сваки излазни код који се разликује од 0 сматра се извршењем неуспех.
- Садржај стандардне грешке и стандардни излаз за неуспела извршења су прикупљени и доступни у корисничком интерфејсу (где је резултат извршења приказано).
- Додатни унос дневника може бити креиран за удаљене команде које се извршавају на Zabbix агенту/проксију омогућавањем параметра LogRemoteCommands на агент/proxy.
Могуће поруке корисничког интерфејса и уносе у дневник за неуспеле команде/скрипте:
- Садржај стандардне грешке и стандардни излаз за неуспела извршења (ако их има).
- "Процес је изашао са кодом: N." (за празан излаз, а излазни код не једнако 0).
- "Процес прекинут сигналом: N." (за процес који је прекинут сигналом, само на Linux-у).
- "Процес је неочекивано прекинут." (за процес прекинут за непознати разлози).