Ad Widget

Collapse

массовое удаление

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • sproot
    Member
    • Mar 2012
    • 52

    #1

    массовое удаление

    Был создан шаблон в котором было правило обнаружения. Этот шаблон был присоединен к n группе хостов. Потом забикс сервер стал неимоверно жутко тормозить и было принято решение переделать шаблон и отсоединить от хостов. Шаблон был отсоединен (и даже больше - удален), но правило обнаружения в каждом хосте осталось. Как можно массово удалить из ~400 хостов это правило(хосты разбиты на группы)?
  • Jimson
    Senior Member
    • Jan 2008
    • 1327

    #2
    Востановить шаблон, заново его присоедить к хостам, а затем отсоединить/удалить с очисткой. Любым другим способом я бы не рискнул удалять объекты созданные lld.

    Comment

    • sproot
      Member
      • Mar 2012
      • 52

      #3
      Спасибо, проверю!

      P.S.
      Теперь проблемы с производительностью:
      Zabbix history syncer processes more than 75% busy
      Zabbix alerter processes more than 75% busy

      Предчувствую долгий и мучительный тюнинг

      Comment

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

        #4
        Опишите свое правило обнаружения, интервал выполнения правила обнаружения, сколько айтемов добавлялось в итоге и т.д.
        И посетите плиз https://support.zabbix.com/browse/ZBX-5225

        Было бы неплохо если вы там напишите свое мнение.

        Comment

        • sproot
          Member
          • Mar 2012
          • 52

          #5
          Значит так. На настоящий момент имеем следующее:

          Параметр Значение Детали
          Zabbix сервер запущен Нет 127.0.0.1:10051
          Количество узлов сети (под наблюдением/без наблюдения/шаблоны) 431 391 / 11 / 29
          Количество элементов данных (активных/деактивированых/не поддерживаются) 47484 46940 / 21 / 523
          Количество триггеров (активированных/деактивированных)[проблема/неизвестно/ок] 1718 1717 / 1 [11 / 0 / 1706]
          Количество пользователей (в сети) 10 2
          Требуемое быстродействие сервера, новые значения в секунду 449.47 -

          Во вложении, шаблон Template Cisco Interfaces с Правилом обнаружения, которое снимает _базовую_ сетевую статистику с _физических_ портов.
          Регулярное выражение @Cisco interfaces for discovery:
          ^(Gi[0-9]\/0\/[0-9]+)$ [Результат ИСТИНА]

          Этот шаблон был прилинкован к 117 узлам из группы Cisco Catalyst 3750. В среднем, на каждый коммутатор приходится 365 элементов данных, в зависимости от количества портов коммутаторов в стеке(если они есть). И это только группа Cisco Catalyst 3750, я уже не говорю про другие 30 групп.

          Во вложении найдете конфиги postgres + zabbix сервера.

          Сервер: HP ProLiant DL380 G6, аппаратная конфигурация и конфигурация raid во вложении: zabbix_hw.tar.gz.

          uname -a
          Linux s11 2.6.32-5-amd64 #1 SMP Sun May 6 04:00:17 UTC 2012 x86_64 GNU/Linux

          lsb_release --all
          No LSB modules are available.
          Distributor ID: Debian
          Description: Debian GNU/Linux 6.0.5 (squeeze)
          Release: 6.0.5
          Codename: squeeze

          Вообще, когда я первый раз добавил шаблон для всех узлов, LA на сервере достигал 50-60, при том что логических процессоров всего 16.
          Дисковый IO был нулевой.

          Вчера специально остановил забикс-сервер пока не решу проблему. Сейчас запустил. LA=9, но он плавно растет. Скриншот top во вложении.

          Делать партицирование базы? Реально, насколько сильно это улучшит ситуацию?
          Last edited by sproot; 17-10-2013, 06:50.

          Comment

          • dotneft
            Senior Member
            • Nov 2008
            • 699

            #6
            вижу много запросов в топе, покажите их.

            а вот это зря, очень зря:
            autovacuum = off # Enable autovacuum subprocess? 'on'

            Подозреваю, что со временем запросы начинают все медленнее и медленнее работать.
            Last edited by dotneft; 09-09-2012, 13:18.

            Comment

            • sproot
              Member
              • Mar 2012
              • 52

              #7
              Originally posted by dotneft
              вижу много запросов в топе, покажите их.

              а вот это зря, очень зря:
              autovacuum = off # Enable autovacuum subprocess? 'on'

              Подозреваю, что со временем запросы начинают все медленнее и медленнее работать.
              zabbix=# select current_query from pg_stat_activity where current_query<>'<IDLE>' and current_query like 'select%';
              current_query
              ---------------------------------------------------------------------------------------------------------------------------------------------------------
              select distinct i.itemid from items i,item_discovery id where i.itemid=id.itemid and id.parent_itemid=31959 and i.key_='ifHCOutOctets.[Gi1/0/14]'
              select distinct i.itemid from items i,item_discovery id where i.itemid=id.itemid and id.parent_itemid=33168 and i.key_='ifHCOutOctets.[Gi1/0/7]'
              select distinct i.itemid from items i,item_discovery id where i.itemid=id.itemid and id.parent_itemid=32561 and i.key_='ifInDiscards.[Gi1/0/21]'
              select distinct i.itemid from items i,item_discovery id where i.itemid=id.itemid and id.parent_itemid=33221 and i.key_='ifHCInOctets.[Gi1/0/3]'
              select distinct i.itemid from items i,item_discovery id where i.itemid=id.itemid and id.parent_itemid=32917 and i.key_='ifOutErrors.[Gi1/0/25]'
              select distinct i.itemid from items i,item_discovery id where i.itemid=id.itemid and id.parent_itemid=33283 and i.key_='ifHCInMulticastPkts.[Gi1/0/9]'
              select distinct i.itemid from items i,item_discovery id where i.itemid=id.itemid and id.parent_itemid=31837 and i.key_='ifHCOutUcastPkts.[Gi1/0/3]'
              select distinct i.itemid from items i,item_discovery id where i.itemid=id.itemid and id.parent_itemid=32082 and i.key_='ifHCOutMulticastPkts.[Gi1/0/8]'
              select distinct i.itemid from items i,item_discovery id where i.itemid=id.itemid and id.parent_itemid=32507 and i.key_='ifHCInUcastPkts.[Gi1/0/3]'
              select distinct i.itemid from items i,item_discovery id where i.itemid=id.itemid and id.parent_itemid=33036 and i.key_='ifHCInMulticastPkts.[Gi1/0/26]'
              select distinct i.itemid from items i,item_discovery id where i.itemid=id.itemid and id.parent_itemid=32804 and i.key_='ifHCOutOctets.[Gi1/0/6]'
              select distinct i.itemid from items i,item_discovery id where i.itemid=id.itemid and id.parent_itemid=32682 and i.key_='ifHCOutUcastPkts.[Gi1/0/3]'
              select distinct i.itemid from items i,item_discovery id where i.itemid=id.itemid and id.parent_itemid=32323 and i.key_='ifHCOutOctets.[Gi1/0/5]'
              select current_query from pg_stat_activity where current_query<>'<IDLE>' and current_query like 'select%';
              (14 строк)

              Изначально, вакуум был включен. Потом последовала череда "опытов"... :-) Думаю партицирование сделать. Почитал про дедлоки.
              Пока не могу определиться, что лучше zabbix 2.0.2 + postgresql 8.4 или + postgresql 9.1. Что посоветуете?

              Comment

              • sproot
                Member
                • Mar 2012
                • 52

                #8
                Переехал на postgresql 9.1.5 и на партицирование. Теперь проблемы с LA нет, но есть другие :-)

                Ставил так:

                1. ALTER TABLE acknowledges DROP CONSTRAINT c_acknowledges_1 CASCADE, DROP CONSTRAINT c_acknowledges_2 CASCADE;
                ALTER TABLE alerts DROP CONSTRAINT c_alerts_1 CASCADE, DROP CONSTRAINT c_alerts_2 CASCADE, DROP CONSTRAINT c_alerts_3 CASCADE, DROP CONSTRAINT c_alerts_4 CASCADE;
                ALTER TABLE auditlog DROP CONSTRAINT c_auditlog_1 CASCADE;
                ALTER TABLE service_alarms DROP CONSTRAINT c_service_alarms_1 CASCADE;
                ALTER TABLE auditlog_details DROP CONSTRAINT c_auditlog_details_1 CASCADE;
                2. использовал скрипт zabbix_partitioning_pgsql.sh (http://www.zabbix.com/forum/showthread.php?t=22723)
                3. заменил функции partition_every_day и partition_every_month, которые взял здесь: http://crypt47.blogspot.com/2012/05/...-database.html


                16932:20120910:164353.467 [Z3005] query failed: [0] PGRES_FATAL_ERROR:ERROR: insert or update on table "alerts_2012_09" violates foreign key constraint "c_partitions_alerts_2012_09_2"
                DETAIL: Key (eventid)=(35720) is not present in table "events".
                [insert into alerts (alertid,actionid,eventid,userid,clock,mediatypeid ,sendto,subject,message,status,alerttype,esc_step) values (24125,3,35720,7,1347255833,1,'[email protected]','OK: Zabbix history syncer processes more than 75% busy','Trigger:
                Trigger status: OK
                Trigger severity: Average
                Trigger URL:

                Item values:

                1. Zabbix busy history syncer processes, in % (Zabbix server:zabbix[process,history syncer,avg,busy]): 37.48 %
                2. *UNKNOWN* (*UNKNOWN*:*UNKNOWN*): *UNKNOWN*
                3. *UNKNOWN* (*UNKNOWN*:*UNKNOWN*): *UNKNOWN*',0,0,0)]
                16932:20120910:164353.467 escalation cancelled: action [3] deleted
                16932:20120910:164353.467 escalation cancelled: action [3] deleted
                16932:20120910:164353.467 escalation cancelled: action [3] deleted
                16932:20120910:164353.467 escalation cancelled: action [3] deleted
                16932:20120910:164353.467 escalation cancelled: action [3] deleted
                16932:20120910:164353.468 escalation cancelled: action [3] deleted
                16932:20120910:164353.468 escalation cancelled: action [3] deleted
                16932:20120910:164353.468 escalation cancelled: action [3] deleted
                16932:20120910:164353.468 escalation cancelled: action [3] deleted
                16932:20120910:164353.468 escalation cancelled: action [3] deleted
                16932:20120910:164353.468 escalation cancelled: action [3] deleted
                16932:20120910:164353.468 escalation cancelled: action [4] deleted
                16932:20120910:164353.468 escalation cancelled: action [4] deleted
                16932:20120910:164353.468 escalation cancelled: action [4] deleted
                16932:20120910:164353.468 escalation cancelled: action [4] deleted
                16932:20120910:164353.468 escalation cancelled: action [4] deleted
                16932:20120910:164353.468 escalation cancelled: action [4] deleted
                16932:20120910:164353.468 escalation cancelled: action [4] deleted
                16932:20120910:164356.494 [Z3005] query failed: [0] PGRES_FATAL_ERROR:ERROR: insert or update on table "alerts_2012_09" violates foreign key constraint "c_partitions_alerts_2012_09_2"
                DETAIL: Key (eventid)=(35720) is not present in table "events".
                [insert into alerts (alertid,actionid,eventid,userid,clock,mediatypeid ,sendto,subject,message,status,alerttype,esc_step) values (24129,3,35720,7,1347255836,1,'[email protected]','OK: Zabbix history syncer processes more than 75% busy','Trigger:
                Trigger status: OK
                Trigger severity: Average
                Trigger URL:

                Item values:

                1. Zabbix busy history syncer processes, in % (Zabbix server:zabbix[process,history syncer,avg,busy]): 37.48 %
                2. *UNKNOWN* (*UNKNOWN*:*UNKNOWN*): *UNKNOWN*
                3. *UNKNOWN* (*UNKNOWN*:*UNKNOWN*): *UNKNOWN*',0,0,0)]


                Однако:

                zabbix=# select * from events where eventid=35720;
                eventid | source | object | objectid | clock | value | acknowledged | ns | value_changed
                ---------+--------+--------+----------+------------+-------+--------------+-----------+---------------
                35720 | 0 | 0 | 13472 | 1347251437 | 0 | 0 | 975346662 | 1
                (1 строка)


                И, вот еще:

                16927:20120910:164231.170 [Z3005] query failed: [0] PGRES_FATAL_ERROR:ERROR: deadlock detected
                DETAIL: Process 16974 waits for ShareLock on transaction 10314; blocked by process 17044.
                Process 17044 waits for ShareLock on transaction 10316; blocked by process 16974.
                HINT: See server log for query details.


                Что можно подкрутить?

                Comment

                • sproot
                  Member
                  • Mar 2012
                  • 52

                  #9
                  Можете поделиться sql скриптом рабочей схемы для postgres 9.1 и zabbix 2.0.2?
                  Last edited by sproot; 10-09-2012, 12:01.

                  Comment

                  • dotneft
                    Senior Member
                    • Nov 2008
                    • 699

                    #10
                    Originally posted by sproot
                    Переехал на postgresql 9.1.5 и на партицирование. Теперь проблемы с LA нет, но есть другие :-)

                    Что можно подкрутить?
                    Видимо какую то часть этого дела не выполнили:
                    Code:
                     ALTER TABLE acknowledges DROP CONSTRAINT c_acknowledges_1 CASCADE, DROP CONSTRAINT c_acknowledges_2 CASCADE;
                     ALTER TABLE alerts DROP CONSTRAINT c_alerts_1 CASCADE, DROP CONSTRAINT c_alerts_2 CASCADE, DROP CONSTRAINT c_alerts_3 CASCADE, DROP CONSTRAINT c_alerts_4 CASCADE;
                     ALTER TABLE auditlog DROP CONSTRAINT c_auditlog_1 CASCADE;
                     ALTER TABLE service_alarms DROP CONSTRAINT c_service_alarms_1 CASCADE;
                     ALTER TABLE auditlog_details DROP CONSTRAINT c_auditlog_details_1 CASCADE;

                    Comment

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

                      #11
                      в шаблоне:

                      Code:
                      ...
                       <discovery_rule>
                                          <name>Interface statistics</name>
                                          <type>4</type>
                                          <snmp_community>{$ZABBIX_REMOTE_SNMP}</snmp_community>
                                          <snmp_oid>IF-MIB::ifName</snmp_oid>
                                          <key>interface.ifName</key>
                                          <delay>120</delay>
                      ...
                      вам действительно нужно каждых 120 секунд делать обнаружение? , это и есть проблема !

                      По нормальному используют значения гоооораздо больше. Часы или дни например.

                      Читаем о Update interval (in sec) тут http://www.zabbix.com/documentation/...evel_discovery

                      Comment

                      • sproot
                        Member
                        • Mar 2012
                        • 52

                        #12
                        Originally posted by dotneft
                        Видимо какую то часть этого дела не выполнили:
                        Code:
                         ALTER TABLE acknowledges DROP CONSTRAINT c_acknowledges_1 CASCADE, DROP CONSTRAINT c_acknowledges_2 CASCADE;
                         ALTER TABLE alerts DROP CONSTRAINT c_alerts_1 CASCADE, DROP CONSTRAINT c_alerts_2 CASCADE, DROP CONSTRAINT c_alerts_3 CASCADE, DROP CONSTRAINT c_alerts_4 CASCADE;
                         ALTER TABLE auditlog DROP CONSTRAINT c_auditlog_1 CASCADE;
                         ALTER TABLE service_alarms DROP CONSTRAINT c_service_alarms_1 CASCADE;
                         ALTER TABLE auditlog_details DROP CONSTRAINT c_auditlog_details_1 CASCADE;
                        Да, вроде как, выполнил:

                        zabbix=# ALTER TABLE acknowledges DROP CONSTRAINT c_acknowledges_1 CASCADE, DROP CONSTRAINT c_acknowledges_2 CASCADE;
                        ERROR: constraint "c_acknowledges_1" of relation "acknowledges" does not exist
                        zabbix=# ALTER TABLE alerts DROP CONSTRAINT c_alerts_1 CASCADE, DROP CONSTRAINT c_alerts_2 CASCADE, DROP CONSTRAINT c_alerts_3 CASCADE, DROP CONSTRAINT c_alerts_4 CASCADE;
                        ERROR: constraint "c_alerts_1" of relation "alerts" does not exist
                        zabbix=# ALTER TABLE auditlog DROP CONSTRAINT c_auditlog_1 CASCADE;
                        ERROR: constraint "c_auditlog_1" of relation "auditlog" does not exist
                        zabbix=# ALTER TABLE service_alarms DROP CONSTRAINT c_service_alarms_1 CASCADE;
                        ERROR: constraint "c_service_alarms_1" of relation "service_alarms" does not exist
                        zabbix=# ALTER TABLE auditlog_details DROP CONSTRAINT c_auditlog_details_1 CASCADE;
                        ERROR: constraint "c_auditlog_details_1" of relation "auditlog_details" does not exist
                        zabbix=#

                        Comment

                        • sproot
                          Member
                          • Mar 2012
                          • 52

                          #13
                          Originally posted by zalex_ua
                          в шаблоне:

                          Code:
                          ...
                           <discovery_rule>
                                              <name>Interface statistics</name>
                                              <type>4</type>
                                              <snmp_community>{$ZABBIX_REMOTE_SNMP}</snmp_community>
                                              <snmp_oid>IF-MIB::ifName</snmp_oid>
                                              <key>interface.ifName</key>
                                              <delay>120</delay>
                          ...
                          вам действительно нужно каждых 120 секунд делать обнаружение? , это и есть проблема !

                          По нормальному используют значения гоооораздо больше. Часы или дни например.

                          Читаем о Update interval (in sec) тут http://www.zabbix.com/documentation/...evel_discovery
                          Упс... Спасибо, проверю!

                          Comment

                          • sproot
                            Member
                            • Mar 2012
                            • 52

                            #14
                            dotneft, Вы не могли бы выложить в wiki к своей статье, готовый sql-скрипт по партицированию таблиц? Думаю, многие были бы благодарны. Да, и вообще, если он реально помогает при высоких нагрузках, то почему бы его не включить в архив исходников в zabbix-2.0.2/database/... как опцию.

                            Comment

                            • sproot
                              Member
                              • Mar 2012
                              • 52

                              #15
                              Все нормально, проблемы больше нет. Спасибо всем!

                              Comment

                              Working...