Ad Widget

Collapse

Zabbix_sender Failed , не могу отправить значение элементу данных.

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • atraides
    Member
    • Nov 2017
    • 61

    #1

    Zabbix_sender Failed , не могу отправить значение элементу данных.

    Приветствую всех, столкнулся с такой проблемой : есть элемент данных Траппер в ключе которого есть квадратные скобки и вставлено значение из пользовательского макроса



    Click image for larger version  Name:	1.png Views:	4 Size:	35.9 KB ID:	373527

    Click image for larger version  Name:	2.png Views:	2 Size:	43.6 KB ID:	373528
    Пытаюсь отправить заббикс_сендером значением этому элементу и ничего не получается :

    Click image for larger version

Name:	4.png
Views:	255
Size:	44.2 KB
ID:	373530

    В логах сервера пишит что получен трап
    32695:20190208:093533.798 trapper got '{"request":"sender data","data":[{"host":"pc1-1708009.kya","key":"Ptolemey.camera_temperature_[22195269]","value":"30.000000"}]}'

    Но в истории значений пусто.

    Подскажите в чем проблема ?
    Attached Files
    Last edited by atraides; 08-02-2019, 09:07.
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Утилита zabbix_sender на приведённом скриншоте четыре раза ответила, что "processed: 0; failed: 1; total: 1;". Т.е. каждое из значений она отправила на сервер, где они были успешно приняты и выкинуты нафиг. Выкинуты они могут быть по причине того, что элемента данных с таким ключом на указанном хосте не существует, либо он имеет не тот тип данных (скажем, передаётся текст вместо числа) или тип айтема (определён не как "траппер").

    В данном случае я вижу, что ключ данных на хосте определён (после подставновки макроса) как "Ptolemey.camera_temperature_[22195269]", а в утилиту zabbix_sender передаётся лишь "camera_temperature_[22195269]" (без префикса "Ptolemey."). Это, правда, не совсем совпадает с логом сервера (там точно показан момент приёма данных из сендера?). К тому же, ключ, содержащий квадратные скобки, я бы при вызове из командной строки обрамил бы апострофами во избежание неверной интерпретации шеллом.

    Кроме того, при вызове zabbix_sender-а указывается имя хоста "pc1-1708009.kya", в то время как на скриншотах видно, что хост называется "П1708009-pc1.kya". Хотя это может объясняться наличием заполненного поля "Visible name" в свойствах хоста, если они отличаются.

    Comment

    • Semiadmin
      Senior Member
      • Oct 2014
      • 1625

      #3
      Есть такая беда с трапперами, пользовательские и стандартные макросы в них раскрываются, но трапы сервер не принимает. С макросами LLD все ок.
      Что делать? Если такой макрос на хосте один, вообще от него отказаться. Если много - сделать LLD.

      Comment

      • atraides
        Member
        • Nov 2017
        • 61

        #4
        Извиняюсь не тот скрин прислал , вот с правильным ключем "Ptolemey.camera_temperature_[22195269]" , пробовал разные варианты , и всегда сендер пишит Failed 1.
        LLD мне наверное не подходит, у меня на хостах скрипт сам вызывает заббикс сендер и передает значения, вариант с агентом не подходит, только Траппер нужен. Ну или может подскажите как мне аналогичный элемент данных как создан выше, переделать на LLD правило ?
        Click image for larger version

