Surveillance de la journalisation dans les applications à l'aide des notifications JMX

Les développeurs Java peuvent créer des programmes destinés à surveiller les journaux serveur des applications à l'aide des notifications JMX.

Pourquoi et quand exécuter cette tâche

Les programmes d'écoute des messages des journaux les plus courants sont écrits en Java. Ils se connectent au gestionnaire de déploiement ou à un serveur d'applications à l'aide de SOAP. Cette rubrique permet de générer un client Java qui écoute les événements de journaux.
Remarque : Cette rubrique fait référence à un ou plusieurs des fichiers journaux de serveur d'applications. Il est recommandé de configurer le serveur de telle sorte qu'il utilise l'infrastructure de journalisation et de trace HPEL (High Performance Extensible Logging) à la place des fichiers SystemOut.log, SystemErr.log, trace.log et activity.log sur les systèmes distribués et IBM® i. Vous pouvez également utiliser HPEL conjointement avec vos fonctions de journalisation z/OS natives. Si vous utilisez l'infrastructure HPEL, vous pouvez accéder à toutes les informations de journalisation et de trace en utilisant l'outil de ligne de commande LogViewer à partir de votre répertoire bin de profil de serveur. Pour plus d'informations sur l'utilisation de HPEL, voir les informations sur l'utilisation de HPEL en vue du traitement des incidents liés aux applications.
Eviter les incidents Eviter les incidents: Soyez prudent lorsque vous ajoutez des programmes d'écoute à des serveurs dont le volume de journalisation est élevé, car les notifications JMX risquent de ralentir ces serveurs. gotcha

Procédure

  1. Importez les packages nécessaires. Les instructions d'importation suivantes sont généralement nécessaires au début de votre programme Java :
    import javax.management.Notification;
    import javax.management.NotificationListener;
    import javax.management.ObjectName;
    import javax.management.InstanceNotFoundException;
    import javax.management.MalformedObjectNameException;
    
    import com.ibm.websphere.management.AdminClient;
    import com.ibm.websphere.management.AdminClientFactory;
    import com.ibm.websphere.management.exception.ConnectorException;
    En outre, les instructions d'importation suivantes sont nécessaires pour gérer les messages et les types renvoyés à partir des appels lors des étapes suivantes :
    import java.util.Iterator;
    import java.util.Properties;
    import java.util.Set;
    import com.ibm.websphere.ras.RasMessage; 
  2. Créez une classe Java qui implémente l'interface NotificationListener.
  3. Implémentez la méthode handleNotification. L'exemple suivant illustre l'écriture du texte du message sur la console Java :
    public void handleNotification(Notification notification, Object handback) {
            RasMessage rasMessage = (RasMessage)notification.getUserData() ;
            System.out.println("Localized message: " + rasMessage.getLocalizedMessage(null));
    }
  4. Connectez-vous au port SOAP du serveur dont vous souhaitez surveiller les MBeans JMX. Le code suivant créée un objet AdminClient connecté à SOAP à l'aide d'un hôte et d'un port spécifiés :
            AdminClient adminClient = null ;
            String hostName = "someHostName";
            String soapPort = "8880";
    
            Properties connectProps = new Properties();
            connectProps.setProperty(AdminClient.CONNECTOR_TYPE, "SOAP");
            connectProps.setProperty(AdminClient.CONNECTOR_HOST, hostName);
            connectProps.setProperty(AdminClient.CONNECTOR_PORT, soapPort);
    
            try {
                adminClient = AdminClientFactory.createAdminClient(connectProps);
            } catch (ConnectorException e) {
                // error handling code
            } 
  5. Extrayez le nom d'objet du MBean RasLoggingService. Le code suivant permet d'extraire le nom d'objet du MBean RasLoggingService :
            String queryString = "WebSphere:cell="+cellName+",node="+nodeName+",process="+serverName+",
    type=RasLoggingService,*" ;
            Set<ObjectName> objectMBeans = null;
            try {
                ObjectName queryName = new ObjectName(queryString);
                objectMBeans = (Set<ObjectName>)adminClient.queryNames(queryName, null);
                if (objectMBeans.size() > 1) {
                    // error handling code to deal with the case where we get more than one name returned.
                }
            } catch (MalformedObjectNameException e) {
                // error handling code
            } catch (ConnectorException e) {
                // error handling code
            }
    
            if (objectMBeans.isEmpty()) {
                // error handling code to deal with the case where the MBean is not found
            }
    
            Iterator<ObjectName> objectNames = objectMBeans.iterator() ;
            ObjectName objectName = objectNames.next() ; 
  6. Ajoutez le programme d'écoute de notifications. Cet exemple de code ajoute un programme d'écoute de notifications, attend 60 secondes lors du traitement des notifications, puis supprime le programme d'écoute. Le programme d'écoute peut rester connecté aussi longtemps que nécessaire.
            try {
                adminClient.addNotificationListener(objectName, this, null, null);
                Thread.sleep(60 * 1000) ;
                adminClient.removeNotificationListener(objectName, this) ;
            } catch (InstanceNotFoundException e) {
                // error handling code
            } catch (ConnectorException e) {
                // error handling code
            } catch (Exception e) {
                // error handling code
            }
  7. Ajoutez le fichier jar nécessaire à votre chemin d'accès aux classes. Ajoutez le fichier jar du client d'administration à votre chemin d'accès aux classes pour compiler et exécuter votre code. Le fichier jar du client d'administration se trouve dans le répertoire <racine_install>/runtimes.

Résultats

Vous avez créé un programme Java pouvant écouter les notifications des événements de journal provenant d'un serveur d'applications et exécuter les actions qui en résultent.

Icône indiquant le type de rubrique Rubrique de tâche



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=ttrb_HPELNotification
Nom du fichier : ttrb_HPELNotification.html