G WLDF問合せ言語ベースのポリシー

WebLogic診断フレームワーク(WLDF)には、ポリシー式を作成するためのWLDF問合せ言語が用意されています。

ノート:

WLDF問合せ言語は、WebLogic Serverバージョン12.2.1以降は非推奨です。かわりに、Java式言語(EL)を使用することをお薦めします。WLDF問合せ言語を使用するポリシー式を含む診断システム・モジュールは、下位互換性のためにサポートされています。ポリシー式でのJava ELの使用方法の詳細は、「ポリシーの構成」を参照してください。

ポリシーのタイプ

WLDFでは、WLDF問合せ言語使用のコンテキスト内で構成できるポリシーがサポートされています。

WLDFでは、ポリシーでモニターする内容に基づいて、3つの主なタイプのポリシーを提供しています。

  • ハーベスタ・ポリシーでは、ローカル・ランタイムMBeanサーバーの収集可能なMBeanのセットをモニターします。

  • ログ・ポリシーでは、サーバー・ログまたはドメイン・ログに生成されるメッセージのセットをモニターします。

  • インストゥルメンテーション(またはイベント・データ)・ポリシーでは、WLDFインストゥルメンテーション・コンポーネントによって生成されるイベントのセットをモニターします。

診断モジュールのWLDFシステム・リソース構成ファイルでは、各ポリシー・タイプは、<watch>の子要素である<rule-type>要素で定義されます。たとえば:

<watch>
   <rule-type>Harvester</rule-type>
   <!-- Other configuration elements -->
</watch>

ルールの種類が異なるポリシーでは、次の2つの点に違いがあります。

  • 監視対象となる条件を指定するためのルール構文。ルール構文は、ルールの種類ごとに異なります。

  • ログ・ポリシーとインストゥルメンテーション・ポリシーはリアルタイムでトリガーされますが、ハーベスタ・ポリシーは、現在の収集サイクルが終了してからトリガーされます。

ポリシーの構成オプション

WLDFには、ポリシーを構成するためのいくつかのツール・オプションが用意されています。

ポリシーの構成オプションの詳細は、「ポリシーの構成方法」を参照してください。

WLDF問合せ言語を使用したハーベスタ・ポリシーの構成

WLDFでは、WLDF問合せ言語ベースの式で構成できる3つの主なタイプのハーベスタ・ポリシーを提供しています。各ポリシー・タイプは、そのポリシーでモニターできる内容に基づきます。

ノート:

ハーベスタがデータを収集しないように構成されているMBean (またはMBean属性)をモニターするようにポリシーを定義している場合、ポリシーは実行されます。ハーベスタは、定義されたポリシー式で設定された要件を満たす値を暗黙的に収集します。ただし、この方法で(つまり、ポリシー用に暗黙的に)収集されたデータはアーカイブされません。メトリック・コレクションのハーベスタの構成を参照してください。

ハーベスタ・ポリシーは、収集サイクルに応じてトリガーされます。そのためハーベスタ・ポリシーの場合、ハーベスタのサンプル期間は、ある状況が識別されてから、アクションによって報告されるまでの間隔を定義します。平均して、この遅延はサンプル期間/2になります。

例G-1に、複数のランタイムMBeanをモニターするハーベスタ・ポリシーの構成例を示します。<rule-expression>要素で定義されたポリシー式がtrueに評価されると、JMX通知、SMTP通知、SNMP通知、イメージ・アクション、およびトピック用とキュー用のJMS通知を生成するために6つの異なるアクションが実行されます。

ポリシーは、4つのハーベスタ変数で構成される論理式です。式の形式は次のとおりです。

( (A >= 100) AND (B > 0) ) OR C OR D.equals("active")

各変数の形式は次のとおりです。

{entityName}//{attributeName}

上の構文では、{entityName}はランタイムMBeanサーバーに登録されているJMXのObjectNameまたはハーベスタで定義されている型名、{attributeName}はそのMBean型に定義されている属性の名前です。

ノート:

比較演算子は、XMLで有効となるように適切な形をとっています。

例G-1 ハーベスタ・ポリシーの構成のサンプル(DIAG_MODULE.xml内)

<wldf-resource xmlns="http://xmlns.oracle.com/weblogic/weblogic-diagnostics" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-diagnostics/2.0/weblogic-diagnostics.xsd">
  <name>mywldf1</name> 
  <harvester>
  <!-- Harvesting does not have to be configured and enabled for harvester
       policies. However, configuring the Harvester can provide advantages;
       for example the data will be archived. -->
    <harvested-type>
      <name>myMBeans.MySimpleStandard</name>
      <harvested-instance>myCustomDomain:Name=myCustomMBean1
      </harvested-instance>
      <harvested-instance>myCustomDomain:Name=myCustomMBean2
      </harvested-instance>
    </harvested-type>
    <!-- Other Harvester configuration elements -->
  </harvester>
  <watch-notification>
    <watch>
      <name>simpleWebLogicMBeanWatchRepeatingAfterWait</name>
      <enabled>true</enabled>
      <rule-type>Harvester</rule-type>
      <rule-expression>
       (${mydomain:Name=WLDFHarvesterRuntime,ServerRuntime=myserver,Type=
       WLDFHarvesterRuntime,WLDFRuntime=WLDFRuntime//TotalSamplingTime}
          &gt;= 100
           AND
          ${mydomain:Name=myserver,Type=
                   ServerRuntime//OpenSocketsCurrentCount} &gt; 0)
           OR
         ${mydomain:Name=WLDFWatchNotificationRuntime,ServerRuntime=
             myserver,Type=WLDFWatchNotificationRuntime,
               WLDFRuntime=WLDFRuntime//Enabled} = true
           OR
         ${myCustomDomain:Name=myCustomMBean3//State} =
                 'active')
      </rule-expression>
      <severity>Warning</severity>
      <alarm-type>AutomaticReset</alarm-type>
      <alarm-reset-period>10000</alarm-reset-period>
      <notification>myJMXNotif,myImageNotif,
         myJMSTopicNotif,myJMSQueueNotif,mySNMPNotif,
         mySMTPNotif</notification>
    </watch>
    <!-- Other policy-action configuration elements -->
  </watch-notification>
</wldf-resource>

このポリシーでは、AutomaticResetタイプのアラームを使用しています。つまり、最後に起動されたときからの時間が、アラーム・リセット期間として設定された間隔(この場合10000ミリ秒)よりも長くなると、繰返しトリガーされる可能性があります。

指定された重大度レベル(Warning)は、ポリシーのトリガーには影響しませんが、アクションによって伝達されます。

WLDF問合せ言語を使用したログ・ポリシーの構成

ログ・ポリシーを使用して、サーバー・ログまたはドメイン・ログ内の特定のメッセージまたは文字列の出現をモニターします。このタイプのポリシーは、指定されたデータを含むログ・メッセージが発行されるとトリガーされます。

次の例では、サーバー・ログ・ポリシーのための、DIAG_MODULE.xml内の構成を示します。

<wldf-resource xmlns="http://xmlns.oracle.com/weblogic/weblogic-diagnostics" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-diagnostics/2.0/weblogic-diagnostics.xsd"> 
  <name>mywldf1</name> 
  <watch-notification> 
    <enabled>true</enabled> 
    <log-watch-severity>Info</log-watch-severity> 
    <watch> 
      <name>myLogWatch</name> 
      <rule-type>Log</rule-type> 
      <rule-expression>MSGID='BEA-000360'</rule-expression> 
      <severity>Info</severity> 
      <notification>myMailNotif2</notification> 
    </watch>
    <smtp-notification> 
      <name>myMailNotif2</name> 
      <enabled>true</enabled> 
      <mail-session-jndi-name>myMailSession</mail-session-jndi-name> 
      <subject>This is a log alert</subject> 
      <recipient>username@emailservice.com</recipient> 
    </smtp-notification> 
  </watch-notification> 
</wldf-resource> 

上の例では、<rule-type>がLogであるため、サーバー・ログに書き込まれたメッセージまたは文字列が監視されます。<rule-type>がDomainLogであるため、ドメイン・ログ内のメッセージまたは文字列がモニターされます。

WLDF問合せ言語を使用したインストゥルメンテーション・ポリシーの構成

インストゥルメンテーション・ポリシーは、WLDFのインストゥルメンテーション・コンポーネントに由来するイベントをモニターするために使用します。このタイプのポリシーは、イベントがポストされるとトリガーされます。

次の例では、インストゥルメンテーション・ポリシーのための、DIAG_MODULE.xml内の構成を示します。

<watch-notification>
    <watch>
    <name>myInstWatch</name>
    <enabled>true</enabled>
    <rule-type>EventData</rule-type>
    <rule-expression>
      (PAYLOAD &gt; 100000000) AND (MONITOR = 'Servlet_Around_Service')
    </rule-expression>
    <alarm-type xsi:nil="true"></alarm-type>
    <notification>mySMTPNotification</notification>
  </watch>
  <smtp-notification>
    <name>mySMTPNotification</name>
    <enabled>true</enabled>
    <mail-session-jndi-name>myMailSession</mail-session-jndi-name>
    <subject xsi:nil="true"></subject>
    <body xsi:nil="true"></body>
    <recipient>username@emailservice.com</recipient>
  </smtp-notification>
</watch-notification>