here's the main chunk of code from the existing script, which is doing the job just fine
while (my($gid,$gname) = each %groups) { if ($debug >= 3) { writeLog("I","Check notification group $gna +me");} ##Create an ARRAY with each filter for each group my @gArray = getFilterGroups($gid); foreach my $fGroup (@gArray) { my %fHash = getFilters($fGroup); my $fullMatch = getEntries($fGroup); if ($debug >=3) { writeLog("I","The filter group ($fGroup) + has $fullMatch entries");} my $count = 0; while (my($slot,$value) = each %fHash) { if ($debug >=3) { writeLog("I","Checking event against + FILTER:$slot=>$value");} my $result = checkEvent($slot,$value); if ($result == 1) { if ($debug >=3) {writeLog("I","Tivoli slot and fil +ter slot information match");} $count++; if ($debug >=4) {writeLog("I","Count is at $count +--> fullMatch is $fullMatch")}; if ($count == $fullMatch) { my @memberList = getMembers($gid); foreach my $member(@memberList) { if ($debug >=2) {writeLog("I","Generating +automated notification to $member");} #notifyLog($member); notify($member); } if ($debug >= 1) { writeLog("I","inserting int +o db log");} dblog($gid); $count = 0; } } } } }
It simply loops through all the groups present in the DB and grabs the filters. It considers a match to be when all the slot/value combination's in the filter DB match with those received from the event.
Events are received from a BMC product called Impact. It has a built-in rules engine and when certain criteria are satisfied we call the PERL script.
Details of the events are passed to the script as environment variables, here's a code snippet,
my $thost = $ENV{mc_host}; my $source = $ENV{source}; my $server_hndl = $ENV{server_handle};
In reply to Re^2: Building a notification system based on MySQL
by shank098
in thread Building a notification system based on MySQL
by shank098
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |