Ad Widget

Collapse

Команды на запуск php скрипта из ZABBIX сервер на zabbix-agent

Collapse
This topic has been answered.
X
X
 
  • Time
  • Show
Clear All
new posts
  • j238267431
    Junior Member
    • Nov 2022
    • 11

    #1

    Команды на запуск php скрипта из ZABBIX сервер на zabbix-agent

    Добрый день, мне нужно запустить php скрипт - сокет сервер, который работает в бесконечном цикле, то есть не заканчивается
    ответ от zabbix ZBX_NOTSUPPORTED: Timeout while executing a shell script.
    ​Обычные команды выполняются например zabbix_get -s IP -k system.run["systemctl restart nginx"]
    а вот такие zabbix_get -s IP -k system.run["php script.php start"] выдают таймаут
    Как то можно запускать такие команды через zabbix agent c zabbix server?
  • Answer selected by j238267431 at 16-12-2022, 15:56.
    Hamardaban
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • May 2019
    • 2713

    Так не работает?
    Code:
    zabbix_get -s ip_агента -k 'system.run["ваша_команда",nowait]'

    Comment

    • Hamardaban
      Senior Member
      Zabbix Certified SpecialistZabbix Certified Professional
      • May 2019
      • 2713

      #2
      Скорее всего процесс всё же запустился, просто zabbix_get ожидает ответ от агента о запуске процесса (exit code)
      вариант 1 - использовать скрипт-обертку который будет форкать php и корректно завершатся возвращая код.
      вариант 2 - попробовать вызывать system.run["php script.php start || exit 0​"] (не уверен что сработает)
      Last edited by Hamardaban; 14-12-2022, 16:36.

      Comment

      • j238267431
        Junior Member
        • Nov 2022
        • 11

        #3
        нет, к сожалению скрипт не выполнился Может быть есть еще варианты?

        Comment

        • Hamardaban
          Senior Member
          Zabbix Certified SpecialistZabbix Certified Professional
          • May 2019
          • 2713

          #4
          Еще вариант - форкать ваш сокет сервер из оберточного php скрипта. без ожидания чего либо от форкнутого. https://www.php.net/manual/en/function.pcntl-fork.php
          там же можно "контролировать" запустился дочерний процесс или нет и возвращать в заббикс код возврата.

          Comment

          • j238267431
            Junior Member
            • Nov 2022
            • 11

            #5
            спасибо! Если честно никогда этого не делал и пока не понимаю, как это может помочь, почитал гугл, но не особо помогло
            Если Вам не в тягость, можете пожалуйста поподробнее описать как это сделать и как это может помочь

            Comment

            • Hamardaban
              Senior Member
              Zabbix Certified SpecialistZabbix Certified Professional
              • May 2019
              • 2713

              #6
              идея всей "возни" - сделать так чтобы агент забикса "понял" что процесс запустился и можно не ждать.

              Вообще-то в документации написано что у ключа system.run​ второй параметр как раз и управляет ожиданием. Пробовали system.run["php script.php start",nowait]​ ?

              еще вариант - попробуйте system.run["php script.php start > /dev/null &"]​

              Comment

              • j238267431
                Junior Member
                • Nov 2022
                • 11

                #7
                выполнил команду zabbix_get -s IP -k system.run["php /usr/share/nginx/html/index.php start > /dev/null &"]
                выдал вот такую ошибку
                Это что-то связанное с правами?
                PHP Fatal error: Uncaught Exception: can not save pid to /usr/share/nginx/html/vendor/workerman/workerman/../_usr_share_nginx_html_index.php.pid in /usr/share/nginx/html/vendor/workerman/workerman/Worker.php:1335

                Stack trace:

                #0 /usr/share/nginx/html/vendor/workerman/workerman/Worker.php(557): Workerman\Worker::saveMasterPid()

                Home /usr/share/nginx/html/index.php(76): Workerman\Worker::runAll()

                Forum {main}

                thrown in /usr/share/nginx/html/vendor/workerman/workerman/Worker.php on line 1335
                ​​

                Comment

                • j238267431
                  Junior Member
                  • Nov 2022
                  • 11

                  #8
                  это я workerman пробовал запустить
                  А если запускать самописный, то заметил что он запускается все таки на то время пока не вылетает ошибка Timeout то есть это к сожалению тоже не помогло - > /dev/null &
                  nowait выдает ошибку zabbix_get [1434050]: invalid parameter "nowait]"​

                  Comment

                  • Hamardaban
                    Senior Member
                    Zabbix Certified SpecialistZabbix Certified Professional
                    • May 2019
                    • 2713

                    #9
                    Какая версия агента? Неужто старее 4.0?

                    Comment

                    • j238267431
                      Junior Member
                      • Nov 2022
                      • 11

                      #10
                      zabbix_agentd (daemon) (Zabbix) 6.0.10

                      Comment

                      • Hamardaban
                        Senior Member
                        Zabbix Certified SpecialistZabbix Certified Professional
                        • May 2019
                        • 2713

                        #11
                        Так не работает?
                        Code:
                        zabbix_get -s ip_агента -k 'system.run["ваша_команда",nowait]'

                        Comment

                        • j238267431
                          Junior Member
                          • Nov 2022
                          • 11

                          #12
                          да работает! Спасибо большое! Не запускалась потому что я пробел ставил после ...start",

                          Comment

                          Working...