Ad Widget

Collapse

Snmp трапы. Как построить графики?

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • ju-ju
    Junior Member
    • Nov 2015
    • 9

    #1

    Snmp трапы. Как построить графики?

    Как построить графики для SNMP трапов?

    Каждый трап представляет из себя список переменных.

    Одна из переменных имеет тип INTEGER. Как можно построить график по этой переменной?

    Или переменная имеет тип STRING, формат известен. Требуется распарсить строку, достать из неё число и по нему так же построить график.

    Для работы у меня настроена связка: snmptrapd -> скрипт Perl -> Zabbix SNMP траппер
  • Jimson
    Senior Member
    • Jan 2008
    • 1327

    #2
    Originally posted by ju-ju
    Для работы у меня настроена связка: snmptrapd -> скрипт Perl -> Zabbix SNMP траппер
    Не использовать "SNMP траппер", научить скрипт работать с "просто траппер", протокол тут:
    Join the friendly and open Zabbix community on our forums and social media platforms.

    Comment

    • ju-ju
      Junior Member
      • Nov 2015
      • 9

      #3
      Snmp трапы. Как построить графики?

      Попробовала, спасибо. Но возникли вопросы

      Т.е. мне на каждый пришедший трап из скрипта запускать экзмепляр zabbix_sender? Получается что минимум два раза на каждый трап, т.к. мне ещё из заголовка трапа надо SpecificTrap получать.
      Я правильно поняла? Или можно как-то меннее громоздко?

      И при этом скрип должен узнавать все трапы, ладно int, я сразу могу пробросить, но если строку разбирать, то надо узнавать.

      Получается, что просто экпортом шаблонов в Zabbix не обойтись, надо ещё скрипт править при появлении новых трапов.

      Comment

      • ju-ju
        Junior Member
        • Nov 2015
        • 9

        #4
        Snmp трапы. Как построить графики?

        Я к сожалению в Perl не сильна. Может есть какой-то пример на Perl который выполняет то же, что выполняет zabbix_sender? Надо то на заданный порт скинуть блок данных известного формата.

        Comment

        • ju-ju
          Junior Member
          • Nov 2015
          • 9

          #5
          Snmp трапы. Как построить графики?

          Есть пример. Попробую:
          Join the friendly and open Zabbix community on our forums and social media platforms.

          Comment

          • sadman
            Senior Member
            • Dec 2010
            • 1611

            #6
            Думаю, что можно немного проще:

            Comment

            • ju-ju
              Junior Member
              • Nov 2015
              • 9

              #7
              А что надо сделать, чтобы это заработало:

              use Zabbix::Sender;

              ?

              Comment

              • sadman
                Senior Member
                • Dec 2010
                • 1611

                #8
                Установить его, полагаю: http://perlmaven.com/how-to-install-...dule-from-cpan

                ...Хотя, судя по коду, накладных расходов в случае с Zabbix::Sender будет больше, чем в примере с zabbix.org. Впрочем, пусть будет, как вариант.
                Last edited by sadman; 13-11-2015, 08:11.

                Comment

                • ju-ju
                  Junior Member
                  • Nov 2015
                  • 9

                  #9
                  ))) Да, вижу. Извините. Я и в юниксе не мастак

                  Comment

                  • Jimson
                    Senior Member
                    • Jan 2008
                    • 1327

                    #10
                    Все что нужно для работы с zabbix trapper из перла это модуль JSON, ну и IO:Socket:INET, который CORE.

                    создаем хэш для наших данных:
                    Code:
                    my $data = { request => "sender data", data => [] };
                    набиваем в него его данныe, столько сколько нужно
                    Code:
                    push @{$data->{data}}, {
                            host => $host,
                            key => $key,
                            clock => $unixtime,
                            value => $value
                    };
                    открываем TCP сокет
                    Code:
                    my $socket = IO::Socket::INET->new( PeerAddr => "127.0.0.1:10051", Proto => "tcp" );
                    отправляем наши данные
                    Code:
                    my $json = encode_json $data;
                    $socket->send( pack('a4 C L L a*', "ZBXD", 1, length($json), 0, $json) );
                    осталось только дождаться пока сокет закроется, при желании можно получить ответ сервера и его распарсить, но это уже оставлю для самостоятельного изучения

                    P.S. ссылка на "perl_example" не корректна, точнее там sender 1.1, протухло уже
                    Last edited by Jimson; 13-11-2015, 10:25.

                    Comment

                    • ju-ju
                      Junior Member
                      • Nov 2015
                      • 9

                      #11
                      Взлетело )
                      Спасибо!

                      Comment

                      Working...