Skip to content

Instantly share code, notes, and snippets.

@erickedji
Created April 10, 2009 19:56
Show Gist options
  • Select an option

  • Save erickedji/93264 to your computer and use it in GitHub Desktop.

Select an option

Save erickedji/93264 to your computer and use it in GitHub Desktop.
Mule plugin for HypericHQ
<?xml version="1.0"?>
<!DOCTYPE plugin [
<!ENTITY process-metrics SYSTEM "/pdk/plugins/process-metrics.xml">]
>
<!--
Plugin Hyperic pour la découverte automatique et l'exposition de statistiques sur les serveurs Mule
Eric KEDJI <eric.kedji@gmail.com>
NEOXIA Maroc
TODO: Ajouter les descriptions aux différentes propriétés (affichées dans l'UI de HypericHQ)
-->
<plugin package="org.hyperic.hq.plugin.mule" name="mule">
<classpath>
<include name="pdk/lib/mx4j"/>
</classpath>
<filter name="template" value="${OBJECT_NAME}:${alias}"/>
<server name="Mule" version="2.2.0">
<config>
<option name="jmx.url" description="URL JMX du MBeanServer" default="service:jmx:rmi:///jndi/rmi://localhost:1099/server"/>
<option name="jmx.username" description="Utilisateur JMX" optional="true" default=""/>
<option name="jmx.password" description="Mot de passe JMX" optional="true" default="" type="secret"/>
<!--
Surveiller le processus lancé avec l'exécutable `javaw' et contenant
l'argument de ligne de commande `mule' (c'est ainsi qu'eclipse lance
Mule).
-->
<option name="process.query" description="PTQL for Java Process" default="State.Name.sw=java,Args.*.ct=mule"/>
<!-- Domaine JMX associé à votre serveur Mule. Disponible dans la console MX4J de Mule,
définissable dans conf/wrapper.conf et sur la ligne de commande -->
<option name="domain" description="Server ID" default="Mule.SOAInternshipMuleServer"/>
</config>
<property name="HAS_BUILTIN_SERVICES" value="true"/>
<!-- Sur la ligne de commande de lancement effectif de Mule, la propriété
'mule.home' est définie, et a pour valeur le répertoire d'installation du
serveur Mule. La ligne suivante permet à Hyperic de lire cette valeur.
-->
<property name="PROC_HOME_PROPERTY" value="mule.home"/>
<!-- Insertion des plugins génériques de détection, mesure, contrôle et suivi de configuration/log pour JMX -->
<plugin type="autoinventory" class="org.hyperic.hq.product.jmx.MxServerDetector"/>
<plugin type="measurement" class="org.hyperic.hq.product.jmx.MxMeasurementPlugin"/>
<plugin type="control" class="org.hyperic.hq.product.jmx.MxControlPlugin"/>
<plugin type="log_track" class="org.hyperic.hq.product.Log4JLogTrackPlugin"/>
<property name="DEFAULT_LOG_FILE" value="logs/mule.log"/>
<plugin type="config_track" class="org.hyperic.hq.product.ConfigFileTrackPlugin"/>
<property name="DEFAULT_CONFIG_FILE" value="conf/log4j.properties,conf/wrapper.conf"/>
<!-- Information générales sur le serveur -->
<property name="OBJECT_NAME" value="%domain%:type=org.mule.MuleContext,name=MuleServerInfo"/>
<properties>
<property name="MaxMemory"/>
<property name="OsVersion"/>
<property name="ServerId"/>
<property name="StartTime"/>
<property name="Stopped"/>
<property name="Vendor"/>
<property name="Version"/>
<property name="Copyright"/>
<property name="Version"/>
<property name="BuildDate"/>
<property name="BuildNumber"/>
<property name="ConfigBuilderClassName"/>
<property name="Copyright"/>
<property name="FreeMemory"/>
<property name="HostIp"/>
<property name="Hostname"/>
<property name="Initialised"/>
<property name="InstanceId"/>
<property name="JdkVersion"/>
</properties>
<!-- Options de configuration générale du serveur Mule -->
<service name="Options de configuration globale">
<property name="OBJECT_NAME" value="%domain%:type=org.mule.Configuration,name=GlobalConfiguration"/>
<properties>
<property name="Encoding"/>
<property name="Synchronous"/>
<property name="SynchronousEventTimeout"/>
<property name="TransactionTimeout"/>
<property name="WorkingDirectory"/>
</properties>
</service>
<!-- Statistiques globales du serveur Mule -->
<service name="Statistiques globales">
<property name="OBJECT_NAME" value="%domain%:type=org.mule.Statistics,name=AllStatistics"/>
<properties>
<property name="Encoding"/>
<property name="Synchronous"/>
<property name="SynchronousEventTimeout"/>
<property name="TransactionTimeout"/>
<property name="WorkingDirectory"/>
</properties>
<metric name="Enabled" template="${OBJECT_NAME}:Enabled" indicator="true"/>
</service>
<metric name="Availability" template="sigar:Type=ProcState,Arg=%process.query%:State" indicator="true"/>
&process-metrics;
<!-- Métriques relatives aux modèles Mule -->
<service name="Modèles">
<property name="OBJECT_NAME" value="%domain%:type=org.mule.Model,name=*"/>
<property name="AUTOINVENTORY_NAME" value="Modèle %name%"/>
<plugin type="autoinventory"/>
<properties>
<property name="Name" />
<property name="Type" />
</properties>
<actions include="start,stop"/>
</service>
<!-- Métriques relatives à la diffusion de notifications Mule -->
<service name="Diffuseur de notifications">
<property name="OBJECT_NAME" value="%domain%:type=org.mule.Notification,name=MuleNotificationBroadcaster"/>
<properties>
<property name="NotificationInfo" />
</properties>
<!-- Ces actions attendents des paramètres, à fournir à partir de l'interface HypericHQ -->
<actions include="removeNotificationListener,removeNotificationListener,addNotificationListener"/>
</service>
<!-- Métriques relatives à la réception de notifications Mule -->
<service name="Ecouteur de notifications">
<property name="OBJECT_NAME" value="%domain%:type=org.mule.Notification,name=MuleNotificationListener"/>
<properties>
<property name="NotificationsList" />
<property name="ListSize" />
</properties>
</service>
<!-- Métriques relatives aux points d'entrée de services -->
<service name="Points d'entrée/sortie">
<property name="OBJECT_NAME" value="%domain%:type=org.mule.Endpoint,service=*,name=*"/>
<property name="AUTOINVENTORY_NAME" value="Point d'entrée/sortie %name%"/>
<plugin type="autoinventory"/>
<properties>
<property name="Address"/>
<property name="ComponentName"/>
<property name="Name"/>
<property name="Inbound"/>
<property name="Outbound"/>
</properties>
<actions include="disconnect,connect"/>
<metric name="Availability" template="${OBJECT_NAME}:Connected" indicator="true"/>
</service>
<!-- Métriques relatives aux différents connecteurs -->
<service name="Connecteurs">
<property name="OBJECT_NAME" value="%domain%:type=org.mule.Connector,name=*"/>
<property name="AUTOINVENTORY_NAME" value="Connecteur %name%"/>
<plugin type="autoinventory"/>
<properties>
<property name="Disposed"/>
<property name="ExceptionListener"/>
<property name="Name"/>
<property name="Protocol"/>
</properties>
<actions include="startConnector,stopConnector,dispose,initialise"/>
<metric name="Availability" template="${OBJECT_NAME}:Started" indicator="true"/>
</service>
<!-- Métriques relatives aux différents routeurs -->
<service name="Routeurs">
<property name="OBJECT_NAME" value="%domain%:type=org.mule.Statistics,service=*,router=*"/>
<property name="AUTOINVENTORY_NAME" value="Routeur %router% (service %service%)"/>
<plugin type="autoinventory"/>
<metric name="Availability" template="${OBJECT_NAME}:Availability" indicator="true"/>
<metric name="Reçus" alias="TotalReceived" collectionType="trendsup" indicator="true"/>
<metric name="Redirigés (routés)" alias="TotalRouted" collectionType="trendsup" indicator="true"/>
<metric name="Non redirigés (non routés)" alias="NotRouted" collectionType="trendsup"/>
<metric name="Messages interceptés" alias="CaughtMessages" collectionType="trendsup"/>
</service>
<!-- Métriques relatives aux différents services
Il faut noter que Mule expose aussi des statistiques par services sous
type=org.mule.Statistics,service=%nom-du-service%
Seulement, toutes ces statistiques sont aussi disponibles sur le service
concerné (ie ici), ce qui rend redondant leur inclusion.
-->
<service name="Services Mule">
<property name="OBJECT_NAME" value="%domain%:type=org.mule.Service,name=*"/>
<property name="AUTOINVENTORY_NAME" value="Service %name%"/>
<!-- autoinventory doit toujours venir *après* object name -->
<plugin type="autoinventory"/>
<actions include="pause,dispose,forceStop,resume,stop,start,clearStatistics"/>
<metric name="Availability" template="${OBJECT_NAME}:Availability" indicator="true" category="AVAILABILITY"/>
<metric name="Stopped" category="AVAILABILITY" />
<metric name="Stopping" category="AVAILABILITY" />
<metric name="Paused" category="AVAILABILITY" />
<metric name="Queue Size" indicator="true"/>
<metric name="Queued Events" indicator="true"/>
<metric name="MaxQueueSize" category="UTILIZATION" />
<metric name="Average Queue Size" category="PERFORMANCE" />
<metric name="Sync Events Received" collectionType="trendsup" category="UTILIZATION" />
<metric name="Async Events Received" collectionType="trendsup" category="UTILIZATION" />
<metric name="Total Events Received" collectionType="trendsup" category="UTILIZATION" />
<metric name="Sync Events Sent" collectionType="trendsup" category="UTILIZATION" />
<metric name="Async Events Sent" collectionType="trendsup" category="UTILIZATION" />
<metric name="ReplyTo Events Sent" collectionType="trendsup" category="UTILIZATION" />
<metric name="Total Events Sent" collectionType="trendsup" category="UTILIZATION" />
<metric name="Executed Events" collectionType="trendsup" category="UTILIZATION" />
<metric name="ExecutionErrors" collectionType="trendsup" />
<metric name="FatalErrors" collectionType="trendsup" />
<metric name="Min Execution Time" category="PERFORMANCE"/>
<metric name="Max Execution Time" category="PERFORMANCE"/>
<metric name="Average Execution Time" category="PERFORMANCE"/>
<metric name="Total Execution Time" category="PERFORMANCE"/>
</service>
</server>
<!--
==================== Plugin Help ===========================
-->
<!--
Attention, selon la documentation, on peut mettre des tags html dans le help,
mais Hyperic les rejette. Ne mettre que du texte non décoré ici.
-->
<help name="Mule">
Configuration de HQ pour le monitoring d'un serveur Mule
Les paramètres les plus importants à renseigner sont le domaine JMX du serveur Mule, et l'adresse d'écoute du serveur JMX.
Cette configuration a été créée pour un serveur Mule lancé comme un sous processus Mule d'Eclipse, mais est suffisament générique pour détecter un serveur Mule lancé d'une autre manière (tant qu'il a été lancé avec sa propre JVM, et que la ligne de commande contient 'mule').
</help>
</plugin>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment