Ad Widget

Collapse

Запуск speedtest через system.run

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • zmdpc
    Senior Member
    • Oct 2014
    • 484

    #1

    Запуск speedtest через system.run

    Добрый день. Замыслил я тестирование скорости канала через system.run. Ключ для агента прописал
    system.run[speedtest -s 30813 - f json].
    При тестировании выдает ошибку
    terminate called after throwing an instance of 'std::logic_error' what(): basic_string::_M_construct null not valid Aborted
    Этот вариант вообще работает или по старинке через юзерпараметр?

    UPD:
    Создал Юзерпараметр вида UserParameter=speedtt[*],speedtest -s $1 -u Mbps -f json-pretty
    Запуск вида zabbix_agentd -t speedtt[4276] вполне себе отрабатывает и выдает требуемый жейсон...
    Но на сервере ошибка таже ...

    speedtest -V
    Speedtest by Ookla 1.0.0.2 (5ae238b) Linux/x86_64-linux-musl 4.15.18-30-pve x86_64

    Last edited by zmdpc; 14-02-2021, 19:05.
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Сколько времени отрабатывает один вызов speedtest-а? И какое значение имеет параметр "Timeout=" на сервере и на агенте?

    Comment

    • zmdpc
      Senior Member
      • Oct 2014
      • 484

      #3
      26 sec время выполнения опроса speedtest
      Timeout 30 sec agent на машине где выполняется тестирование
      Timeout 10 sec server
      При попытке тестирования итема на сервере ошибку выдает сразу же

      Upd: Выставил 30 сек тайм-аут на сервере, ошибка та же
      UPD2: Запускал так же на компьютере где нужно проверять скорость (агент 5.0.8) через sudo из под пользователя zabbix, лицензию принял она записана в папку пользователя /home/zabbix/.config/ookla/speedtest-cli.json
      Last edited by zmdpc; 15-02-2021, 12:18.

      Comment

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

        #4
        На сервере попробуйте выполнить команду (zabbix_agentd -t speedtt[4276]) от имени пользователя под которым работает zabbix.

        Comment

        • zmdpc
          Senior Member
          • Oct 2014
          • 484

          #5
          Originally posted by Hamardaban
          На сервере попробуйте выполнить команду (zabbix_agentd -t speedtt[4276]) от имени пользователя под которым работает zabbix.
          sudo -u zabbix zabbix_agentd -t speedtt[4276]
          speedtt[4276] [m|ZBX_NOTSUPPORTED] [Unsupported item key.]

          Last edited by zmdpc; 15-02-2021, 12:17.

          Comment


          • Hamardaban
            Hamardaban commented
            Editing a comment
            а как же "Запуск вида zabbix_agentd -t speedtt[4276] вполне себе отрабатывает и выдает требуемый жейсон" ?
            или перестало отрабатывать?
        • zmdpc
          Senior Member
          • Oct 2014
          • 484

          #6
          С самого начала
          есть сервер -там запускать спидтест не нужно
          есть другой компьютер где нужно проводить тестирование - там в агенте через юзерпарамет создан ключ speedtt
          UserParameter=speedtt[*],speedtest -s $1 -f json-pretty и там все работает

          но на сервере где создан итем не работает

          Первоначально я пробовал создавать вызов через system.run ошибка была та же
          Attached Files
          Last edited by zmdpc; 15-02-2021, 12:55.

          Comment

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

            #7
            Пардонте - не точно написал. Конечно пробовать нужно на компьютере где установлен агент! Где собственно и не работает при выполнении через агента.
            Идея проверки в том, что пользователи имеют разные права.
            Какая там ОС?

            Comment

            • zmdpc
              Senior Member
              • Oct 2014
              • 484

              #8
              Originally posted by Hamardaban
              Пардонте - не точно написал. Конечно пробовать нужно на компьютере где установлен агент! Где собственно и не работает при выполнении через агента.
              Идея проверки в том, что пользователи имеют разные права.
              Какая там ОС?
              Там где агент стоит там все отрабатывает без ошибок
              В обоих случаях Debian 9

              Comment


              • Hamardaban
                Hamardaban commented
                Editing a comment
                разговор немого с глухим... извините что вклинился в вашу проблему.
                удачного решения проблемы.
            • Kos
              Senior Member
              Zabbix Certified SpecialistZabbix Certified Professional
              • Aug 2015
              • 3404

              #9
              Давайте идти последовательно.
              UserParameter=speedtt[*],speedtest -s $1 -u Mbps -f json-pretty и там все работает
              Я правильно понимаю, что вызов
              Code:
              zabbix_agentd -t speedtt[4276]
              завершается успешно? Если да - то какое время отображается, если в начале командной строки добавить "time "?
              Далее, что происходит, если пытаться забирать то же значение с агента утилитой zabbix_get?
              Выполняется ли команда speedtest (со всеми нужными параметрами), если её явно пытаться запускать из имени пользователя zabbix?

              Comment

              • zmdpc
                Senior Member
                • Oct 2014
                • 484

                #10
                Originally posted by Kos
                Давайте идти последовательно.

                Я правильно понимаю, что вызов
                Code:
                zabbix_agentd -t speedtt[4276]
                завершается успешно? Если да - то какое время отображается, если в начале командной строки добавить "time "?
                Далее, что происходит, если пытаться забирать то же значение с агента утилитой zabbix_get?
                Выполняется ли команда speedtest (со всеми нужными параметрами), если её явно пытаться запускать из имени пользователя zabbix?
                Да именно так zabbix_agentd -t speedtt[4276] завершается успешно
                Время отображается (раньше было чуть больше 26 сек)

                на текущий момент
                real 0m19,016s
                user 0m1,106s
                sys 0m3,354s

                Comment

                • zmdpc
                  Senior Member
                  • Oct 2014
                  • 484

                  #11
                  На сервере я устанавливал 30 сек толку это не принесло ошибка осталась. Поэтому сейчас вернул обратно 10 сек поскольку стали загружаться поллеры до 100%

                  Comment

                  • Kos
                    Senior Member
                    Zabbix Certified SpecialistZabbix Certified Professional
                    • Aug 2015
                    • 3404

                    #12
                    Originally posted by zmdpc
                    Да именно так zabbix_agentd -t speedtt[4276] завершается успешно
                    Время отображается (раньше было чуть больше 26 сек)

                    на текущий момент
                    real 0m19,016s
                    user 0m1,106s
                    sys 0m3,354s
                    OK, просто зафиксируем: время работы - порядка 20-25 секунд.
                    Едем дальше:
                    Далее, что происходит, если пытаться забирать то же значение с агента утилитой zabbix_get?

                    Comment

                    • zmdpc
                      Senior Member
                      • Oct 2014
                      • 484

                      #13
                      Originally posted by Kos
                      OK, просто зафиксируем: время работы - порядка 20-25 секунд.
                      Едем дальше:
                      Если пробовать забрать прямо с сервера ответ
                      zabbix_get -s 127.0.0.1 -k speedtt[4276]
                      ZBX_NOTSUPPORTED: Unsupported item key.

                      Если пробовать тоже с компьютера где у агента настроен UserParameter=speedtt[*],speedtest -s $1 -f json-pretty
                      ответ
                      zabbix_get -s IPserver -k speedtt[4276]
                      zabbix_get [1650]: Check access restrictions in Zabbix agent configuration

                      Comment

                      • Kos
                        Senior Member
                        Zabbix Certified SpecialistZabbix Certified Professional
                        • Aug 2015
                        • 3404

                        #14
                        Originally posted by zmdpc
                        Если пробовать забрать прямо с сервера ответ
                        zabbix_get -s 127.0.0.1 -k speedtt[4276]
                        ZBX_NOTSUPPORTED: Unsupported item key.

                        Если пробовать тоже с компьютера где у агента настроен UserParameter=speedtt[*],speedtest -s $1 -f json-pretty
                        ответ
                        zabbix_get -s IPserver -k speedtt[4276]
                        zabbix_get [1650]: Check access restrictions in Zabbix agent configuration
                        Это логично, поскольку на сервере у вас агент не настроен обслуживать запросы с таким ключом, а на машине с агентом не разрешено опрашивать агента локально.
                        Запустите эту команду на сервере, но указывая в параметре "-s" IP-адрес машины с агентом (а не 127.0.0.1).
                        Также обратите внимание на время выполнения этой команды (аналогично: добавляя "time " в начало командной строки, интересует первая строка - real).
                        Если будут ошибки - то посмотрите в лог агента, есть ли там за это время какая-нибудь ругань.

                        Comment

                        • zmdpc
                          Senior Member
                          • Oct 2014
                          • 484

                          #15
                          Originally posted by Kos
                          Это логично, поскольку на сервере у вас агент не настроен обслуживать запросы с таким ключом, а на машине с агентом не разрешено опрашивать агента локально.
                          Запустите эту команду на сервере, но указывая в параметре "-s" IP-адрес машины с агентом (а не 127.0.0.1).
                          Также обратите внимание на время выполнения этой команды (аналогично: добавляя "time " в начало командной строки, интересует первая строка - real).
                          Если будут ошибки - то посмотрите в лог агента, есть ли там за это время какая-нибудь ругань.
                          time zabbix_get -s IP_Agent -k speedtt[4276]
                          terminate called after throwing an instance of 'std::logic_error'
                          what(): basic_string::_M_construct null not valid
                          Aborted

                          real 0m0.014s
                          user 0m0.000s
                          sys 0m0.004s

                          Ругани нет добавил в конфиге логирование удаленных команд появилось
                          Executing command 'speedtest -s 4276 -f json-pretty'

                          Comment

                          Working...