Ad Widget

Collapse

Помогите настроить автоматическое создание элементов данных.

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • IlyamI
    Junior Member
    • Sep 2013
    • 12

    #1

    Помогите настроить автоматическое создание элементов данных.

    Всех искренне приветствую и прошу помощи.

    Не получается настроить автоматическое создание элементов данных.

    Имеется:
    компьютер, с которого будут отсылаться данные на сервера Zabbix.
    Данные с этого компьютера будут отправляться утилитой zabbix_sender ( агент установить нельзя)
    На Z-сервере создал "узел сети". Создал простой "элемент данных" (наименование: test_name, тип: Zabbix траппер, ключ: test_key.
    Сендером отправляю данные, сохраняемые в файле: "host_name test_key current_value". Данные принимаются без проблем.
    Для этого компьютера создал "правило обнаружения" и в нем "Прототип элементов данных": "наименование: test_key_name {#keyname}, тип: Zabbix траппер, ключ: test.key.[{#keyname}]".

    Никак не получается сформировать текстовый файл для отправки на сервер с целью динамического создания элемента данных.
    Как бы не пробовал, возвращается ответ "[{"response":"success","info":"processed: 0; failed: 1; total: 1; seco..."

    Помогите, пожалуйста
  • Hamardaban
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • May 2019
    • 2713

    #2
    Как настроено само правило обнаружения? какой тип данных и ключ (скрины)? Покажи какой json отправляешь для срабатывания обнаружения.

    Comment

    • IlyamI
      Junior Member
      • Sep 2013
      • 12

      #3
      Прошу прощения, в выходные не было доступа к компу.
      Attached Files

      Comment

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

        #4
        Если json содержит поля как макросы {#блабла} - то всё автоматом разбирается. В твоем случае используются просто dat, key и значит нужно мэпить эти значения из json в макросы.

        Using a custom path to extract macro values is optional. Zabbix will automatically extract a macro and value if an array field in the JSON uses the {#MACRO} syntax as a key, such as when using native discovery items like vfs.fs.discovery.

        The LLD macros tab allows to specify custom low-level discovery macros and map them to values extracted from the discovery result using JSONPath. The extracted values can be used in discovered items, triggers, etc. Note that this action will be applied to the result of discovery and the preprocessing applied so far (see above).


        и всёже покажи содержимое data.txt... может банально не хватает скобок.

        и вот еще полезняшка https://www.zabbix.com/forum/in-russ...�о-файла
        Last edited by Hamardaban; 20-01-2020, 10:28.

        Comment

        • IlyamI
          Junior Member
          • Sep 2013
          • 12

          #5
          Вот примеры отправки данных на сервер Zabbix. Обращаю внимание, что отправка возможна только при помощи утилиты zabbix_sender.
          первый вариант - это данные построчно с разделителем-табулция.
          второй вариант- json. Но здесь ошибка еще на стадии отправки данных.
          Attached Files

          Comment

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

            #6
            чтот не понимаете в концепции или я не догоняю ваши желания...
            1) задача создать элементы данных - для этого используется lld правило( в вашем желании типа trapper) которое принимает на вход json с парами {имя/#макрос,значение} [см документацию ], разбирает его и создает ЭД с уникальными именами и key используя полученные данные
            2) задача получить в созданные ЭД непосредственно данные (тоже с помошью трапера?) - это просто отправка сендером корректных значений -k -o или по одному или через файл -i

            Для решения первой задачи сгенерите корректный json с макросами # написанными заглавными буквами и отправить его трапером как значение (параметр -o) для -к test.rule. тут будут засады с кавычками и длинной строки.

            Comment

            • Alex_UUU
              Senior Member
              • Dec 2018
              • 541

              #7
              Originally posted by Hamardaban
              Для решения первой задачи сгенерите корректный json с макросами # написанными заглавными буквами и отправить его трапером как значение (параметр -o) для -к test.rule. тут будут засады с кавычками и длинной строки.
              Ну и данные отправлять с теми же ключами, которые созданы прототипами. Т.е. по сути на сервере должно быть 2 скрипта (или 1 с ветками) Первый формирует json для дискавери, второй обращается к первому для получения пар, формирует ключи иуже отправляет данные.

              Comment

              • IlyamI
                Junior Member
                • Sep 2013
                • 12

                #8
                Всем спасибо. Разобрался: нигде не указано, что сам JSON должен быть в виде одной строки.
                Вопрос закрыт

                Comment

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

                  #9
                  Справедливости ради: сам JSON вовсе не обязан быть в виде одной строки.
                  У нас уже годами успешно работают многострочные "самодельные" JSON-ы для различных правил обнаружения.
                  Единственное "но" - их чуть труднее отослать тем же zabbix_sender-ом: нужно внимательно следить за всеми кавычками и экранированием для шелла.
                  При использовании шелловских скриптов (или bash) проще всего набирать этот JSON в переменную, на которую потом ссылаться в команде пересылки:
                  Code:
                  LF=$'\n'
                  RESULT="{\"data\":[${LF}"
                  [I]... (тут идёт обработка, чтобы собрать нужное значение, как правило - циклом "for") ...[/I]
                  RESULT="${RESULT}${LF}]}${LF}"
                  zabbix_sender -z zabbix.mycompany.com -s `hostname -s` -k my.item.discovery -o "${RESULT}"

                  Comment

                  Working...