Informations de référence décrivant le code généré par Agent Builder et le code que vous devez ajouter ou remplacer pour les ressources à surveiller.
Lorsque vous créez un agent avec une ou plusieurs sources de données d'interface de programme d'application Java™, Agent Builder génère le code source de l'application Java. Ce code est généré dans le projet de l'agent et suit la structure de ce dernier. Vous devez ajouter votre propre code Java à l'application générée. Il collecte des données pour des groupes d'attributs échantillonnés, gère les événements à envoyer à des groupes d'attributs basés sur des événements, signale les incidents détectés, et exécute les tâches. L'application générée fournit des données à l'agent mais il s'agit d'échantillons à remplacer par les données issues des ressources à surveiller.

L'application Java générée sépare, dans une proportion importante, le code qui sert d'interface avec l'agent du code d'interface avec les ressources surveillées. Il contient des fichiers que vous modifiez et d'autres que vous ne modifiez pas.
Agent Builder n'écrase jamais les classes que vous pouvez modifier. Il se contente de les créer si elles n'existent pas.
Les classes auxiliaires et l'interface sont écrasées à chaque sauvegarde d'Agent Builder. A mesure que vous modifiez et sauvegardez l'agent, les classes auxiliaires sont mises à jour afin de refléter tous les changements structurels apportés aux groupes d'attributs de l'API Java. L'interface et les classes auxiliaires contiennent un avertissement dans leur en-tête pour vous rappeler que vous devez modifier le fichier.
La méthode principale de la classe MainClass est appelée au démarrage de l'agent. Elle crée une instance MainClass puis lance la méthode à exécution longue pour recevoir et gérer les requêtes d'agent.
La majeure partie du code d'initialisation et de nettoyage doit être ajoutée à MainClass. Dans le constructeur, ajoutez le code d'initialisation requis pour créer vos ressources ou y accéder. Vous pouvez, si vous le souhaitez, ouvrir des connexions à des ressources distantes, créer des descripteurs ou initialiser des structures de données.
Avant l'arrêt de l'agent, la méthode stopDataCollection est appelée. Si vous devez fermer des connexions ou effectuer un nettoyage avant l'arrêt de l'application Java, ajoutez ce code à la méthode stopDataCollection.
Si une initialisation n'est requise que pour un groupe d'attributs particulier, vous pouvez ajouter cette initialisation au constructeur de la classe du groupe d'attributs. De même, si un nettoyage n'est requis que pour un groupe d'attributs particulier, vous pouvez ajouter ce code de nettoyage à la méthode stopDataCollection du groupe d'attributs.
Tout code de l'application Java peut utiliser l'objet consignateur pour inscrire des entrées de journal. (La classe auxiliaire principale crée un objet consignateur protégé dans son constructeur. Les objets auxiliaires de groupe d'attributs créent une référence protégée à ce consignateur dans leurs constructeurs). L'objet consignateur fait appel à l'utilitaire de consignation de trace de Java. Des informations détaillées relatives aux erreurs et aux traces sont accessibles dans le journal de trace que crée le consignateur. Ces informations sont essentielles pour l'identification des incidents avec le fournisseur.
Lors de l'appel de stopDataCollection, si vous transmettez la tâche de nettoyage à une autre unité d'exécution, attendez que cette unité d'exécution soit terminée avant le retour à la méthode stopDataCollection. Sinon, la tâche de nettoyage risque de s'arrêter brutalement lors de l'arrêt du processus suite à la fin de l'unité d'exécution.
| Niveau de trace configuré | Niveau de trace de consignation Java | Description |
|---|---|---|
| Arrêt | HORS FONCTION | Pas de consignation. |
| Erreur | GRAVE | Suivi des problèmes survenus dans l'application Java. |
| Avertissement | WARNING | Suivi des erreurs et des erreurs potentielles. |
| Informations | INFORMATION | Suivi des informations importantes concernant l'application Java. |
| Débogage minimum | FIN | Suivi des détails de niveau supérieur nécessaires à l'analyse du comportement de l'application Java. |
| Débogage moyen | PLUS FIN | Suivi des détails relatifs au flux du programme de l'application Java. |
| Débogage maximum | TRES FIN | Suivi de tous les détails concernant l'application Java. |
| Tous | TOUS | Suivi de tous les messages. |
La classe d'un groupe d'attributs échantillonnés (qui collecte une ou plusieurs lignes de données) contient une méthode collectData, par exemple Sampled_Data.collectData. Cette méthode est appelée chaque fois que l'agent demande des données.
| Type Tivoli Monitoring | Type de données de la zone d'attribut |
|---|---|
| Chaîne | Chaîne |
| Numérique, 32 bits, sans ajustement décimal | entier |
| Numérique, 64 bits, sans ajustement décimal | long |
| Numérique, ajustement décimal différent de zéro | double |
| Horodatage | Planification calendaire |
Vous devez collecter les données à partir de votre ressource (étape 1), en remplaçant les données échantillonnées utilisées dans l'application générée.
Pour renseigner l'objet Attributs, vous pouvez transmettre les données à l'aide du constructeur d'attributs (comme dans l'application générée). Vous pouvez également utiliser le constructeur à zéro argument pour créer un objet Attributs puis affecter les zones de l'objet aux valeurs d'attribut collectées. Les zones portent le même nom que les attributs, mais commencent par une lettre en minuscule.
Lorsqu'un groupe d'attributs échantillonnés se trouve dans un sous-noeud, il est probable que vous surveilliez plusieurs ressources (une pour chaque sous-noeud). Vous devez déterminer les ressources à partir desquelles les données doivent être collectées. Une ou plusieurs propriétés de configuration doivent identifier la ressource surveillée.
Cet exemple part du principe qu'une propriété de configuration, K91_INSTANCE_KEY, contient une valeur qui identifie la ressource à partir de laquelle collecter des données.
Vous pouvez également exécuter cette procédure dans le constructeur de classe de groupe d'attributs et effectuer un mappage direct de l'ID instance sur la ressource. Le constructeur Sampled_Subnode est un exemple de constructeur de classe de groupe d'attributs. Cette procédure vous donne également la possibilité de créer des descripteurs ou d'ouvrir des connexions qui peuvent être utilisés dans toute la durée de vie de l'agent. La création de descripteurs ou l'ouverture de connexions peut optimiser l'accès à vos ressources.
Le code généré crée des exemples d'objet ressource de type MonitoredEntity dans le constructeur et les ajoute dans une mappe configurationLookup. Vous devez supprimer la classe interne MonitoredEntity et remplacer les objets MonitoredEntity qui accèdent à vos propres ressources. Si vous choisissez d'effectuer intégralement la procédure de recherche dans la méthode collectData, vous pouvez supprimer la mappe configurationLookup de la classe.
Une propriété de sous-noeud est choisie arbitrairement dans l'exemple d'Agent Builder, iciK91_INSTANCE_KEY. Si la propriété est incorrecte, ou si plusieurs propriétés sont nécessaires pour identifier la ressource adéquate, vous devez choisir les propriétés correctes pour identifier la ressource.
Pour les groupes d'attributs qui génèrent des événements, la méthode collectData n'est pas appelée régulièrement. Votre application envoie des événements à mesure que la ressource les transmet.
Lorsqu'un événement est détecté pour un groupe d'attributs de sous-noeud, l'application Java doit envoyer l'événement au sous-noeud approprié.
Les commandes Action sont définies dans Tivoli Enterprise Portal ou à l'aide de la commande tacmd createaction. Les actions peuvent être importées dans le projet Agent Builder de l'agent de sorte qu'elles sont créées lors de l'installation de l'agent. Pour plus d'informations sur l'importation des commandes Action, voir (Importation des fichiers de prise en charge de l'application).
L'application Java générée s'enregistre pour toutes les actions qui commencent par le code produit de l'agent, par exemple, K91Refresh. Cet enregistrement s'effectue dans la classe auxiliaire principale (MainClassBase) à partir de la méthode registerActionPrefix. Si vous souhaitez enregistrer d'autres préfixes ou ne pas vous enregistrer du tout pour les actions, redéfinissez registerActionPrefix dans (MainClassBase).
Lorsque l'agent doit exécuter une action qui commence par un préfixe que votre agent a enregistré, la méthode MainClass.takeAction est appelée. Ajoutez du code pour appeler Request.getAction(), effectuez l'action appropriée, puis appelez AgentConnection.sendActionReturnCode pour envoyer le code retour de votre action. Le code retour 0 indique que l'action a abouti, tout autre code retour indique que l'action a échoué.
Les méthodes collectData et takeAction peuvent émettre n'importe quelle exception Java, vous pouvez donc autoriser votre code de collecte à émettre des exceptions sans les intercepter. La méthode handleException (pour collectData) ou la méthode handleActionException (pour takeAction) est appelée lorsque la classe auxiliaire reçoit l'exception.
Pour les exceptions collectData, vous devez appeler AgentConnection.sendError lorsqu'une exception se produit ou en cas de problème de collecte de données. L'application générée transmet un code d'erreur GENERAL_ERROR. Vous devez toutefois remplacer ce code d'erreur par un code défini par votre agent et qui décrit mieux l'incident qui s'est produit. Pour plus d'informations sur l'ajout de codes d'erreur, voir l'étape (13).
Pour les exceptions takeAction, vous devez appeler AgentConnection.sendActionReturnCode avec un code retour différent de zéro.
En réponse à une exception ou à toute autre erreur liée aux ressources, un code d'erreur est généralement transmis à l'agent par appel de la méthode AgentConnection.sendError. Une erreur liée à un groupe d'attributs basé sur des événements peut être envoyée à tout moment. Une erreur liée à un groupe d'attributs échantillonnés ne peut être envoyée qu'en réponse à une demande de collecte de données et à la place d'un appel sendData.
| Code d'erreur | Description |
|---|---|
| NO_ERROR | Indique que le groupe d'attributs ne présente pas de problèmes. |
| NO_INSTANCES_RETURNED | L'application Java a répondu à une demande de collecte de données mais n'a fourni aucune donnée. Le fait de ne pas fournir de données ne constitue pas une erreur. Cela indique généralement qu'il n'existe aucune instance de la ressource que surveille le groupe d'attributs. |
| OBJECT_NOT_FOUND | L'agent a tenté de collecter des données pour un groupe d'attributs qui n'est pas enregistré via l'API client. Cette erreur peut signifier que l'application n'a pas réussi à démarrer ou n'a pas initié l'enregistrement du groupe d'attributs au moment où l'agent a tenté de collecter des données. |
| OBJECT_CURRENTLY_UNAVAILABLE | L'application a envoyé à l'agent un code d'erreur non défini dans la liste globale des codes d'erreur. |
| GENERAL_ERROR | Un incident s'est produit lors de la collecte de données à partir de l'application, généralement parce que l'application n'a pas répondu à la requête dans le délai imparti. Consultez le journal de trace de l'agent pour plus de détails. L'application peut également spécifier GENERAL_ERROR comme code d'erreur, mais il est préférable de définir un code d'erreur plus détaillé. |
Certains des changements apportés à l'agent nécessitent les changements correspondants au niveau de l'application Java. Si les changements structurels sont complexes, vous pouvez supprimer certains ou la totalité des fichiers source Java avant de sauvegarder l'agent. Vous pouvez également supprimer les fichiers si vous souhaitez recommencer sans les personnalisations que vous avez apportées.
| Changement au niveau de l'agent | Action d'Agent Builder | Modifications manuelles nécessaires au niveau du source Java |
|---|---|---|
| Changement du nom du package de la classe principale |
|
|
| Changement du nom de la classe principale |
|
|
| Ajout d'un groupe d'attributs de l'API Java |
|
Remplacez l'exemple de code par la logique personnalisée dans la classe du groupe d'attributs. |
| Suppression d'un groupe d'attributs de l'API Java | Supprime l'enregistrement de la classe auxiliaire principale. |
|
| Changement de nom d'un groupe d'attributs de l'API Java |
|
|
| Ajout d'un attribut à un groupe d'attributs de l'API Java | Met à jour la classe interne Attributs dans la classe auxiliaire du groupe d'attributs. | Collectez des données pour le nouvel attribut dans la classe du groupe d'attributs. |
| Suppression d'un attribut d'un groupe d'attributs de l'API Java | Met à jour la classe Attributs dans la classe auxiliaire du groupe d'attributs. | Supprimez la collecte de données de l'ancien attribut dans la classe du groupe d'attributs. |
| Changement du nom d'un attribut d'un groupe d'attributs de l'API Java | Met à jour le nom d'attribut de la classe Attributs dans la classe auxiliaire du groupe d'attributs. | Mettez à jour toutes les références au nom de l'attribut dans la classe Attributs (généralement, ces références n'existent pas du fait de l'utilisation du constructeur d'attributs, avec arguments positionnels). |
| Réorganisation des attributs d'un groupe d'attributs de l'API Java | Met à jour l'ordre des attributs dans la classe Attributs dans la classe auxiliaire du groupe d'attributs. | Mettez à jour l'ordre des arguments dans tous les appels au constructeur d'attributs. |
L'interface de programme d'application Java est utilisée dans l'ensemble de l'application Java générée pour communiquer avec l'agent. Le plus souvent, votre seule interaction directe avec l'API Java consiste à modifier un paramètre d'un appel de méthode existant. Par exemple, la modification d'un code d'erreur GENERAL_ERROR envoyé par un code d'erreur défini dans votre agent.
Les classes de l'interface de programme d'application Java figurent dans le fichier cpci.jar. Le fichier cpci.jar est automatiquement ajouté au chemin de génération Java du projet lorsqu'un agent qui contient un groupe d'attributs d'interface de programme d'application Java est créé. Ce fichier est également ajouté lors de l'importation d'un agent contenant un groupe d'attributs de l'API Java, et lorsqu'un groupe d'attributs de l'API Java est ajouté à un agent existant. Le fichier cpci.jar est également automatiquement ajouté à chaque agent contenant un groupe d'attributs d'interface de programme d'application Java et au chemin CLASSPATH de l'application Java.