Enterprise Manager停止時の通知の受信

Enterprise ManagerではManager自体の可用性が監視されます。監視は外部監視スクリプトを管理エージェントで実行することによって行われ、このスクリプトでは管理リポジトリ・データベースおよび管理サービスの可用性が定期的にチェックされます。(管理リポジトリと管理サービスは論理的に結合され、「管理サービスとリポジトリ」ターゲットと呼ばれる1つのターゲットを構成します。)管理リポジトリ・データベースの停止、またはすべての管理サービスの停止が管理エージェントで検出されると、管理者に問題を通知するようカスタマイズ可能なスクリプトが実行されます。管理サービスが停止すると通知メカニズム自体が使用不可になるため、スクリプトはEnterprise Managerの通常の通知メカニズムの外で実行されます。

「管理サービスとリポジトリ」ターゲットの可用性をチェックする管理エージェントは、「監視エージェント」と呼ばれます。ユーザーのEnterprise Managerに対する監視エージェントを、Enterprise Managerコンソールの管理サービスとリポジトリ: 概要ページで参照して決定できます。

「管理サービスとリポジトリ」ターゲットの可用性を判断するため監視エージェントが実行するスクリプトは、(監視エージェントの$Oracle_Home/sysman/admin/scriptsディレクトリ内にある)emrepresp.plです。監視エージェントはこのスクリプトを5分おきに実行します。管理リポジトリ・データベースの停止、またはすべてのOracle Management Serviceの使用不可が検出されると、emrepdown.shという通知スクリプトが実行されます。この通知スクリプトは監視エージェントのOracle_home/binディレクトリにあります。デフォルトでは、通知スクリプトにより、Enterprise Managerが停止中であることを示し、関連するエラー情報を含む電子メールが(mailxにより)送信されます。このemrepdown.shスクリプトは環境に合せてカスタマイズしてください。

電子メール通知の送信のためmailxコマンドをemrepdown.shスクリプトで続けて使用する場合は、必ず適切な電子メール・アドレスを指定します。これらの電子メール・アドレスは、Oracle_home/sysman/config/emd.propertiesファイル(Oracle_homeは監視エージェントのOracleホーム・ディレクトリ)内の次のプロパティで指定されています。

  1. emd_e-mail_address: 電子メール通知の送信先の電子メール・アドレスを指定します。カンマで区切ることによって、複数の電子メール・アドレスを指定できます。
  2. emd_from_e-mail_address: 送信者の電子メール・アドレスを指定します。このプロパティでは任意の有効な電子メール・アドレスを指定します。mailxが使用されるため、スクリプトは特定のプラットフォームのみで動作することに注意してください。具体的には、監視エージェントがSun SPARC Solaris、HP-UX、HP Tru64、Intel Linux、IBM AIX、OSF1のいずれかのプラットフォーム上にある場合にスクリプトが実行されます。

emrepdown.plスクリプトの例

#!/usr/local/bin/perl

#

# insert the commands you wish to execute when eml fails to stay running.

#

#

# Mail to specified user

#

# uncomment out the following lines and specify a valid e-mail address

# in place of nobody@somewhere.nowhere to send the failure e-mail.

# The message text is passed in as the first parameter.

# The subject is passed in as the optional second parameter. Default subject is 'Enterprise Manager is down'

#

 

use strict;

use Oraperl;

use Time::HiRes;

 

require "emd_common.pl";

require "semd_common.pl";

 

sub send_mailx

{

  my $start_time = Time::HiRes::time;

  my $targetname = "$ENV{EM_REPOS_USER}1234";

  my $fn = get_tmp_filename ($targetname, "emrepdown");

  system "date > $fn";

  if(!open(FH, ">>$fn"))

  {

  EMD_PERL_ERROR("Could not open $fn for error messages");

  }

  my $subject="Enterprise Manager is Down";

  if ($#ARGV+1 > 0)

  {

  if ($#ARGV+1 > 1)

  {

  print FH "$ARGV[1]/n";

  print FH "Error message: ";

  print FH "$ARGV[0]/n";

  $subject=$ARGV[1];

  }

  else

  {

  print FH "Enterprise Manager is down./n";

  print FH "Error message: ";

  print FH "$ARGV[0]/n";

  }

  }

  else

  {

  print FH "Enterprise Manager is down./n";

  }

 

  if(!close FH)

  {

  EMD_PERL_ERROR("Could not close $fn");

  }

 

  my $filename="../sysman/config/emd.properties";

  if ( $ENV{EMDROOT} ne "" )

  {

  $filename="$ENV{EMDROOT}/sysman/config/emd.properties";

  }

 

  my $command1="cat $filename | grep -i EMD_EMAIL_ADDRESS= | sed s?EMD_EMAIL_ADDRESS=??i | awk '{print $1}'";

  EMD_PERL_DEBUG ("command1=$command1");

  print STDOUT "command1=$command1";

  my $list=`$command1` or EMD_PERL_ERROR("Could not execute $command1");

  $command1="cat $filename | grep -i EMD_FROM_EMAIL_ADDRESS= | sed s?EMD_FROM_EMAIL_ADDRESS=??i | awk '{print $1}'";

  EMD_PERL_DEBUG ("command1=$command1");

  print STDOUT "command1=$command1";

  my $return=`$command1` or EMD_PERL_ERROR("Could not execute $command1");

  my $out;

  chomp($return);

  chomp($list);

  EMD_PERL_DEBUG ("list=$list");

  EMD_PERL_DEBUG ("return=$return");

 

  if ( "$list" eq "" )

  {

  EMD_PERL_ERROR("e-mail address list is empty");

  }

  else

  {

  if ("$return" eq "" )

  {

  $command1 = "mailx -s /"$subject/" $list /< $fn";

  EMD_PERL_DEBUG ("command1=$command1");

  print STDOUT "command1=$command1";

  system $command1;

  }

  else

  {

  $command1 = "mailx -s /"$subject/" -r $return $list < $fn";

  EMD_PERL_DEBUG ("command1=$command1");

  print STDOUT "command1=$command1";

  system $command1;

  }

  }

  $out = `rm $fn` or EMD_PERL_ERROR("Could not remove file $fn");

}

 

my $platform = get_osType();

if(($platform eq "SOL") ||

  ($platform eq "HP") ||

  ($platform eq "LNX") ||

  ($platform eq "AIX") ||

  ($platform eq "OSF1"))

{

  send_mailx();

}

else

{

  EMD_PERL_ERROR("Platform $platform does not support mailx.");

}

 

電子メール通知の例

サブジェクト: Enterprise Manager is Down

日付: Thu, 18 Jul 2005 07:37:55 -0700 (PDT)

送信元: John Smith <jsmith@jsmith-sun.us.oracle.com>

宛先: john.doe@oracle.com

Thu Jul 18 07:37:55 PDT 2005

Enterprise Manager with repository jdoe-sun:1522:emdw1 is down

エラー・メッセージ:

ORA-01034: Oracleは使用できません。 ORA-27101: 共有メモリー・レルムは存在しません SVR4エラー: 2: 該当するファイルまたはディレクトリがありません(DBD ERROR: OCISessionBegin)

関連トピック

通知について

Enterprise Managerの情報ロードマップ