StatsFactory を使用したカスタム PMI の作成

カスタム統計を更新するために、 Stats/PMI (Performance Monitoring Infrastructure) テンプレート、リソース・バンドル、Stats/PMI モジュールおよびメソッドにより定義された メソッドを呼び出すようにアプリケーションを変更することができます。

このタスクについて

カスタム統計を更新するために、 Stats/PMI テンプレート、リソース・バンドル、Stats/PMI モジュールおよびメソッドにより定義された メソッドを呼び出すようにアプリケーションを変更することができます。カスタム PMI を使用してコンポーネントを実装するには、 以下のプロセスが必要です。
  • Stats/PMI テンプレート (xml ファイル) を定義します。
  • リソース・バンドル (properties ファイル) を定義します。
  • StatsFactory を使用して Stats/PMI モジュールを定義し、Stats/PMI オブジェクトを作成します。
  • カスタム統計を更新するためにアプリケーションが使用するメソッドを定義します。
  • アプリケーションを変更し、前のステップで定義されたメソッドが適切に呼び出されるようにします。
  • アプリケーションにアクセスします。
  • Tivoli Performance Viewer (TPV) に接続し、カスタム PMI 統計を表示します。

手順

  1. Stats/PMI テンプレートを定義します。 StatsFactory はランタイム・コンポーネントが XML テンプレートを使用して カスタム Stats/PMI モジュールを作成できるようにします。 テンプレートは DTD com/ibm/websphere/pmi/xml/stats.dtd に従う必要があります。 以下は、サンプル・アプリケーションで使われるテンプレートの例です。
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE Stats SYSTEM "stats.dtd">
    
    <Stats type="com.stats.MyStats">
       <description>MyStats.desc</description>
       <resourceBundle>com.stats.MyStatsResourceBundle</resourceBundle>
    
      <CountStatistic ID="1" name="MyStats.NumRequests">
        <level>low</level>
        <unit>MyStats.unit.none</unit>
        <description>MyStats.NumRequests.desc</description>   
        <statisticSet>basic</statisticSet>             
      </CountStatistic>
    
      <BoundedRangeStatistic ID="2" name="MyStats.expensiveStat ">
        <level>high</level>
        <unit>MyStats.unit.none</unit>
        <description>MyStats.expensiveStat.desc</description>
        <updateOnRequest>true</updateOnRequest>        
      </BoundedRangeStatistic>    
    </Stats>
  2. リソース・バンドルを定義します。 リソース・バンドルは、適切な言語/言い回しで統計の名前と説明を定義できるようにします。 以下は、リソース・バンドルの例です。
    MyStats.desc=My View PMI Module
    
    MyStats.NumRequests=Request Count
    MyStats.NumRequests.desc=Total number of My view requests served. 
    MyStats.unit.none=None
    
    MyStats.expensiveStat = Expensive Stat
    MyStats. expensiveStat.desc = Number of Expensive stats 
    
    MyStats.Group= My Group
    MyStats.Instance=My Instance 
  3. StatsFactory を使用して Stats/PMI モジュールを定義し、Stats/PMI オブジェクトを作成します。
    1. StatisticActions を拡張するクラスを作成します。
      public class MyStatisticsModule extends StatisticActions 
    2. タイプ SPI* のカウント変数を宣言します。(SPICountStatistc および SPIBoundedRangeStatistic など)
      private SPICountStatistic           numReqs;
      		private SPIBoundedRangeStatistic    expensiveStat;
    3. タイプ StatsGroup の StatsGroup およびタイプ StatsInstance の StatsInstance を作成します。
      private static StatsGroup stocksStatisticsGroup = null;
      		private StatsInstance stocksStatistics = null;
      
      MyStatisticsGroup = StatsFactory.createStatsGroup("MyStats.Group", template, null);
      MyStatistics = StatsFactory.createStatsInstance("MyStats.Instance”,MyStatisticGroup,null,this);
      ここで、template は、xml ファイルが存在する場所のアプリケーション内のパスです。 以下に例を示します。
      String template = "/com/stats/MyStats.xml";
  4. StatsInstance 内に統計が作成されると、Stats インスタンス内に統計が作成されたことを示すために statisticCreated が呼び出されます。 上記で宣言した統計を、適切な統計に割り当てることができます。
    public void statisticCreated (SPIStatistic s) {
      // Called when the Statistics are created in the Stats Instance
    
      	if (s.getId() == MyStats.NUMREQS)
      {
        	numReqs = (SPICountStatistic)s;	   // Assign Statistic 
      }
    }
  5. カスタム統計を更新するためにアプリケーションが使用するメソッドを定義します。
    public void onRequestArrival(){
      if (numReqs != null)
      {
        numReqs.increment();   // Increment/Decrement Statistic as per Req
      }
    }
  6. クライアントまたは任意のその他のモニター・アプリケーションによる特定の要求に応じて統計を更新するために、updateStaisticRequest メソッドを実装することもできます。
    public void updateStatisticOnRequest (int dataId) {
      if (dataId == MyStats.expensiveStat)
      {
        		expensiveStat.set(xxxxx);        
      }
    }	
    上記の例で、dataId は更新される統計の ID です。
  7. メソッド (前のステップで定義済み) を適切に呼び出すために、アプリケーションを更新します。
  8. アプリケーションにアクセスします。
  9. Tivoli Performance Viewer に接続し、カスタム PMI 統計を表示します。
    トラブルの回避 (Avoid trouble) トラブルの回避 (Avoid trouble): Network Deployment 環境にカスタム PMI が実装されている 場合は、Stats/PMI xml ファイルおよびリソース・バンドル・プロパティー・ファイルが WebSphere Application Server クラス・ローダー には可視ではないために、カスタム PMI カウンターを表示できないことがあります。Stats/PMI.xml ファイル およびリソース・バンドル・プロパティー・ファイルは、アプリケーション内部に あります。カスタム PMI カウンターを表示できるようにするには、 Stats/PMI.xml ファイルおよびリソース・バンドル・プロパティー・ファイル をクラスパスに置く必要があります。
    Stats/PMI.xml ファイルおよびリソース・バンドル・プロパティー・ファイル の以下のファイル構造で jar を作成し、これらのファイルを WAS_HOME¥lib¥ext フォルダーに入れることによって、 カスタム PMI カウンターを可視にします。 そうすると、カスタム PMI カウンターは、クラス・ローダーに対して可視になります。
    com/ibm/app/temp/tempstats.xml        --- path of the Stats/PMI.xml
    com/ibm/app/temp/resourcebundle.props --- path of the resource bundle property file
    gotcha

トピックのタイプを示すアイコン タスク・トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tprf_stats_pmi
ファイル名:tprf_stats_pmi.html