Ad Widget

Collapse

Непонятки с внешней командой

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • ManJak
    Member
    • Nov 2009
    • 42

    #1

    Непонятки с внешней командой

    Получает от Агента такой кусок лога:

    31901:20100407:112849 JSON before sending [{
    "request":"agent data",
    "data":[
    {
    "host":"Zabbix server",
    "key":"log[\/var\/log\/rtr.log,\"DHCP_SNOOPING drop message on untrusted port\"]",
    "value":"Apr 6 18:21:12 stat Forwarded from 192.168.1.1: 47975: Apr 6 18:21:05: %DHCP_SNOOPING-5-DHCP_SNOOPING_UNTRUSTED_PORT: DHCP_SNOOPING drop message on untrusted port: GigabitEthernet1\/4, message type: DHCPACK, MAC sa: 0000.0000.0000, vlan: Х, server IP: 192.168.0.1",
    "lastlogsize":946755,
    "clock":1270625328}],
    "clock":1270625329}]
    31901:20100407:112849 JSON back [{
    "response":"success",
    "info":"Processed 1 Failed 0 Total 1 Seconds spent 0.051051"}]
    31901:20100407:112849 In check_response({
    "response":"success",
    "info":"Processed 1 Failed 0 Total 1 Seconds spent 0.051051"})


    После обработки его триггером, обратно он должен отправить его внешней команде:

    Zabbix server:/path/dhcp_snooping.sh {ITEM.LASTVALUE}

    В итоге имеем огрызок:
    31898:20100407:112850 Requested [system.run[/path/dhcp_snooping.sh Apr 6 18:21:12 stat Forwarded from 192.168.5.62: 47975: Apr 6 18:21:05: %DHCP_SNOOPING-5-DHCP_SNOOPING_UNTRUSTED_PORT: DHCP_SNOOPING drop message on untrusted port: GigabitEthernet1/4, message type: DHCPAC]
    31898:20100407:112850 Sending back [ZBX_NOTSUPPORTED]

    Если отправлять в качестве аргумента в коммандной строке что-то иное, то команда проходит на ура!
    31898:20100407:104325 Requested [system.run[/path/dhcp_snooping.sh TTT,nowait]]
    31898:20100407:104325 Run command '/path/dhcp_snooping.sh TTT'
    31898:20100407:104325 Sending back [1]


    Уже всю башку поломал.
    Пробовал: "{ITEM.LASTVALUE}", '{ITEM.LASTVALUE}', \"{ITEM.LASTVALUE}\", \'{ITEM.LASTVALUE}\'

    Есть ли возможность средствами Zabbixa - выковырять MAC из лога и только его передать?!
    Т.к. чуствую, что уперся в максимально возможную длину внешней команды
    Last edited by ManJak; 07-04-2010, 08:28. Reason: Дополнительная информация
  • dima_dm
    Senior Member
    • Dec 2009
    • 2697

    #2
    Originally posted by ManJak
    Есть ли возможность средствами Zabbixa - выковырять MAC из лога и только его передать?!
    (
    Через Zabbix agent и UserParameter
    Пример:
    /etc/zabbix/zabbix_agentd.conf
    UserParameter=MAC,prog

    Comment

    • ugh
      Senior Member
      • Jun 2009
      • 296

      #3
      а вырезать мак еще в строке заббикс-агента?

      Comment

      • ManJak
        Member
        • Nov 2009
        • 42

        #4
        А он - умеет?!

        Он-же просто висит и логи переваривает, отправляя их серверу.
        Что он может сделать?! о_О

        Хоть-бы намек какой , яб доковырял.

        Comment

        • ManJak
          Member
          • Nov 2009
          • 42

          #5
          Originally posted by dima_dm
          Через Zabbix agent и UserParameter
          Пример:
          /etc/zabbix/zabbix_agentd.conf
          UserParameter=MAC,prog
          Походу, не получится

          Вот элемент данных:

          Описание: DHCP SNOOPING Check
          Тип: Zabbix agent (Активный)
          Ключ: log[/path/rtr.log,"DHCP_SNOOPING drop message on untrusted port"]
          Тип информации: Журнал (лог)

          Здесь некуда впихнуть этот параметр

          Comment

          • ManJak
            Member
            • Nov 2009
            • 42

            #6
            Я правильно понял, что надо сделать что-то типа вложенного ключа?

            parse_dhcp_snooping[log[/var/log/studlo-rtr.log,"DHCP_SNOOPING drop message on untrusted port"]]

            А параметр задать так:

            UserParameter=parse_dhcp_snooping[*],echo $1|awk /.*/'{ print $25 }'|sed s/,//

            Но, так у меня - воще все поломалось
            Не работает совсем

            Comment

            • dima_dm
              Senior Member
              • Dec 2009
              • 2697

              #7
              Originally posted by ManJak
              Походу, не получится

              Вот элемент данных:

              Описание: DHCP SNOOPING Check
              Тип: Zabbix agent (Активный)
              Ключ: log[/path/rtr.log,"DHCP_SNOOPING drop message on untrusted port"]
              Тип информации: Журнал (лог)

              Здесь некуда впихнуть этот параметр
              Сюда ничего впихивать не нужно.
              Нужно использовать Тип: Zabbix agent.
              Ключ: MAC
              А всю логику, которая вам нужна, внесите в программу prog
              /etc/zabbix/zabbix_agentd.conf
              UserParameter=MAC,prog

              Comment

              • dima_dm
                Senior Member
                • Dec 2009
                • 2697

                #8
                Originally posted by manjak
                А параметр задать так:

                Userparameter=parse_dhcp_snooping[*],echo $1|awk /.*/'{ print $25 }'|sed s/,//
                (
                Если вы используете[*], то спецсимволы нельзя использовать в командной строке. Хотите использовать специальные символы, не используйте параметров в ключе.

                Comment

                • ugh
                  Senior Member
                  • Jun 2009
                  • 296

                  #9
                  Originally posted by ManJak
                  Я правильно понял, что надо сделать что-то типа вложенного ключа?

                  parse_dhcp_snooping[log[/var/log/studlo-rtr.log,"DHCP_SNOOPING drop message on untrusted port"]]

                  А параметр задать так:

                  UserParameter=parse_dhcp_snooping[*],echo $1|awk /.*/'{ print $25 }'|sed s/,//

                  Но, так у меня - воще все поломалось
                  Не работает совсем
                  ключ parse_dhcp_snooping

                  UserParameter=parse_dhcp_snooping,cat /var/log/studlo-rtr.log | grep "DHCP_SNOOPING drop message on untrusted port" | сид и авк по вкусу

                  Comment

                  • ManJak
                    Member
                    • Nov 2009
                    • 42

                    #10
                    Originally posted by ugh
                    ключ parse_dhcp_snooping

                    UserParameter=parse_dhcp_snooping,cat /var/log/studlo-rtr.log | grep "DHCP_SNOOPING drop message on untrusted port" | сид и авк по вкусу
                    Но, тогда он будет каждый раз парсить весь лог, а не только последние записи, как с ключом log[]

                    Вот-ведь.

                    Я, хоть правильно понял, что низя так много параметров скрипту подсунуть?!

                    А, tail -f прокатит?
                    Чтоб, только последние строчки видеть.
                    Спрашиваю, т.к. дергать агента тоже плохо, т.к. машинка боевая и занята делом

                    Comment

                    • dima_dm
                      Senior Member
                      • Dec 2009
                      • 2697

                      #11
                      Originally posted by ManJak
                      Но, тогда он будет каждый раз парсить весь лог, а не только последние записи, как с ключом log[]
                      А кто вам мешает запомнить позицию, где закончилась обработка в прошлый раз и начинать обработку с этого места? Есть ещё момент, нужно всегда выдавать данные при запуске prog (например NO DATA), иначе Item перейдёт в состояние Unsupported.

                      Comment

                      • IDDQD
                        Junior Member
                        • Jun 2009
                        • 13

                        #12
                        может попробовать решить задачу с другой стороны?

                        запуская скрипт по крону, который парсит лог и передает параметры в заббикс с помощью zabbix_send

                        Но еще красивее вместо крона ловить SNMP трапы демоном snmptrapd и передавать трап в скрипт, который разбирает трап на нужные параметры и опять же zabbix_send по примеру в
                        $ZABBIXSOURCE/misc/snmptrap/snmptrap.sh

                        Comment

                        • ManJak
                          Member
                          • Nov 2009
                          • 42

                          #13
                          Спасибо, так и пошел, только немного иначе, т.к. cisco не умеет трапы о DHCP-снупинге слать

                          Ща делаю так:

                          1. скрипт, который висит в памяти и парсит логи онлайн (пока не готов ))))
                          Если натыкается, то отдает всю строку в п.2, вызвав следующий скрипт.

                          2. скрипт, который выковыривает строку с МАКом и отдает заббиксу (готов. Активный агент и заббикс_сендер)

                          3. скрипт, которым заббикс делает что-нить

                          Comment

                          • dima_dm
                            Senior Member
                            • Dec 2009
                            • 2697

                            #14
                            Если время парсинга лог файла меньше 30 секунд, то лучше использовать Userparameter=, т.к. можно контролировать коды возврата скрипта, и триггером с функцией Item.nodata(3600) оповещать администратора, если скрипт не выдал никакие данные за некоторое время ( в примере больше 1-го часа).
                            А с cron скриптом всегда непонятки, или скрипт не работает, или никаких данных просто нет. Нужно приделывать дополнительные механизмы контроля работы этого скрипта.
                            С Userparameter включил Item, данные собираются, выключил - скрипт на сервере не работает, ресурсы сервера не тратит. Красота!!!
                            А с cron скриптом, нужно на сервер лезть и скрипт из сron убирать.
                            Поэтому я всегда делаю, если время выполнения меньше 30 секунд, через Userparameter, больше, через cron.
                            Но конечно, это дело вкуса.

                            Comment

                            Working...