|
Hi,
You must use one data collector by domain to provide this function.
Typically if you have to survey the lost of adjacency from a router,you
have to know to which domain the adjacent node belongs("source" of the
event).
The best way is to set up a rule looking for the event and dealing with
the parameters,you know the "source" of the event and you can find the
domain.
Then you send your message to the data collector in the appropriate
domain and target to the source.
restrictions:
-you have to create a separate domain(not part of you tree)and your
routers must be members.
-don't enable notification on that domain.
(you will get only one notification through your collector)
-enable collectors
-enable the rule in batch
I have used one part of the save_set MCC_REACH found in note # 28
(noted::mcc-tools)
I not very confident with DCL so if you to improve the procedure ...
Regards
Fabrice.
CREATE DOMAIN MCC_REACH RULE PERTE_ADJACENCE_GLOBALE_ADP -
EXPRESSION = (OCCURS(NODE4 * CIRCUIT * ADJACENT NODE * -
ANY CONFIGURATION EVENTS)) ,-
CATEGORY = "ADJACENCE" ,-
DESCRIPTION = "Cette r�gle d�tecte la perte d'accessibilit� ,-
de ce Node par son routeur d'aire" ,-
ALARM FIRED PROCEDURE = MCC_REACH_dir:ADJACENCE_RULE_FIRED.com ,-
ALARM EXCEPTION PROCEDURE = MCC_COMMON:MCC_ALARMS_MAIL_EXCEPTION.COM ,-
BATCH QUEUE = "ALARMS" ,-
ALARM FIRED PARAMETER = "system" ,-
SEVERITY = Critical
$! Procedure executee en batch sur detection de l'alarme ADAJACENCE_MCC_REACH
$! autorisee sur le DOMAIN MCC_REACH.
$!
$!
$ set noon
$ @mcc_reach_dir:mcc_reach_symbols.com
$ domain_members = "MCC_REACH_DIR:DOMAIN_MEMBERS.IDX"
$ member_excepts = "MCC_REACH_DIR:NONOTIFY_MEMBERS.IDX"
$ set proc/priv=grpnam
$ set def mcc_reach_dir
$ mcc_node = "0"
$! test des parametres
$ data1:='p1
$ data2:='p2
$ data3:='p3
$ data4:='p4
$ data5:='p5
$ data6:='p6
$ data7:='p7
$ data8:='p8
$! P8 contient plus d'infos :
$! translation address --> node name
$! managed object
$! copy 'p8 MCC_REACH_DIR:param8.log
$
$!
$!
$ pid=f$getjpi ("","PID")
$ gosub get_event
$ gosub get_reason
$ gosub get_adjacent_node
$ gosub get_domain
$ gosub send_event
$ goto end
$!
$!.........................................................................
$!
$ GET_EVENT:
$!
$ search/output=osi_event_'pid.tmp 'p8 EVENT_ARGUMENTS:
$ open/read event osi_event_'pid.tmp
$ read/err=end_event_read event event_args
$ END_EVENT_READ:
$ close event
$ event_args = f$edit(event_args,"COMPRESS,TRIM,UPCASE")
$ sh sym event_args
$ delete osi_event_'pid.tmp;
$ return
$!.........................................................................
$!
$ GET_REASON:
$!
$ severity = "CRITICAL"
$ event_reason1 = f$element(2," ",event_args)
$ event_reason2= f$element(3," ",event_args)
$ reason= event_reason1 + " " + event_reason2
$ if f$edit(event_reason2,"UPCASE") .eqs. "UP" then severity = "CLEAR"
$ sh sym severity
$ return
$!
$!.........................................................................
$!
$ GET_ADJACENT_NODE:
$!
$ I=0
$ CHERCHE:
$ if f$element(I," ",event_args) .eqs. " "
$ Then Target="DNA_NODE." + f$element(I-1," ",event_args)
$ sh sym TARGET
$ return
$ else
$ i=I+1
$ goto Cherche
$ endif
$!
$!
$!.........................................................................
$!
$ GET_DOMAIN:
$!
$ open/read members 'domain_members
$ read/key="''TARGET'"/end_of_file=end_domain/err=end_domain members member_line
$ NEXT_DOMAIN_READ:
$ member_line=f$edit(member_line,"COMPRESS,TRIM")
$ sh sym member_line
$ read_object = f$element(0," ",member_line)
$ show sym read_object
$ if f$edit(TARGET,"UPCASE") .nes. f$edit(read_object,"UPCASE") -
then goto end_domain
$ domain=f$element(1," ",member_line)
$ sh sym domain
$ read/end_of_file=end_domain/err=end_domain members member_line
$ goto next_domain_read
$ END_DOMAIN:
$ close members
$ return
$!
$!.........................................................................
$!
$ SEND_EVENT:
$ send_event :== $MCC_SYSTEM:MCC_EVC_SEND.EXE
$ send_event "''mcc_node'" "collecteur_''domain'" -
"NODE4 ''TARGET'" "''P3' " "''reason'" "''severity'"
$ return
$!.........................................................................
$!
$!
$ END:
$ DEL 'P8;
$ purge/keep=10 sys$login:ADJACENCE_RULE_FIRED.log
$ exit
|