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問合せ言語ベースの式で構成された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/1.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}
>= 100
AND
${mydomain:Name=myserver,Type=
ServerRuntime//OpenSocketsCurrentCount} > 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)は、ポリシーのトリガーには影響しませんが、アクションによって伝達されます。
ログ・ポリシーを使用して、サーバー・ログまたはドメイン・ログ内の特定のメッセージまたは文字列の出現をモニターします。このタイプのポリシーは、指定されたデータを含むログ・メッセージが発行されるとトリガーされます。
次の例では、サーバー・ログ・ポリシーのための、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/1.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のインストゥルメンテーション・コンポーネントに由来するイベントをモニターするために使用します。このタイプのポリシーは、イベントがポストされるとトリガーされます。
次の例では、インストゥルメンテーション・ポリシーのための、DIAG_MODULE.xml内の構成を示します。
<watch-notification>
<watch>
<name>myInstWatch</name>
<enabled>true</enabled>
<rule-type>EventData</rule-type>
<rule-expression>
(PAYLOAD > 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>