Name:	6.png
Views:	251
Size:	17.1 KB
ID:	373538

        Comment

        • Semiadmin
          Senior Member
          • Oct 2014
          • 1625

          #5
          А этот скрипт на хосте передает 1 значение или много? Точнее, для 1 айтема или для нескольких?

          Comment

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

            #6
            Originally posted by Semiadmin
            Есть такая беда с трапперами, пользовательские и стандартные макросы в них раскрываются, но трапы сервер не принимает. С макросами LLD все ок.
            Ой. И в самом деле.
            Сделал тестовый айтем с типом "Zabbix trapper": test[{$TEST}]. Добавил на уровне хоста макрос, что {$TEST} = "aaa".
            Проверяем:
            Code:
            zabbix1:~ # zabbix_sender -z localhost -s it00 -k 'test[aaa]' -o 'Test 1'
            info from server: "processed: 0; failed: 1; total: 1; seconds spent: 0.000026"
            sent: 1; skipped: 0; total: 1
            zabbix1:/tmp # zabbix_sender -z localhost -s it00 -k 'test[{$TEST}]' -o 'Test 2'                 
            info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000043"
            sent: 1; skipped: 0; total: 1
            zabbix1:/tmp #
            Соответственно, в истории айтема видно только одно значение: "Test 2".
            В самом деле, неожиданность. Поскольку с использованием LLD-макросов я значения в траппер засылал неоднократно, у нас это интенсивно используется.

            Comment

            • Semiadmin
              Senior Member
              • Oct 2014
              • 1625

              #7
              Originally posted by Kos
              В самом деле, неожиданность.
              По мне, так баг. Если макрос в ключе раскрывается, обязано работать.

              Comment

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

                #8
                Originally posted by Semiadmin
                А этот скрипт на хосте передает 1 значение или много? Точнее, для 1 айтема или для нескольких?
                Да, проверил через скармливание значений zabbix_sender-у в его stdin (с ключами "-i -") - результат аналогичный. Действительно, похоже на баг.

                Comment

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

                  #9
                  Originally posted by Semiadmin
                  По мне, так баг. Если макрос в ключе раскрывается, обязано работать.
                  Оказывается, это не баг, а фича. Уже есть куча баг-репортов на эту тему (навскидку: раз, два, три), закрытых как дубликаты вот этого баг-репорта.
                  Последний, в свою очередь, закрыт как "Won't fix", т.к. в документации явно оговорено:
                  Zabbix trapper process does not expand macros used in the item key in attempt to check corresponding item key existence for targeted host.
                  Это, правда, не очень помогает. По мне, так более понятны комментарии из второго и последнего баг-репортов:
                  Works as designed: item is identified by its key. The key is "trapperdata[{HOST.NAME}]", therefore, in zabbix_sender it should also be "trapperdata[{HOST.NAME}]".
                  you can not create one item using a macro and then send data in with sender, passing random strings instead of the macro. that is still a single item only, which must be identified uniquely by the key.

                  Comment

                  • atraides
                    Member
                    • Nov 2017
                    • 61

                    #10
                    Правильно ли я понял, что в моем случае работать не будет не в каком варианте , не через элемент данных траппер , не через LLD ?(

                    Comment

                    • Semiadmin
                      Senior Member
                      • Oct 2014
                      • 1625

                      #11
                      Будет, через trapper + LLD. Это если на хосте таких айтемов много, если 1 - просто избавиться от макроса в ключе.

                      Comment

                      • atraides
                        Member
                        • Nov 2017
                        • 61

                        #12
                        На хосте может быть по 1 или 2 айтемов каждый имеет свое уникальное значение которое и передаю в скобках Ptolemey.camera_temperature_[22195269] , в заббиксе соответственно добавлено множество хостов, и в каждом из них вот этот серийный номер прописан как макрос {$SERIAL1} . Поэтому через шаблонный элемент данных пытаюсь это сделать. Совсем не вариант на каждом хосте создавать Ptolemey.camera_temperature_[22195269] вот такой элемент данных в ручную...

                        Comment

                        • Semiadmin
                          Senior Member
                          • Oct 2014
                          • 1625

                          #13
                          Как раз сейчас вы вручную прописываете значения макросов для каждого хоста. Сделайте LLD типа zabbix trapper, напишите еще один скрипт, который будет время от времени на каждом хосте формировать json и кидать его сендером на сервер.

                          Comment

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

                            #14
                            Originally posted by atraides
                            Правильно ли я понял, что в моем случае работать не будет не в каком варианте , не через элемент данных траппер , не через LLD ?(
                            Нет, неправильно.

                            В вашем случае такой вот вызов:
                            Code:
                            /usr/bin/zabbix_sender -z 127.0.0.1 -s pc1-1708009.kya -k 'Ptolemey.camera_temperature_[{$SERIAL1}]' -o 100
                            должен отрабатывать корректно.

                            Comment

                            • atraides
                              Member
                              • Nov 2017
                              • 61

                              #15
                              Благодарю за помощь. Пойду с LLD разбираться)

                              Comment

                              Working...