Ad Widget

Collapse

Расширяем snmp lld скриптами

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Jimson
    Senior Member
    • Jan 2008
    • 1327

    #61
    Originally posted by Melanxolik
    Вместо того чтобы вернуть текущее значение загрузки порта.
    {item.value} это синоним {item.value1}
    Эти макросы не телепаты, они возвращают значение N-ого по счету элемента данных использующегося в выражении. Например, для выражения

    itemA.avg(60) > 50 & itemB.last(0) < 10

    макрос {item.value} вернет значение itemA.avg(60)
    а макрос {item.value2) вернет значение itemB.last(0)

    На сколько я понимаю можно максимум до 9 элементов таким образом "адресовать", хотя при желании получить больше можно и запатчить.

    Comment

    • logicall
      Junior Member
      • Mar 2009
      • 14

      #62
      Всем добрый день!
      Решил попробовать lld, предложенный Jimson, и столкнулся с проблемой
      В логе zabbix сыпятся ошибки
      Code:
      Can't call method "bulkwalk" on an undefined value at /usr/local/etc/externalscripts/cisco_ifmib.pl line 75
      Если выполнить этот скрипт из консоли, то отрабатывает всё успешно.
      Подскажите, из-за чего может появляться такая проблема?

      Вот вывод скрипта из консоли
      Code:
      ./cisco_ifmib.pl 192.168.17.251 161 xxxxxxxxxx
      .....
      {"{#IFINDEX}":"14","{#IFDESCR}":"Vlan1","{#IFTAGS}":",Vlan1,Type:53,AdminStatus:down,Physical,Counter64,FLAG,","{#IFALIAS}":""},
      {"{#IFINDEX}":"15","{#IFDESCR}":"Vlan3","{#IFTAGS}":",Vlan3,Type:53,AdminStatus:down,Physical,Counter64,FLAG,","{#IFALIAS}":""},
      {"{#IFINDEX}":"8","{#IFDESCR}":"FastEthernet0/8","{#IFTAGS}":",FastEthernet0/8,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":"Office"},
      {"{#IFINDEX}":"4","{#IFDESCR}":"FastEthernet0/4","{#IFTAGS}":",FastEthernet0/4,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":"Office"},
      {"{#IFINDEX}":"19","{#IFDESCR}":"Vlan967","{#IFTAGS}":",Vlan967,Type:53,AdminStatus:down,Physical,Counter64,FLAG,","{#IFALIAS}":""}
      ......
      Last edited by logicall; 14-11-2013, 14:21. Reason: добавил вывод из консоли

      Comment

      • Jimson
        Senior Member
        • Jan 2008
        • 1327

        #63
        Уже был выше несколько раз такой вопрос. Что то с перлом или перловой библиотекой NetSNMP. Почему у вас работает из командной строки и не работает из под zabbix не понятно.

        Comment

        • logicall
          Junior Member
          • Mar 2009
          • 14

          #64
          Originally posted by Jimson
          Уже был выше несколько раз такой вопрос. Что то с перлом или перловой библиотекой NetSNMP. Почему у вас работает из командной строки и не работает из под zabbix не понятно.
          Что-то так и не могу разобраться с перлом... Попробую на python сделать...

          Comment

          • ahmetov-ra
            Junior Member
            • Nov 2013
            • 4

            #65
            Здравствуйте!

            Возникла необходимость в Zabbix мониторить порты у cisco, причем нужно чтобы название итемов были из ifDescr и еще порты фильтровались по ifOperStatus. Долго искал решение, но вот наконец и нашел .
            Но счастье моё длилось не долго... Сделал вроде все как написано, на при активации правила обнаружения из шаблона zabbix дает ошибочку, мол типа: Value should be a JSON object.
            Уважаемый Jimson! Подскажите, может я что то не так делаю? При запуске через консоль ошибок нет...
            Code:
            [SIZE="3"]rus@proxy:~$ perl ./cisco_ifmib.pl 192.168.39.1 161 xxx 0 0 | grep ',Type:6,'
            {"{#IFINDEX}":"10602","{#IFDESCR}":"GigabitEthernet2/0/2","{#IFTAGS}":",GigabitEthernet2/0/2,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10107","{#IFDESCR}":"GigabitEthernet1/0/7","{#IFTAGS}":",GigabitEthernet1/0/7,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10120","{#IFDESCR}":"GigabitEthernet1/0/20","{#IFTAGS}":",GigabitEthernet1/0/20,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":"==Flor 5=="},
            {"{#IFINDEX}":"10626","{#IFDESCR}":"GigabitEthernet2/0/26","{#IFTAGS}":",GigabitEthernet2/0/26,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10625","{#IFDESCR}":"GigabitEthernet2/0/25","{#IFTAGS}":",GigabitEthernet2/0/25,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10604","{#IFDESCR}":"GigabitEthernet2/0/4","{#IFTAGS}":",GigabitEthernet2/0/4,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10115","{#IFDESCR}":"GigabitEthernet1/0/15","{#IFTAGS}":",GigabitEthernet1/0/15,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10108","{#IFDESCR}":"GigabitEthernet1/0/8","{#IFTAGS}":",GigabitEthernet1/0/8,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10102","{#IFDESCR}":"GigabitEthernet1/0/2","{#IFTAGS}":",GigabitEthernet1/0/2,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10123","{#IFDESCR}":"GigabitEthernet1/0/23","{#IFTAGS}":",GigabitEthernet1/0/23,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":"==Flor 4=="},
            {"{#IFINDEX}":"10624","{#IFDESCR}":"GigabitEthernet2/0/24","{#IFTAGS}":",GigabitEthernet2/0/24,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10122","{#IFDESCR}":"GigabitEthernet1/0/22","{#IFTAGS}":",GigabitEthernet1/0/22,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":"==Flor 2=="},
            {"{#IFINDEX}":"10618","{#IFDESCR}":"GigabitEthernet2/0/18","{#IFTAGS}":",GigabitEthernet2/0/18,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10608","{#IFDESCR}":"GigabitEthernet2/0/8","{#IFTAGS}":",GigabitEthernet2/0/8,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10121","{#IFDESCR}":"GigabitEthernet1/0/21","{#IFTAGS}":",GigabitEthernet1/0/21,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":"==Flor 1=="},
            {"{#IFINDEX}":"10615","{#IFDESCR}":"GigabitEthernet2/0/15","{#IFTAGS}":",GigabitEthernet2/0/15,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10605","{#IFDESCR}":"GigabitEthernet2/0/5","{#IFTAGS}":",GigabitEthernet2/0/5,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10601","{#IFDESCR}":"GigabitEthernet2/0/1","{#IFTAGS}":",GigabitEthernet2/0/1,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":"-=Intermir VLAN3=-"},
            {"{#IFINDEX}":"10614","{#IFDESCR}":"GigabitEthernet2/0/14","{#IFTAGS}":",GigabitEthernet2/0/14,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10606","{#IFDESCR}":"GigabitEthernet2/0/6","{#IFTAGS}":",GigabitEthernet2/0/6,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10628","{#IFDESCR}":"GigabitEthernet2/0/28","{#IFTAGS}":",GigabitEthernet2/0/28,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10612","{#IFDESCR}":"GigabitEthernet2/0/12","{#IFTAGS}":",GigabitEthernet2/0/12,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":"==APC UPS 8000=="},
            {"{#IFINDEX}":"10116","{#IFDESCR}":"GigabitEthernet1/0/16","{#IFTAGS}":",GigabitEthernet1/0/16,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10623","{#IFDESCR}":"GigabitEthernet2/0/23","{#IFTAGS}":",GigabitEthernet2/0/23,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10103","{#IFDESCR}":"GigabitEthernet1/0/3","{#IFTAGS}":",GigabitEthernet1/0/3,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10104","{#IFDESCR}":"GigabitEthernet1/0/4","{#IFTAGS}":",GigabitEthernet1/0/4,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10106","{#IFDESCR}":"GigabitEthernet1/0/6","{#IFTAGS}":",GigabitEthernet1/0/6,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10126","{#IFDESCR}":"GigabitEthernet1/0/26","{#IFTAGS}":",GigabitEthernet1/0/26,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10125","{#IFDESCR}":"GigabitEthernet1/0/25","{#IFTAGS}":",GigabitEthernet1/0/25,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10621","{#IFDESCR}":"GigabitEthernet2/0/21","{#IFTAGS}":",GigabitEthernet2/0/21,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10113","{#IFDESCR}":"GigabitEthernet1/0/13","{#IFTAGS}":",GigabitEthernet1/0/13,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10619","{#IFDESCR}":"GigabitEthernet2/0/19","{#IFTAGS}":",GigabitEthernet2/0/19,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10105","{#IFDESCR}":"GigabitEthernet1/0/5","{#IFTAGS}":",GigabitEthernet1/0/5,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10117","{#IFDESCR}":"GigabitEthernet1/0/17","{#IFTAGS}":",GigabitEthernet1/0/17,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10616","{#IFDESCR}":"GigabitEthernet2/0/16","{#IFTAGS}":",GigabitEthernet2/0/16,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10112","{#IFDESCR}":"GigabitEthernet1/0/12","{#IFTAGS}":",GigabitEthernet1/0/12,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10617","{#IFDESCR}":"GigabitEthernet2/0/17","{#IFTAGS}":",GigabitEthernet2/0/17,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10613","{#IFDESCR}":"GigabitEthernet2/0/13","{#IFTAGS}":",GigabitEthernet2/0/13,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10110","{#IFDESCR}":"GigabitEthernet1/0/10","{#IFTAGS}":",GigabitEthernet1/0/10,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10610","{#IFDESCR}":"GigabitEthernet2/0/10","{#IFTAGS}":",GigabitEthernet2/0/10,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10627","{#IFDESCR}":"GigabitEthernet2/0/27","{#IFTAGS}":",GigabitEthernet2/0/27,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10622","{#IFDESCR}":"GigabitEthernet2/0/22","{#IFTAGS}":",GigabitEthernet2/0/22,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10118","{#IFDESCR}":"GigabitEthernet1/0/18","{#IFTAGS}":",GigabitEthernet1/0/18,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10620","{#IFDESCR}":"GigabitEthernet2/0/20","{#IFTAGS}":",GigabitEthernet2/0/20,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10603","{#IFDESCR}":"GigabitEthernet2/0/3","{#IFTAGS}":",GigabitEthernet2/0/3,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":"-=Trunk ESX1=-"},
            {"{#IFINDEX}":"10127","{#IFDESCR}":"GigabitEthernet1/0/27","{#IFTAGS}":",GigabitEthernet1/0/27,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10607","{#IFDESCR}":"GigabitEthernet2/0/7","{#IFTAGS}":",GigabitEthernet2/0/7,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10124","{#IFDESCR}":"GigabitEthernet1/0/24","{#IFTAGS}":",GigabitEthernet1/0/24,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":"==FLOKS=="},
            {"{#IFINDEX}":"10111","{#IFDESCR}":"GigabitEthernet1/0/11","{#IFTAGS}":",GigabitEthernet1/0/11,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":"-=OIT-RUS=-"},
            {"{#IFINDEX}":"10128","{#IFDESCR}":"GigabitEthernet1/0/28","{#IFTAGS}":",GigabitEthernet1/0/28,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10109","{#IFDESCR}":"GigabitEthernet1/0/9","{#IFTAGS}":",GigabitEthernet1/0/9,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10119","{#IFDESCR}":"GigabitEthernet1/0/19","{#IFTAGS}":",GigabitEthernet1/0/19,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":"==Flor 3=="},
            {"{#IFINDEX}":"10611","{#IFDESCR}":"GigabitEthernet2/0/11","{#IFTAGS}":",GigabitEthernet2/0/11,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10609","{#IFDESCR}":"GigabitEthernet2/0/9","{#IFTAGS}":",GigabitEthernet2/0/9,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10114","{#IFDESCR}":"GigabitEthernet1/0/14","{#IFTAGS}":",GigabitEthernet1/0/14,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            {"{#IFINDEX}":"10101","{#IFDESCR}":"GigabitEthernet1/0/1","{#IFTAGS}":",GigabitEthernet1/0/1,Type:6,AdminStatus:up,Physical,Counter64,FLAG,","{#IFALIAS}":""},
            rus@proxy:~$[/SIZE]
            Версия zabbix 2.0.9

            Да и еще есть ли возможность через Ваш скрипт фильтровать порты по ifOperStatus? Заранее спасибо!

            Comment

            • Melanxolik
              Senior Member
              • Nov 2009
              • 174

              #66
              А кто вам мешает через глобальные регулярные выражения филтровать как угодно? зачем вы трогаете сам скрипт? его задача подать данные в формате json, все отсльное рулится глобальными регулярными выражениями, или локальными регулярными выражениями.

              Comment

              • Jimson
                Senior Member
                • Jan 2008
                • 1327

                #67
                Вместо grep можно так ./cisco_ifmib.pl 192.168.39.1 161 xxx 0 ',Type:6'
                тогда JSON бы показало нам целиком

                Фильтр по ifOperStatus это уже факультативное задание вам, допишите
                В принципе все по аналогии с ifAdminStatus, один в один, и сможете тогда фильтры по нему делать, хотя и странное это занятие, ведь если AdminStatus UP, но при этом OperStatus Down обычно означает что это авария, а не то что мониторить не нужно. Впрочем вам виднее.

                Что касается вашего "JSON не JSON", то скорее всего zabbix_server не может запустить этот скрипт, прав нет или какие-нибудь selinuxы там. Вообщем из консоли смените UID на пользователя из под которого работает zabbix_server, например, su - zabbix, а затем пробуйте запускать скрипт, посмотрим что он нам напишет.

                Comment

                • ahmetov-ra
                  Junior Member
                  • Nov 2013
                  • 4

                  #68
                  Спасибо что откликнулись! Вообщем проверил разрешения на файл скрипта (/usr/lib/zabbix/externalscripts/cisco_ifmib.pl), все ОК, владелец и группа zabbix (764), вообщем для юзера zabbix: RWX. Запустил от этого пользователя скрипт, он отработал:
                  Code:
                  rus@proxy:~$ sudo -u zabbix /usr/lib/zabbix/externalscripts/cisco_ifmib.pl 10.1.1.21 161 xxx 0 ',Type:6'
                  {"data":[
                  {"{#IFINDEX}":"10107","{#IFDESCR}":"GigabitEthernet0/7","{#IFTAGS}":",GigabitEthernet0/7,Type:6,AdminStatus:up,Physical,Counter64,","{#IFALIAS}":"-=OIT=-"},
                  {"{#IFINDEX}":"10105","{#IFDESCR}":"GigabitEthernet0/5","{#IFTAGS}":",GigabitEthernet0/5,Type:6,AdminStatus:up,Physical,Counter64,","{#IFALIAS}":"-=CISCO 2940 trunk 17 Mb/s=-"},
                  {"{#IFINDEX}":"10108","{#IFDESCR}":"GigabitEthernet0/8","{#IFTAGS}":",GigabitEthernet0/8,Type:6,AdminStatus:up,Physical,Counter64,","{#IFALIAS}":"-=OIT=-"},
                  {"{#IFINDEX}":"10102","{#IFDESCR}":"GigabitEthernet0/2","{#IFTAGS}":",GigabitEthernet0/2,Type:6,AdminStatus:up,Physical,Counter64,","{#IFALIAS}":"-=American 10Mb/s=-"},
                  {"{#IFINDEX}":"2","{#IFDESCR}":"Vlan2","{#IFTAGS}":",Vlan2,Type:53,AdminStatus:up,Physical,Counter64,","{#IFALIAS}":""},
                  {"{#IFINDEX}":"12001","{#IFDESCR}":"Null0","{#IFTAGS}":",Null0,Type:1,AdminStatus:up,Physical,","{#IFALIAS}":""},
                  {"{#IFINDEX}":"1","{#IFDESCR}":"Vlan1","{#IFTAGS}":",Vlan1,Type:53,AdminStatus:up,Physical,Counter64,","{#IFALIAS}":""},
                  {"{#IFINDEX}":"10110","{#IFDESCR}":"GigabitEthernet0/10","{#IFTAGS}":",GigabitEthernet0/10,Type:6,AdminStatus:up,Physical,Counter64,","{#IFALIAS}":"-=Trunk rezerved port 30 Mb/s=-"},
                  {"{#IFINDEX}":"10109","{#IFDESCR}":"GigabitEthernet0/9","{#IFTAGS}":",GigabitEthernet0/9,Type:6,AdminStatus:up,Physical,Counter64,","{#IFALIAS}":"-=Trunk to DNS-3 30 Mb/s=-"},
                  {"{#IFINDEX}":"10103","{#IFDESCR}":"GigabitEthernet0/3","{#IFTAGS}":",GigabitEthernet0/3,Type:6,AdminStatus:up,Physical,Counter64,","{#IFALIAS}":"-=DNS-2 Abonents 17 Mb/s=-"},
                  {"{#IFINDEX}":"10104","{#IFDESCR}":"GigabitEthernet0/4","{#IFTAGS}":",GigabitEthernet0/4,Type:6,AdminStatus:up,Physical,Counter64,","{#IFALIAS}":"-=MP-104 (Pat) 3 Mb/s=-"},
                  {"{#IFINDEX}":"10106","{#IFDESCR}":"GigabitEthernet0/6","{#IFTAGS}":",GigabitEthernet0/6,Type:6,AdminStatus:down,Physical,Counter64,","{#IFALIAS}":""},
                  {"{#IFINDEX}":"10101","{#IFDESCR}":"GigabitEthernet0/1","{#IFTAGS}":",GigabitEthernet0/1,Type:6,AdminStatus:up,Physical,Counter64,","{#IFALIAS}":"-=American 10 Mb/s=-"},
                  ]}
                  rus@proxy:~$
                  Но ничего не изменилось.... Zabbix все равно настойчиво говорит НЕ JSON и все тут.... Попробывал вывод скрипта проверить на jsonlint.com (не знаю, может это не совсем правильно), он показал ошибку:
                  Code:
                  Parse error on line 80:
                  ...    },            ]}
                  ---------------------^
                  Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '['
                  80 строка это последняя сточка вывода...
                  Может ли влиять то, что я создал в забиксе не все регулярные выражения? Хотя, как я понял они нужны для того чтобы фильтровать вывод... Но все же...

                  Comment

                  • logicall
                    Junior Member
                    • Mar 2009
                    • 14

                    #69
                    У меня возникала ошибка Value should be a JSON object из-за того, что в конце последнего списка {.....} стояла "," перед "]}"
                    Проверь свой вывод через http://jsonlint.com/

                    Comment

                    • ahmetov-ra
                      Junior Member
                      • Nov 2013
                      • 4

                      #70
                      Originally posted by logicall
                      У меня возникала ошибка Value should be a JSON object из-за того, что в конце последнего списка {.....} стояла "," перед "]}"
                      Проверь свой вывод через http://jsonlint.com/
                      Вы абсолютно правы! Убрал "," в конце последнего списка, проверил на jsonlint.com, ошибок нет! Вот как бы это исправить в самом скрипте? А то если я убираю запятую, то убираются запятые в конце всех списков!

                      Comment

                      • Jimson
                        Senior Member
                        • Jan 2008
                        • 1327

                        #71
                        Originally posted by logicall
                        У меня возникала ошибка Value should be a JSON object из-за того, что в конце последнего списка {.....} стояла "," перед "]}"
                        Проверь свой вывод через http://jsonlint.com/
                        Я в курсе на счет этой запятой, но zabbix 2.0 нормально обрабатывал его, а вот в 2.2 написали что будут использовать валидатор. Правильнее вообще убрать самопальную функцию и использовать модуль JSON, он не очень жирный и зависимости только от Core модулей.

                        Comment

                        • logicall
                          Junior Member
                          • Mar 2009
                          • 14

                          #72
                          Originally posted by Jimson
                          Я в курсе на счет этой запятой, но zabbix 2.0 нормально обрабатывал его, а вот в 2.2 написали что будут использовать валидатор. Правильнее вообще убрать самопальную функцию и использовать модуль JSON, он не очень жирный и зависимости только от Core модулей.
                          Я на python переписал ваш скрипт используя модуль pysnmp и json, но возникла проблема... Вы сделали в шаблоне несколько правил discovery в зависимости от разрядности счётчиков counter32 и counter64
                          У меня нет устройства без counter64 чтобы проверить как отрабатывает выбор по регулярным выражениям...

                          Comment

                          • Jimson
                            Senior Member
                            • Jan 2008
                            • 1327

                            #73
                            Если есть под рукой cisco роутер с E1 контроллером, то можно провериться на нем: создаете Serial интерфейс и так как он будет максимум 2х мегабитным, то 64 битных счетчиков у него не будет.
                            Опять же, главный посыл темы был о том как можно реализовать гибкий дискаверинг, ifTable/ifXTable это просто самый наглядный и нужный большинству пример, так что если вам не нужны 32х битные счетчики, то и забейте на них, проще скрипт и шаблон будет.
                            Last edited by Jimson; 20-11-2013, 09:04.

                            Comment

                            • ahmetov-ra
                              Junior Member
                              • Nov 2013
                              • 4

                              #74
                              Всем спасибо!

                              Все сделал, работает!!!
                              Было 2 косяка:
                              1. Это запятая в последней строке как подсказал logicall, спасибо ему за это!
                              Вот как решил проблему:
                              Code:
                              my ($index, $data, $macro, $value) = ();
                              my $first_data = 1;
                              print '{', "\n";
                              print "\t\"data\":[\n\n";
                                  while (($index, $data) = each %json) {
                                  $first_data ? $first_data = 0 : print ",\n";
                                  print "\t",'{"{#IFINDEX}":"', $index, '"';
                                  while (($macro, $value) = each %$data) {
                                      print ',"{#', $macro, '}":"', $value, '"';
                                  }
                                  print "}";
                              }
                              print "\n";
                              print "\n\t]\n";
                              print "}\n";
                              Может и не совсем изящно, но зато работает(добавил так же табуляцию, как вот здесь -> https://www.zabbix.com/documentation...em_json_format).

                              2. Это уже мой косяк по невнимательности, не были прописаны макросы {$SNMP_PORT},{$SNMP_COMMUNITY} , естественно он и ругался на JSON , потому что его, как такого и не было!

                              Всем спасибо!!!

                              P.S. Пошел пилить скрипт на фильтр ifOperStatus...

                              Comment

                              • logicall
                                Junior Member
                                • Mar 2009
                                • 14

                                #75
                                Всем привет!
                                Кто-нибудь сталкивался при использовании lld через внешние проверки с ошибкой "Cannot create item: item with the same key "InOctets.[{#IFDESCR}]" already exists."?
                                Я уже и хост удалял и шаблон... Переименовывал ключ у элемента данных... Ничего не помогает...
                                Может кто знает как победить?
                                PS
                                Я прямо в базе искал такой ключ - нету его в таблице item_discovery. Хотя сами итемы есть.. Но key в них пустой
                                Last edited by logicall; 21-11-2013, 14:15. Reason: update

                                Comment

                                Working...