Ad Widget

Collapse

Auto map мечты, мечты ...

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • 701054
    Member
    • Mar 2015
    • 37

    #1

    Auto map мечты, мечты ...

    Добрый день !
    Начитавшись на досуге этого http://blog.zabbix.com/maps-for-the-lazy/2898/ ( https://github.com/jasonmcintosh/zabbix-map-creation/ ) и этого http://habrahabr.ru/post/213247/ родилась мысль, а что если выбирать по api устройства с snmp -> обходить их , собирать fdb таблицы , флаг forwarding , на основании этого определять тип устройства, собирать собственные маки устройства -> во первых есть таблица маков, что само по себе полезно, если надо найти на ком мак, во вторых по принципу если "свой" мак есть на другом утройстве , собирать общее количество маков в связке порт-vlan в которых присутствует свой, на каком узле их меньше - тот сосед, затем это все отрисовать. Т.к. я не кодер ни разу, то прошу не ругать за авно код Это делалось как PoC , возможно кто-то разовьет эту идею. В идеале с базой маков и выбором групп устройств...для отрисовки ну и т.д. т.е. мысль такова что обнаружением занимается zabbix а эта штука обходит например раз в сутки (по snmp т.к. больше всего интересуют fdb таблицы свитчей) и отрисовывает карту.


    З.Ы. изменить settings.php и запустить start.php на каждом этапе будет создавать json, в конце сделает auto.dot, на заббиксе ничего не изменяет(если не запускать специально map.php он добавляет карту) результатом является dot файл который можно посмотреть например zgrviewer-м, добавление в заббиикс отдельным скриптом, по устройствам ходит walk-м.
    В архиве есть сразу php zabbixapi http://zabbixapi.confirm.ch/ .
    Скрипты сыпят кучу предупреждений, т.к. нет проверок, но работают..., также нужен php-snmp для работы скриптов
    Attached Files
    Last edited by 701054; 20-04-2015, 23:05. Reason: обновление
  • 701054
    Member
    • Mar 2015
    • 37

    #2
    добавил рисовалку в zabbix

    Добавил рисовалку карты в zabbix-е
    правим settings.php
    php start.php
    смотрим auto.dot с помощью xdot
    если норм, то
    php map.php
    настройки в нем же

    появится карта auto701054
    дальше расставить руками иконки как нравится, написано также на коленке.


    P.S. ещё нужен fping и похоже есть проблема с php-snmp на php ниже 5.4
    Last edited by 701054; 15-04-2015, 08:19. Reason: уточнение

    Comment

    • sergadm
      Junior Member
      • Sep 2013
      • 29

      #3
      есть намерение сделать нечто подобное. Что получится пока не знаю, не хватает времени заниматься этим.
      для сбора информации о линках коммутаторов использую данные которые свич собирает по LLDP и CDP протоколам. С портов где на найдены коммутаторы собираются маки из мак таблицы свича. Для сбора инфы из мак таблиц использую внешний snmpwalk, так как во внешней проге можно снимать данные без преобразования. В php не нашел где это отключить. В итоге часть маков преобразовывалась в текст на основании совпадения начала маков с какими то указателями типов .

      Comment

      • zmdpc
        Senior Member
        • Oct 2014
        • 484

        #4
        Originally posted by 701054
        Добавил рисовалку карты в zabbix-е
        правим settings.php
        php start.php
        смотрим auto.dot с помощью xdot
        если норм, то
        php map.php
        настройки в нем же

        появится карта auto701054
        дальше расставить руками иконки как нравится, написано также на коленке.
        Можете привести скрин того что получается ? Каким образом карту можно поместить в заббикс?

        Comment

        • 701054
          Member
          • Mar 2015
          • 37

          #5
          Originally posted by zmdpc
          Можете привести скрин того что получается ? Каким образом карту можно поместить в заббикс?
          xdot


          zabbix не расставлено именно как добавил скрипт, дальше можно двигать, связи привязаны..


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

          А это когда руками подвигал ничего не дорисовывал, не менял свойства просто подвигал по карте чтоб расставить.




          Ну и в просмотре карты , а не редакторе, чтоб было видно что добавлены как хосты, а не иконки...



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

          ну и ссылка на все картинки https://imgur.com/29Vh6zd,KGFUvtV,hP...1ARF,NaLa9ZE#2

          З.Ы. устройства были найдены автообнаружением\действием шаблоны, на тех что менял описание есть имя, на остальных ip

          Из-за того что тики не дают таблицы, показывает 10.10.100.133 справа внизу на том же порту что и тик, на самом деле оно в тик воткнуто, ну и есть ещё нюансы, но довольно близко к правде получилось
          Last edited by 701054; 15-04-2015, 09:55.

          Comment

          • zmdpc
            Senior Member
            • Oct 2014
            • 484

            #6
            Все таки не совсем понял, как карта попадает в заббикс?
            Располагаться на диске дополнение может в любом месте?

            Comment

            • 701054
              Member
              • Mar 2015
              • 37

              #7
              как ставил точно не помню, но из того что видно

              centos linux 3.10.0-123.20.1.el7.x86_64

              Zabbix server v2.4.4 (revision 52341) (23 February 2015)
              Compilation time: Feb 25 2015 01:58:11

              PHP 5.4.16 (cli) (built: Oct 31 2014 12:59:36)
              Copyright (c) 1997-2013 The PHP Group
              Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies

              Comment

              • 701054
                Member
                • Mar 2015
                • 37

                #8
                Originally posted by zmdpc
                Все таки не совсем понял, как карта попадает в заббикс?
                Располагаться на диске дополнение может в любом месте?
                да в любом месте, попадает через zabbix API создает\обновляет карту с элементами и связями (map.php) при этом auto.dot не используется,
                используются json-ы сохраненые на предыдущих шагах, auto.dot это чтоб посмотреть перед добавлением
                Last edited by 701054; 15-04-2015, 10:10.

                Comment

                • zmdpc
                  Senior Member
                  • Oct 2014
                  • 484

                  #9
                  Как происходит преобразование мак-ту-айпи ?

                  Comment

                  • 701054
                    Member
                    • Mar 2015
                    • 37

                    #10
                    А его нету преобразования, оно не нужно, те ip что видно на карте это просто имя хоста, скрипты только mac адресами орудуют, а при добавлении hostid zabbix-а.
                    Ip выбираются с zabbix-а по которым заббикс опрашивает устройства и пингует перед сбором маков, чтоб "подогреть" кэш таблиц коммутации на свитчах, ну и по ним snmpwalk делается, больше нигде не используются.
                    Last edited by 701054; 15-04-2015, 10:31.

                    Comment

                    • 701054
                      Member
                      • Mar 2015
                      • 37

                      #11
                      Originally posted by sergadm
                      снимать данные без преобразования
                      может мы про разное, но в php-snmp есть "SNMP_VALUE_PLAIN" , единственое, я не понял как готовым walk-м там делать аналог -Cc ну чтоб продолжал идти если "oid not increasing" поэтому пришлось функцию прикостылить customwalk в конце snmps.php она и ограничить максимальное кол-во переборов 10000 поставил вроде для маков вполне достаточно я и столько не видел на одном влане ни разу, а так я там немного схимичил и брал маки даже не со значения которые почему-то временами кривые, а с самого oid-а .

                      Comment

                      • zmdpc
                        Senior Member
                        • Oct 2014
                        • 484

                        #12
                        Запускаю php start.php

                        Ошибка
                        HTML Code:
                        PHP Warning:  Invalid argument supplied for foreach() in /home/vlad/Zabbix_map_PoC/makedot.php on line 18
                        Array
                        (
                        )
                        trying Zabbix api...
                        PHP Warning:  fopen(http://localhost/zabbix/api_jsonrpc.php): failed to open stream: HTTP request failed! HTTP/1.0 412 Precondition Failed
                         in /home/vlad/Zabbix_map_PoC/ZabbixApiAbstract.class.php on line 244
                        Could not connect to "http://localhost/zabbix/api_jsonrpc.php"PHP Notice:  Undefined variable: snmphosts in /home/vlad/Zabbix_map_PoC/zabs.php on line 46
                        PHP Warning:  Invalid argument supplied for foreach() in /home/vlad/Zabbix_map_PoC/start.php on line 16
                        ---->saving results to devices.json
                        ---->finding neighbours...
                        PHP Warning:  Invalid argument supplied for foreach() in /home/vlad/Zabbix_map_PoC/neighbours.php on line 9
                        PHP Notice:  Undefined variable: full in /home/vlad/Zabbix_map_PoC/neighbours.php on line 26
                        ---->saving results to full.json
                        ---->creating auto.dot for graphviz...PHP Warning:  Invalid argument supplied for foreach() in /home/vlad/Zabbix_map_PoC/makedot.php on line 18
                        ---->saving array to dot.json...
                        что нужно поправить ?


                        //Zabbix settings
                        $zurl="http://localhost/zabbix/api_jsonrpc.php";
                        $zuser="понятно";
                        $zpass="понятно";

                        //snmp default settings
                        $community="понятно";
                        $ip="127.0.0.1"; ------------------не понятно
                        $version="1";
                        $maxrep=16000;

                        можете объяснить какое значение необходимо для $ip ?
                        Last edited by zmdpc; 15-04-2015, 19:19.

                        Comment

                        • 701054
                          Member
                          • Mar 2015
                          • 37

                          #13
                          Originally posted by zmdpc
                          $ip="127.0.0.1"; ------------------не понятно
                          это я забыл удалить артефакт, ни на что не влияет, я просто в начале проверял snmp пока snmps мучал...

                          по поводу ошибки, сложно сказать, это на этапе zabs.php/PhpZabbixApi , я такого не встречал, но я его и гонял только на zabbix-е 2.4 ну на паре разных одной ветки, а какая у Вас версия ,если не секрет ? Тут видимо только собрать в curl то что генерится в phpZabbixApi при первом обращении и пробовать что-то менять...гугл говорит что ошибка из-за API calls must set the Content-Type header to application/json или метода авторизации, по поводу первого, оно есть в ZabbixApiAbstract.class.php , по поводу второго не могу сходу найти, но по-идее не работало б и у меня (на втором серве проверял скачав то что в шапке - отработало)...Может быть ещё у пользователся нет доступа к API т.к. это мое первое знакомство с API , не могу точно сказать в чем дело...

                          Как вариант можно попробовать пример http://zabbixapi.confirm.ch/#examples прогнать например "Simple request
                          Get a list of graphs:" а ам уже смотреть по результату
                          Last edited by 701054; 15-04-2015, 20:30.

                          Comment

                          • zmdpc
                            Senior Member
                            • Oct 2014
                            • 484

                            #14
                            Попробовал прогнать
                            HTML Code:
                             PHP Warning:  fopen(http://127.0.0.1/zabbix/api_jsonrpc.php): failed to open stream: HTTP request failed! HTTP/1.0 412 Precondition Failed
                             in /home/vlad/Zabbix_map_PoC/ZabbixApiAbstract.class.php on line 244
                            Could not connect to "http://127.0.0.1/zabbix/api_jsonrpc.php"
                            Пробовал под суперпупер админом. Как сделать так чтобы доступ у пользователя был к АПИ ?



                            ПыСЫ: разобрался - у меня был отключен нттр сайт по умолчанию, только хардкор только нттрС

                            Продвинулся дальше:

                            php start.php


                            PHP Warning: Invalid argument supplied for foreach() in /home/vlad/Zabbix_map_PoC/makedot.php on line 18
                            Array
                            (
                            )
                            trying Zabbix api...
                            API error -32602: Not authorised.PHP Notice: Undefined variable: snmphosts in /home/vlad/Zabbix_map_PoC/zabs.php on line 46
                            PHP Warning: Invalid argument supplied for foreach() in /home/vlad/Zabbix_map_PoC/start.php on line 16
                            ---->saving results to devices.json
                            ---->finding neighbours...
                            PHP Warning: Invalid argument supplied for foreach() in /home/vlad/Zabbix_map_PoC/neighbours.php on line 9
                            PHP Notice: Undefined variable: full in /home/vlad/Zabbix_map_PoC/neighbours.php on line 26
                            ---->saving results to full.json
                            ---->creating auto.dot for graphviz...PHP Warning: Invalid argument supplied for foreach() in /home/vlad/Zabbix_map_PoC/makedot.php on line 18
                            ---->saving array to dot.json...
                            Last edited by zmdpc; 15-04-2015, 20:47.

                            Comment

                            • 701054
                              Member
                              • Mar 2015
                              • 37

                              #15
                              начиная с версии 2 вроде у всех пользователей есть доступ к api , в предыдущих надо или в группу добавлять или разрешать на пользователе...остается только проверить http/https порты, путь может там без /zabbix и висит ли сервер на loopback , ну или поменять адрес на адрес интерфейса...больше идей нет

                              Comment

                              Working...