Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (Flatly)
  • No Skin
Collapse
Brand Logo

NetXMS Forum

  1. Home
  2. Support (Russian)
  3. ошибочные срабатывания SYS_IF_UP и SYS_IF_EXPECTED_DOWN

ошибочные срабатывания SYS_IF_UP и SYS_IF_EXPECTED_DOWN

Scheduled Pinned Locked Moved Support (Russian)
19 Posts 3 Posters 31.7k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • V
    V
    Victor Kirhenshtein
    wrote on last edited by
    #7

    Отмена срабатывание этого-же правила, или не идти дальше по правилам? А то правило terminate alarm так и так ничего не сделает если алармов с заданным ключом нет.

    1 Reply Last reply
    0
    • 2
      2
      2c2i
      wrote on last edited by
      #8

      >Отмена срабатывание этого-же правила, или не идти дальше по правилам?
      Отмена срабатывания этого правила.

      >А то правило terminate alarm так и так ничего не сделает если алармов с заданным ключом нет.
      Правило terminate alarm сейчас выполняет Action независимо от наличия/отсутствия ключа аларма (в результате у нас генерируются тысячи бессмысленных писем "[Normal] Interface blabla with expected state DOWN changed state to DOWN" ) . Вот галка про которую я говорю, могла бы отменять выполнение всех экшнов данного правила если ключа аларма не найдено.

      1 Reply Last reply
      0
      • V
        V
        Victor Kirhenshtein
        wrote on last edited by
        #9

        Т.е. в правиле несколько действий - terminate alarm плюс рассылка, и подавлять надо именно остальные действия.

        1 Reply Last reply
        0
        • 2
          2
          2c2i
          wrote on last edited by
          #10

          >Т.е. в правиле несколько действий - terminate alarm плюс рассылка, и подавлять надо именно остальные действия.

          Да, если при terminate alarm оказалось что нет аларма с таким ключем - нужна галочка решит выполненять ли server actions или просто закончить работу правила.

          1 Reply Last reply
          0
          • 2
            2
            2c2i
            wrote on last edited by
            #11

            Скажите, нет ли в планах реализации вышеописанного поведения?
            Быть может вы подскажете как его эмулировать с помощью  custom attributes, как вы упоминали ранее. Тк эта проблема нам мешает завершить переход на netxms полностью.

            1 Reply Last reply
            0
            • 2
              2
              2c2i
              wrote on last edited by
              #12

              получилось добиться вышеописанного таким скриптом фильтрации:

              sub main() {
              	key="IF_UNEXP_UP_".$event->parameters[1]."_".d2x($event->id);
              	trace(1, "Checking key ".key);
              	if	(FindAlarmByKey(key) == null) {
              		trace(1, "key" .key." Not found. disable event rule");
              		return false;
              	}
              	return true;
              }
              
              1 Reply Last reply
              0
              • H
                H
                hsvt
                wrote on last edited by
                #13

                @2c2i said in ошибочные срабатывания SYS_IF_UP и SYS_IF_EXPECTED_DOWN:

                получилось добиться вышеописанного таким скриптом фильтрации:

                sub main() {
                	key="IF_UNEXP_UP_".$event->parameters[1]."_".d2x($event->id);
                	trace(1, "Checking key ".key);
                	if	(FindAlarmByKey(key) == null) {
                		trace(1, "key" .key." Not found. disable event rule");
                		return false;
                	}
                	return true;
                }
                

                Это к какому правилу применять нужно ?

                1 Reply Last reply
                0
                • 2
                  2
                  2c2i
                  wrote on last edited by
                  #14

                  Для правила EPP "Terminate interface unexpectedly up alarms when interface goes down":

                  sub main() {
                  	key="IF_UNEXP_UP_".$event->parameters[1];
                  	trace(1, "Checking key ".key);
                  	if	(FindAlarmByKey(key) == null) {
                  		trace(1, "key" .key." Not found. disable event rule");
                  		return false;
                  	}
                  	trace(1, "key" .key." Found. process event rule");
                  
                  	return true;
                  }
                  

                  Для Terminate interface down alarms when interface is up:

                  sub main() {
                  	key="IF_DOWN_".$event->parameters[1];
                  	trace(1, "Checking key ".key);
                  	if	(FindAlarmByKey(key) == null) {
                  		trace(1, "key ".key." Not found. disable event rule");
                  		return false;
                  	}
                  	trace(1, "key ".key." Found. process event rule");
                  
                  	return true;
                  }
                  
                  1 Reply Last reply
                  0
                  • H
                    H
                    hsvt
                    wrote on last edited by
                    #15

                    @2c2i said in ошибочные срабатывания SYS_IF_UP и SYS_IF_EXPECTED_DOWN:

                    Для правила EPP "Terminate interface unexpectedly up alarms when interface goes down":

                    sub main() {
                    	key="IF_UNEXP_UP_".$event->parameters[1];
                    	trace(1, "Checking key ".key);
                    	if	(FindAlarmByKey(key) == null) {
                    		trace(1, "key" .key." Not found. disable event rule");
                    		return false;
                    	}
                    	trace(1, "key" .key." Found. process event rule");
                    
                    	return true;
                    }
                    

                    Для Terminate interface down alarms when interface is up:

                    sub main() {
                    	key="IF_DOWN_".$event->parameters[1];
                    	trace(1, "Checking key ".key);
                    	if	(FindAlarmByKey(key) == null) {
                    		trace(1, "key ".key." Not found. disable event rule");
                    		return false;
                    	}
                    	trace(1, "key ".key." Found. process event rule");
                    
                    	return true;
                    }
                    

                    Спасибо! Так полегче 🙂

                    1 Reply Last reply
                    0
                    • H
                      H
                      hsvt
                      wrote on last edited by
                      #16

                      @2c2i said in ошибочные срабатывания SYS_IF_UP и SYS_IF_EXPECTED_DOWN:

                      получилось добиться вышеописанного таким скриптом фильтрации:

                      sub main() {
                      	key="IF_UNEXP_UP_".$event->parameters[1]."_".d2x($event->id);
                      	trace(1, "Checking key ".key);
                      	if	(FindAlarmByKey(key) == null) {
                      		trace(1, "key" .key." Not found. disable event rule");
                      		return false;
                      	}
                      	return true;
                      }
                      

                      Хотя я немного рано радовался. У меня в общем немного суть отличается, у меня нет таких EPP правил "Terminate interface unexpectedly up alarms when interface goes down" и "Terminate interface down alarms when interface is up".

                      То есть я их не терминирую автоматически, а хотел бы отслеживать вручную.

                      Мне нужно SYS_IF_EXPECTED_DOWN создавать Alarm (Normal) только если до этого был SYS_IF_UNEXPECTED_UP, а если был SYS_NODE_DOWN или SYS_IF_UNKNOWN то НЕ создавать.

                      Именно как вы писали:

                      Эту проблему можно было бы решить галкой типа "suppress event if key not found" - то есть если ключ IF_UNEXP_UP_%i_%1 при обработке SYS_IF_EXPECTED_DOWN не найден, то подавлять ивент. С помощью такой фичи можно было бы подавлять ивенты о нормализации чего либо, если до этого не было ивента о аларме.

                      Вроде бы вот этот ваш скрипт должен как раз помочь, но с ним почему то возвращает false. (sub main разработчики советуют уже опускать)

                      key="IF_UNEXP_UP_".$event->parameters[1];
                      	trace(1, "Checking key ".key);
                      	if	(FindAlarmByKey(key) == null) {
                      		trace(1, "key" .key." Not found. disable event rule");
                      		return false;
                      	}
                      	trace(1, "key" .key." Found. process event rule");
                      
                      	return true;
                      

                      Где вы вызываете скрипт для отладки (trace) ?


                      epp_filter_DL.png

                      1 Reply Last reply
                      0
                      • 2
                        2
                        2c2i
                        wrote on last edited by
                        #17

                        >Где вы вызываете скрипт для отладки (trace) ?
                        trace - выводит сообщения в лог демона на сервере.

                        >То есть я их не терминирую автоматически, а хотел бы отслеживать вручную.
                        Я не совсем понял о чем речь. Мои скрипты подавляют экшны для инвентов о нормализации состояния порта в том случае если не было аларма на тему ненормального состояния. Это как раз происходит если статус интерфейсов стал UNKNOWN. То есть делаются две вещи:

                        • не пишется письмо что ситуация нормализовалась по SYS_IF_EXPECTED_DOWN в случае если ранее не было аларма SYS_IF_UNEXPECTED_UP( как раз если у вас был SYS_NODE_DOWN или SYS_IF_UNKNOWN)
                        • не пишется письмо  что ситуация нормализовалась по SYS_IF_EXPECTED_UP в случае если ранее не было проблемы SYS_IF_UNEXPECTED_DOWN(аналогично, но для интерфейсов с другим expected state).

                        Вам не нужно терминировать аларм автоматически если стейт порта изменился с  expected state на другой, а потом снова нормализовался?

                        >Мне нужно SYS_IF_EXPECTED_DOWN создавать Alarm (Normal) только если до этого был SYS_IF_UNEXPECTED_UP, а если был SYS_NODE_DOWN или SYS_IF_UNKNOWN то НЕ создавать.
                        То есть если пришел SYS_IF_UNEXPECTED_UP - вы создаете аларм, а потом если пришел SYS_IF_EXPECTED_DOWN(то есть нормализация) - вы хотите не удалять аларм, а создать еще один? Если так, то вы в принципе можете применить мои фильтры, немного их поменяв.

                        1 Reply Last reply
                        0
                        • H
                          H
                          hsvt
                          wrote on last edited by
                          #18

                          @2c2i said in ошибочные срабатывания SYS_IF_UP и SYS_IF_EXPECTED_DOWN:

                          >Мне нужно SYS_IF_EXPECTED_DOWN создавать Alarm (Normal) только если до этого был SYS_IF_UNEXPECTED_UP, а если был SYS_NODE_DOWN или SYS_IF_UNKNOWN то НЕ создавать.
                          То есть если пришел SYS_IF_UNEXPECTED_UP - вы создаете аларм, а потом если пришел SYS_IF_EXPECTED_DOWN(то есть нормализация) - вы хотите не удалять аларм, а создать еще один? Если так, то вы в принципе можете применить мои фильтры, немного их поменяв.

                          Да, создавать еще один (у него всё равно severity Normal) или хотя бы резолвить его.

                          >trace - выводит сообщения в лог демона на сервере.

                          У меня кстати пусто в netxmsd.log по трейсам, trace 1 — это же уровень дебага\лога, может больше надо?)

                          >Я не совсем понял о чем речь. Мои скрипты подавляют экшны для инвентов о нормализации состояния порта в том случае если не было аларма на тему ненормального состояния. Это как раз происходит если статус интерфейсов стал UNKNOWN. То есть делаются две вещи:

                          • не пишется письмо что ситуация нормализовалась по SYS_IF_EXPECTED_DOWN в случае если ранее не было аларма SYS_IF_UNEXPECTED_UP( как раз если у вас был SYS_NODE_DOWN или SYS_IF_UNKNOWN)
                          • не пишется письмо  что ситуация нормализовалась по SYS_IF_EXPECTED_UP в случае если ранее не было проблемы SYS_IF_UNEXPECTED_DOWN(аналогично, но для интерфейсов с другим expected state).

                          У меня нет actions для этих правил, мне достаточно Алармов для них. Ну грубо говоря сработал внезапно где то SYS_IF_UNEXPECTED_UP (монтёр порт включил у которого expected state down или несанкционированное подключение) приходит аларм SYS_IF_UNEXPECTED_UP, потом порт погасили - приходит аларм (Normal) SYS_IF_EXPECTED_DOWN. Вручную уже  разбираешь их, удаляешь или резолвишь, например. А в остальном всё тоже самое, только без Action.

                          SYS_IF_EXPECTED_UP и SYS_IF_UNEXPECTED_DOWN я у себя не нахожу 🙂 Это системные или вы сами создавали ивенты?


                          ex.jpg

                          1 Reply Last reply
                          0
                          • H
                            H
                            hsvt
                            wrote on last edited by
                            #19

                            Поправил ваш скрипт с помощью Виктора, для того чтобы полностью получать Unique ID.

                            nodeid = "0x" . right(d2x($node->id), 8, "0");
                            key = "IF_UNEXP_UP_".nodeid."_".$event->parameters[1];
                            	trace(0, "Checking key ".key);
                            	if	(FindAlarmByKey(key) == null) {
                            		trace(0, "key " .key." Not found. disable event rule");
                            		return false;
                            	}
                            	trace(0, "key " .key." Found. process event rule");
                            
                            	return true;
                            
                            //IF_UNEXP_UP_0x00000981_9374
                            

                            Спасибо!

                            1 Reply Last reply
                            0

                            Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                            Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                            With your input, this post could be even better 💗

                            Register Login
                            Reply
                            • Reply as topic
                            Log in to reply
                            • Oldest to Newest
                            • Newest to Oldest
                            • Most Votes


                            • Login

                            • Don't have an account? Register

                            • Login or register to search.
                            Powered by NodeBB Contributors
                            • First post
                              Last post
                            0
                            • Categories
                            • Recent
                            • Tags
                            • Popular
                            • Users
                            • Groups