Ad Widget

Collapse

Массовое добавление

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • hunter.vostok
    Member
    • Nov 2012
    • 39

    #1

    Массовое добавление

    Добрый день. Есть стэк из 6-ти 24-портовых коммутаторов D-Link. Необходимо с каждого порта снимать по snmp ошибки. Как упростить работу по снятию - придумал - скриптом в цикле выполняю команду snmpwalk и тут же zabbix_sender'ом отправляю данные на сервер. Но при этом на сервере мне необходимо создать элементы данных с ключами. А это 24*6*2=288 элементов данных (это если только CRC, а если еще что-то что цифры вообще страшные становятся). Руками много времени скушает - есть ли возможность автоматизировать процесс создания элементов данных в определенном узле сети?
    Буду очень признателен за помощь. С Заббиксом плотно работаю второй месяц - специалистом себя в нем не считаю - если будут решения - разжуйте пожалуйста. Стараюсь сейчас во всем разобраться и многое получается - но далеко не все.
  • bga83
    Senior Member
    • Sep 2011
    • 268

    #2
    а смысл выполнять опрос скриптом а потом проталкивать данные на сервер?
    Не проще ли сделать шаблон, получающий данные по snmp, который повесить на необходимое число коммутаторов?

    Comment

    • hunter.vostok
      Member
      • Nov 2012
      • 39

      #3
      Originally posted by bga83
      а смысл выполнять опрос скриптом а потом проталкивать данные на сервер?
      Не проще ли сделать шаблон, получающий данные по snmp, который повесить на необходимое число коммутаторов?
      Не все так просто. Коммутаторы в стеке. Т.е. все 6 коммутаторов имеют один ip адрес. к примеру 192.168.30.1 порты первого комутатора это 1-24, второго это 65-88, третьего 129-153 и так далее. Т.е. шаблоном не получиться. Комутатор один единственный А вот портов у него очень много

      Comment

      • bga83
        Senior Member
        • Sep 2011
        • 268

        #4
        Ясно. Тогда еще как вариант прикрутить низкоуровневое обнаружение. Но имей ввиду что оно появилось только начиная с версии 2.0.0. Более подробно тут

        Если напрямую не выйдет, то раз уж все равно используются скрипты, то данные можно передавать через JSON-формат, ближе к концу есть его описание. По сути все те же самые данные надо скриптом будет выдать за один раз в определенном формате.

        Comment

        • hunter.vostok
          Member
          • Nov 2012
          • 39

          #5
          Originally posted by bga83
          Ясно. Тогда еще как вариант прикрутить низкоуровневое обнаружение. Но имей ввиду что оно появилось только начиная с версии 2.0.0. Более подробно тут

          Если напрямую не выйдет, то раз уж все равно используются скрипты, то данные можно передавать через JSON-формат, ближе к концу есть его описание. По сути все те же самые данные надо скриптом будет выдать за один раз в определенном формате.
          У нас zabbix 1.8.11. Не знаю можно ли его апдейтить до 2 без потери всего того что уже сделали. Нашел статью где ребята предлагают напрямую в базу данных забикса делать необходимые записи. Т.е. сваять скриптик который просто в таблицах новые итемсы повставляет. Сижу читаю.

          Comment

          • bga83
            Senior Member
            • Sep 2011
            • 268

            #6
            Originally posted by hunter.vostok
            У нас zabbix 1.8.11. Не знаю можно ли его апдейтить до 2 без потери всего того что уже сделали. Нашел статью где ребята предлагают напрямую в базу данных забикса делать необходимые записи. Т.е. сваять скриптик который просто в таблицах новые итемсы повставляет. Сижу читаю.
            я без проблем обновился с 1.8 на 2.0. Единственное надо внимательно все делать по инструкции и на всякий случай иметь бекапы. И иметь ввиду что база может довольно долго апгрейдиться. Я бы посоветовал все же обновиться, потому как добавился еще ряд некоторых удобных вещей кроме низкоуровнего обнаружения. При этом у тебя решение будет по сути штатным без применения "костылей", а это сам понимаешь довольно большой плюс.

            Comment

            • dima_dm
              Senior Member
              • Dec 2009
              • 2697

              #7
              Originally posted by hunter.vostok
              У нас zabbix 1.8.11. Не знаю можно ли его апдейтить до 2 без потери всего того что уже сделали. Нашел статью где ребята предлагают напрямую в базу данных забикса делать необходимые записи. Т.е. сваять скриптик который просто в таблицах новые итемсы повставляет. Сижу читаю.
              Напрямую писать в базу данных забикса - лучше не делать. Потом начнутся непонятные глуки.
              Есть несколько штатных способов создания множества элементов
              1) Через Zabbix API
              2) Через XML Import/Export
              3) Через низкоуровневое обнаружение LLD, но работает только в Zabbix 2.0 И выше

              Comment

              • Fullmetal8ender
                Member
                • Nov 2012
                • 81

                #8
                ß â òàêèõ ñëó÷àÿõ äåëàë 1 ýëåìåíò, ýêñïîðòèðîâàë õîñò à ïîòîì ïåðëîì ãåíåðèë îñòàëüíûå ýëåìåíòû. Íàïðèìåð òàêîé
                Code:
                #!/usr/bin/perl
                use 5.014;
                use warnings;
                use strict;
                my $templname = "Template_Catalyst_2950_48";
                my $n = 1;
                open GENTEMPL, ">", "templ.xml" or die $!;
                
                    say GENTEMPL '<?xml version="1.0" encoding="UTF-8"?>';
                    say GENTEMPL "<zabbix_export>";
                    say GENTEMPL "    <version>2.0</version>";
                    say GENTEMPL "    <date>2012-05-29T12:50:07Z</date>";
                    say GENTEMPL "    <groups>";
                    say GENTEMPL "        <group>";
                    say GENTEMPL "            <name>Templates</name>";
                    say GENTEMPL "        </group>";
                    say GENTEMPL "    </groups>";
                    say GENTEMPL "    <templates>";
                    say GENTEMPL "        <template>";
                    say GENTEMPL "            <template>$templname</template>";
                    say GENTEMPL "            <name>$templname</name>";
                    say GENTEMPL "            <groups>";
                    say GENTEMPL "                <group>";
                    say GENTEMPL "                    <name>Templates</name>";
                    say GENTEMPL "                </group>";
                    say GENTEMPL "            </groups>";
                    say GENTEMPL "            <applications/>";
                    say GENTEMPL "            <items>";
                
                my $i = 0;
                
                for ($i = 1; $i <=$n; $i++) {
                    say GENTEMPL "                <item>";
                    say GENTEMPL "                    <name>InFa0/" . "$i" . "</name>";
                    say GENTEMPL "                    <type>4</type>";
                    say GENTEMPL "                    <snmp_community>commun</snmp_community>";
                    say GENTEMPL "                    <multiplier>1</multiplier>";
                    say GENTEMPL "                    <snmp_oid>.1.3.6.1.2.1.2.2.1.10." . "$i" . "</snmp_oid>";
                    say GENTEMPL "                    <key>ifInOctets." . "$i" . "</key>";
                    say GENTEMPL "                    <delay>30</delay>";
                    say GENTEMPL "                    <history>90</history>";
                    say GENTEMPL "                    <trends>365</trends>";
                    say GENTEMPL "                    <status>0</status>";
                    say GENTEMPL "                    <value_type>3</value_type>";
                    say GENTEMPL "                    <allowed_hosts></allowed_hosts>";
                    say GENTEMPL "                    <units>bps</units>";
                    say GENTEMPL "                    <delta>1</delta>";
                    say GENTEMPL "                    <snmpv3_securityname></snmpv3_securityname>";
                    say GENTEMPL "                    <snmpv3_securitylevel>0</snmpv3_securitylevel>";
                    say GENTEMPL "                    <snmpv3_authpassphrase></snmpv3_authpassphrase>";
                    say GENTEMPL "                    <snmpv3_privpassphrase></snmpv3_privpassphrase>";
                    say GENTEMPL "                    <formula>8</formula>";
                    say GENTEMPL "                    <delay_flex></delay_flex>";
                    say GENTEMPL '                    <params>DSN=&lt;database source name&gt;\nuser=&lt;user name&gt;\npassword=&lt;password&gt;\nsql=&lt;query&gt;</params>' . "";
                    say GENTEMPL "                    <ipmi_sensor></ipmi_sensor>";
                    say GENTEMPL "                    <data_type>0</data_type>";
                    say GENTEMPL "                    <authtype>0</authtype>";
                    say GENTEMPL "                    <username></username>";
                    say GENTEMPL "                    <password></password>";
                    say GENTEMPL "                    <publickey></publickey>";
                    say GENTEMPL "                    <privatekey></privatekey>";
                    say GENTEMPL "                    <port></port>";
                    say GENTEMPL "                    <description></description>";
                    say GENTEMPL "                    <inventory_link>0</inventory_link>";
                    say GENTEMPL "                    <applications/>";
                    say GENTEMPL "                    <valuemap/>";
                    say GENTEMPL "                </item>";
                }
                
                for ($i = 1; $i <=$n; $i++) {
                    say GENTEMPL "                <item>";
                    say GENTEMPL "                    <name>OutFa0/" . "$i" . "</name>";
                    say GENTEMPL "                    <type>4</type>";
                    say GENTEMPL "                    <snmp_community>commun</snmp_community>";
                    say GENTEMPL "                    <multiplier>1</multiplier>";
                    say GENTEMPL "                    <snmp_oid>.1.3.6.1.2.1.2.2.1.16." . "$i" . "</snmp_oid>";
                    say GENTEMPL "                    <key>ifOutOctets." . "$i" . "</key>";
                    say GENTEMPL "                    <delay>30</delay>";
                    say GENTEMPL "                    <history>90</history>";
                    say GENTEMPL "                    <trends>365</trends>";
                    say GENTEMPL "                    <status>0</status>";
                    say GENTEMPL "                    <value_type>3</value_type>";
                    say GENTEMPL "                    <allowed_hosts></allowed_hosts>";
                    say GENTEMPL "                    <units>bps</units>";
                    say GENTEMPL "                    <delta>1</delta>";
                    say GENTEMPL "                    <snmpv3_securityname></snmpv3_securityname>";
                    say GENTEMPL "                    <snmpv3_securitylevel>0</snmpv3_securitylevel>";
                    say GENTEMPL "                    <snmpv3_authpassphrase></snmpv3_authpassphrase>";
                    say GENTEMPL "                    <snmpv3_privpassphrase></snmpv3_privpassphrase>";
                    say GENTEMPL "                    <formula>8</formula>";
                    say GENTEMPL "                    <delay_flex></delay_flex>";
                    say GENTEMPL '                    <params>DSN=&lt;database source name&gt;\nuser=&lt;user name&gt;\npassword=&lt;password&gt;\nsql=&lt;query&gt;</params>' . "";
                    say GENTEMPL "                    <ipmi_sensor></ipmi_sensor>";
                    say GENTEMPL "                    <data_type>0</data_type>";
                    say GENTEMPL "                    <authtype>0</authtype>";
                    say GENTEMPL "                    <username></username>";
                    say GENTEMPL "                    <password></password>";
                    say GENTEMPL "                    <publickey></publickey>";
                    say GENTEMPL "                    <privatekey></privatekey>";
                    say GENTEMPL "                    <port></port>";
                    say GENTEMPL "                    <description></description>";
                    say GENTEMPL "                    <inventory_link>0</inventory_link>";
                    say GENTEMPL "                    <applications/>";
                    say GENTEMPL "                    <valuemap/>";
                    say GENTEMPL "                </item>";
                }	
                    say GENTEMPL "            </items>";
                    say GENTEMPL "            <discovery_rules/>";
                    say GENTEMPL "            <macros/>";
                    say GENTEMPL "            <templates/>";
                    say GENTEMPL "            <screens/>";
                    say GENTEMPL "        </template>";
                    say GENTEMPL "    </templates>";
                    say GENTEMPL "</zabbix_export>";

                Comment

                • hunter.vostok
                  Member
                  • Nov 2012
                  • 39

                  #9
                  ïàðñèíã ëîãîâ

                  Спасибо всем за помощь - пошли все таки путем добавления записей в MYSQ таблицы забикса. Очень удивило то что к примеру поле Primry_key не автоинкриментное, а берет свое значение из другой таблицы - где оно тоже не автоинкриментное - а пишеться ручками
                  Last edited by hunter.vostok; 03-01-2013, 15:32.

                  Comment

                  • zalex_ua
                    Senior Member
                    Zabbix Certified Trainer
                    Zabbix Certified SpecialistZabbix Certified Professional
                    • Oct 2009
                    • 1286

                    #10
                    Originally posted by hunter.vostok
                    Спасибо всем за помощь - пошли все таки путем добавления записей в MYSQ таблицы забикса. Очень удивило то что к примеру поле Primry_key не автоинкриментное, а берет свое значение из другой таблицы - где оно тоже не автоинкриментное - а пишеться ручками
                    Потому что https://support.zabbix.com/browse/ZBXNEXT-1343

                    Comment

                    Working...