Puede actualizar la aplicación para que llame a los métodos definidos utilizando una plantilla Stats/PMI (Performance Monitoring Infrastructure), un paquete de recursos, un módulo Stats/PMI y métodos para actualizar las estadísticas personalizadas.
Acerca de esta tarea
Puede actualizar la aplicación para que llame a los métodos definidos utilizando una plantilla Stats/PMI, un paquete de recursos, un módulo Stats/PMI y métodos para actualizar las estadísticas personalizadas. El proceso siguiente es necesario para instrumentar un componente utilizando una PMI personalizada:
- Defina una plantilla Stats/PMI (archivo xml).
- Defina un paquete de recursos (archivo de propiedades).
- Defina un módulo Stats/PMI y crea un objeto Stats/PMI utilizando StatsFactory.
- Defina los métodos que utilizará la aplicación para actualizar las estadísticas personalizadas.
- Actualice la aplicación para que llame a métodos (definidos en el paso anterior) correctamente.
- Acceda a la aplicación.
- Conéctese a Tivoli Performance Viewer (TPV) y consulte las estadísticas de la PMI personalizada.
Procedimiento
- Defina la plantilla Stats/PMI. StatsFactory
permite que un componente de ejecución crea un módulo Stats/PMI personalizado mediante una plantilla XML. La plantilla debería seguir la DTD com/ibm/websphere/pmi/xml/stats.dtd.
A continuación se muestra un ejemplo de una plantilla utilizada en una aplicación de muestra.
<?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>
- Defina el paquete de recursos El paquete de recursos le permite definir el nombre de las estadísticas y su descripción en el texto/idioma adecuados. A continuación se muestra un paquete de recursos de ejemplo:
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
- Defina un módulo Stats/PMI y crea un objeto Stats/PMI utilizando StatsFactory.
- Crea una clase que amplíe StatisticActions
public class MyStatisticsModule extends StatisticActions
- Declare las variables de recuento del tipo SPI*, por ejemplo SPICountStatistc y SPIBoundedRangeStatistic.
private SPICountStatistic numReqs;
private SPIBoundedRangeStatistic expensiveStat;
- Cree un grupo de estadísticas del tipo StatsGroup y una instancia de estadísticas del tipo
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);
La
plantilla (template) es la vía de acceso a la aplicación donde se encuentra el archivo xml; por ejemplo:
String template = "/com/stats/MyStats.xml";
- Una vez que se hayan creado las estadísticas en la instancia de estadísticas, se llama a statisticCreated para indicar que se ha creado una estadística en la instancia de estadísticas (Stats).
Puede asignar estadísticas citadas anteriormente a la estadística adecuada; por ejemplo:
public void statisticCreated (SPIStatistic s) {
// Se llama cuando se crean estadísticas en la instancia de estadísticas
if (s.getId() == MyStats.NUMREQS)
{
numReqs = (SPICountStatistic)s; // Asignar estadísticas
}
}
- Defina los métodos que utilizará la aplicación para actualizar las estadísticas personalizadas.
public void onRequestArrival(){
if (numReqs != null)
{
numReqs.increment(); // Aumentar/reducir estadísticas por solicitud
}
}
- También puede implementar el método updateStaisticRequest para actualizar las estadísticas de una solicitud concreta que haya realizado un cliente o cualquier otra aplicación de supervisión.
public void updateStatisticOnRequest (int dataId) {
if (dataId == MyStats.expensiveStat)
{
expensiveStat.set(xxxxx);
}
}
En el ejemplo anterior, dataId sería el ID de las estadísticas que se actualizarán.
- Actualice la aplicación para que llame a métodos (definidos en los pasos anteriores) correctamente.
- Acceda a la aplicación.
- Conéctese a Tivoli Performance Viewer y consulte las estadísticas de la PMI personalizada.
Avoid trouble: Cuando un PMI personalizado se implementa en un entorno de despliegue de red, es posible que no pueda ver los contadores de PMI personalizados porque el archivo Stats/PMI xml y el archivo de propiedades de paquete de recursos no son visibles para el cargador de clases de WebSphere Application Server. El archivo Stats/PMI.xml y el archivo de propiedades de paquete de recursos están presentes dentro de la aplicación. Para poder ver los contadores de PMI personalizados, debe colocar el archivo Stats/PMI.xml y el archivo de propiedades de paquete de recursos en la vía de acceso de clase.
Puede hacer que los contadores de PMI personalizados sean visibles mediante creando un archivo jar con la estructura de archivos siguiente del archivo Stats/PMI.xml y el archivo de propiedades de paquete de recursos y colocándolos en la carpeta
WAS_HOME\lib\ext . A continuación, los contadores de PMI personalizados están visibles para el cargador de clases.
com/ibm/app/temp/tempstats.xml --- vía de acceso al archivo Stats/PMI.xml
com/ibm/app/temp/resourcebundle.props --- vía de acceso al archivo de propiedades del paquete de recursos
gotcha