Ad Widget

Collapse

zabbix_sender объем входного файла ???

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • swq
    Member
    • Sep 2009
    • 84

    #1

    zabbix_sender объем входного файла ???

    Из примера документации:
    zabbix_sender -z 192.168.1.113 -i data_values.txt

    Сколько по максимуму можно прописать строк в файле data_values.txt ?
    Это количество жестко установлено или же зависит от чего либо (значение одного из буферов в конфиге)?
    Что будет, если количество строк превышено, значения передаваемых ключей не попадут в базу? Если нужное количество информации не поместилось в одну передачу, то сколько и с какой переодичностью можно посылать файлов?

    Кто нибудь знает ответы на эти вопросы? Или ткните где можно почитать?
    Спасибо.
  • Jimson
    Senior Member
    • Jan 2008
    • 1327

    #2
    На счет буфера искал когда то, но чем закончились поиски уже не помню, по умолчанию мой перловый сендер шлет 50 элементов в одном запросе, как поведет себя zabbix_sender если ему подсунуть файлик на пару гигабайт не знаю, загляни в исходники.
    Если превысишь размер буфера, то грохнется все целиком, это вроде как очевидно. Буфер вероятнее всего ограничен просто размером в байтах, а сколько элементов в эти байты влезет зависит от используемых названий хостов и ключей (см ниже, протокол текстовый). Слать можешь сколь угодно часто, запросы принимает серверный процесс trapper, соответственно под свою нагрузку надо рассчитать сколько трапперов запускать (zabbix_server.conf).
    Вопрос про частоту отсылки на самом деле не возник бы, если бы вы наткнулись на эту статью https://www.zabbix.org/wiki/Docs/pro...bix_sender/2.0
    Сендер формирует JSON, открывает TCP соединение на порт сервера и шлет свой JSON, затем сидит ждет ответ, который опять же будет в JSON. Траппер, после того как отдает ответ, закрывает TCP соединение, через одно соединение затолкнуть несколько JSON последовательно не получится. Сомневаюсь что zabbix_sender многопоточный, если он и умеет порционально отсылать данные из файла, то скорее всего делает это в один поток, нагружая всего лишь один траппер-процесс.

    P.S. механизм "сендера" так же используется для отправки данных активными агентами и проксями, считая нагрузку на траппер надо это учитывать.
    Last edited by Jimson; 05-11-2015, 14:48.

    Comment

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

      #3
      Мне кажется, что конкретных ограничений на размер входного файла нет.
      zabbix_sender обрабатывает входной файл и передаёт на сервер "пачками" по 250 значений на одно соединение. Это прописано в коде (src/zabbix_sender/zabbix_sender.c), поскольку большее количество значений может быть чревато проблемами с тайм-аутами:
      Code:
      /* sending a huge amount of values in a single connection is likely to */
      /* take long and hit timeout, so we limit values to 250 per connection */
      #define VALUES_MAX 250
      Однако, если запускать zabbix_sender с параметрами "-i -" (т.е. читать из stdin) и "-r", то значения будут пересылаться на сервер вообще по мере поступления (т.е. как только будет пауза 0,2 секунды, но не реже раза в секунду).

      Comment

      • swq
        Member
        • Sep 2009
        • 84

        #4
        Спасибо за ответы. Делаем теоретический эксперимент:
        - в конфиге указываем количество траппер процессов 1000
        - формируем 1000 файлов по 250 строк пар ключ-значение
        - в perl скрипте форком делаем 1000 процессов вызова zabbix_sender
        - делаем паузу в две секунды и повторяем

        Как думаете, сработает? Только вот сомневаюсь на счет форка на 1000 процессов. В реальности наверное много-много меньше.

        Если в теории все верно, то готов сделать практический эксперимент.

        Comment

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

          #5
          Для меня не очень ясен смысл предполагаемого эксперимента. Какие предположения Вы пытаетесь подтвердить или опровергнуть? По каким параметрам будете оценивать результат? Какие данные ожидаете получить?

          От меня ускользает практический смысл плодить тысячу трапперов.
          Такое может понадобиться разве что в очень масштабной конфигурации, но при этом нужно, чтобы и остальные настройки соответствовали (количество процессов на одну задачу, количество открытых файлов на пользователя и вообще в системе, параметры СУБД, используемой в качестве backend-а, пропускная способность сети и т.д.). Иначе это похоже на попытку "завалить" Zabbix-сервер из спортивного интереса, причём без анализа того, что же именно в таком эксперименте будет узким местом.

          Comment

          • swq
            Member
            • Sep 2009
            • 84

            #6
            Originally posted by Kos
            Для меня не очень ясен смысл предполагаемого эксперимента. Какие предположения Вы пытаетесь подтвердить или опровергнуть? По каким параметрам будете оценивать результат? Какие данные ожидаете получить?

            От меня ускользает практический смысл плодить тысячу трапперов.
            Такое может понадобиться разве что в очень масштабной конфигурации, но при этом нужно, чтобы и остальные настройки соответствовали (количество процессов на одну задачу, количество открытых файлов на пользователя и вообще в системе, параметры СУБД, используемой в качестве backend-а, пропускная способность сети и т.д.). Иначе это похоже на попытку "завалить" Zabbix-сервер из спортивного интереса, причём без анализа того, что же именно в таком эксперименте будет узким местом.
            Так и есть, это не спортивный интерес. Есть задача загнать в базу ~100k значений за время не более 3-x минут и я буду признательным всем кто поможет мне в этом вопросе, в том числе и с настройкой конфигурации.

            Comment

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

              #7
              (100 тыс. / 3 мин.) = около 556 VPS
              Это вполне нормальный показатель производительности, с которым сервер Zabbix справляется без особых извращений(зачёркнуто) супер-оптимизаций. Достаточно стандартных рекомендаций по настройке СУБД. У нас, например, используются скрипты, которые с интервалом в минуту отправляют именно zabbix_sender-ом по (несколько сотен - паре тысяч) значений (в зависимости от конкретной системы, которых около двух десятков). В статистике нагрузки на сервер эти всплески вообще практически не видны - всё "съедается" сервером без проблем. Трапперов при этом всего семь штук.

              Правда, реальная нагрузка, конечно, зависит от множества показателей. Например, на какое количество из этих элементов данных "навешены" триггеры (и насколько навороченные). В частности, у нас бОльшая часть упомянутых данных используется только для сбора статистики и отрисовки графиков, в вычислении триггеров принимает участие лишь малая часть.

              Comment

              • Alexei
                Founder, CEO
                Zabbix Certified Trainer
                Zabbix Certified SpecialistZabbix Certified Professional
                • Sep 2004
                • 5654

                #8
                Ограничений на размер входного файла нет. В противном случае это обязательно было бы отражено в документации.
                Alexei Vladishev
                Creator of Zabbix, Product manager
                New York | Tokyo | Riga
                My Twitter

                Comment

                • swq
                  Member
                  • Sep 2009
                  • 84

                  #9
                  Originally posted by alexei
                  Ограничений на размер входного файла нет. В противном случае это обязательно было бы отражено в документации.
                  Вот это поворот! Класс. Спасибо Алексей!
                  То есть я могу загнать 100к пар ключ-значение в файл и отправить одной командой?

                  Comment

                  • Alexei
                    Founder, CEO
                    Zabbix Certified Trainer
                    Zabbix Certified SpecialistZabbix Certified Professional
                    • Sep 2004
                    • 5654

                    #10
                    Originally posted by swq
                    То есть я могу загнать 100к пар ключ-значение в файл и отправить одной командой?
                    Да, именно так. Только надо учитывать, что zabbix_sender будет отправлять ваши данные кусками по 250 значений создавая и закрывая отдельное TCP соединение (100k -> 400 соединений) на каждый кусок. Это создаёт некоторую степень защиты сервера от перегрузки.
                    Alexei Vladishev
                    Creator of Zabbix, Product manager
                    New York | Tokyo | Riga
                    My Twitter

                    Comment

                    • swq
                      Member
                      • Sep 2009
                      • 84

                      #11
                      Originally posted by alexei
                      Да, именно так. Только надо учитывать, что zabbix_sender будет отправлять ваши данные кусками по 250 значений создавая и закрывая отдельное tcp соединение (100k -> 400 соединений) на каждый кусок. Это создаёт некоторую степень защиты сервера от перегрузки.
                      В конфиге это как то надо учитывать? И еще последний вопрос - какой интервал времени проходит между такими tcp соединениями?

                      Comment

                      • Alexei
                        Founder, CEO
                        Zabbix Certified Trainer
                        Zabbix Certified SpecialistZabbix Certified Professional
                        • Sep 2004
                        • 5654

                        #12
                        Originally posted by swq
                        В конфиге это как то надо учитывать? И еще последний вопрос - какой интервал времени проходит между такими tcp соединениями?
                        Ничего специально не нужно конфигурировать. Новое соединение открывается немедленно как только закрывается старое.
                        Alexei Vladishev
                        Creator of Zabbix, Product manager
                        New York | Tokyo | Riga
                        My Twitter

                        Comment

                        • swq
                          Member
                          • Sep 2009
                          • 84

                          #13
                          Спасибо за ответы.
                          Действительно, изощряться нет смысла. Я провел тесты, все работает так, как и было рассказано выше. ~90к значений в файле zabbix_sender-ом отправляются на сервер за считанные секунды. Запись в базу идет менее 3 минут.

                          Comment

                          Working...