This is the documentation page for an unsupported version of Zabbix.
Is this not what you were looking for? Switch to the current version or choose one from the drop-down menu.

4 Découverte d'objets JMX

Aperçu

Il est possible de découvrir tous les attributs MBeans ou MBean JMX ou de spécifier un modèle pour la découverte de ces objets.

Il est indispensable de comprendre la différence entre Mbean et les attributs Mbean pour la configuration des règles de découverte. Un MBean est un objet pouvant représenter un périphérique, une application ou toute ressource devant être gérée. Par exemple, il existe un Mbean qui représente un serveur Web. Ses attributs sont : nombre de connexions, nombre de threads, délai de requête, cache de fichier http, utilisation de la mémoire, etc. En exprimant cette pensée en langage humain compréhensif, nous pouvons définir une machine à café comme un Mbean dont les attributs à surveiller sont les suivants : quantité d'eau par tasse, consommation moyenne d'eau pendant une certaine période, nombre de grains de café requis par tasse, grains de café et temps de remplissage en eau, etc.

Clé d'élément

Dans la configuration de la règle de découverte, sélectionnez agent JMX dans le champ Type.

La clé d’élément à utiliser est

jmx.discovery[<discovery mode>,<object name>]

  • discovery mode - l'un des éléments suivants : attributs (récupérer les attributs JMX MBean, valeur par défaut) ou beans (récupérer le MBean JMX)
  • object name - modèle de nom d'objet identifiant les noms de MBean à récupérer (vide par défaut, récupérant tous les beans enregistrés).

Vous pouvez consulter la documentation ObjectName pour connaître les options permettant de spécifier un modèle de nom d'objet.

Si aucun paramètre n'est transmis, tous les attributs MBean de JMX sont demandés.

Ne pas spécifier de paramètres pour la découverte JMX ou essayer de recevoir tous les attributs pour une large plage comme *:type=*,name=* peut entraîner des problèmes de performances.

Cette clé est supportée depuis la passerelle Java Zabbix 3.4.

Exemples de clés d'élément :

jmx.discovery  #Retrieve all JMX MBean attributes
       jmx.discovery[beans]  #Retrieve all JMX MBeans
       jmx.discovery[attributes,"*:type=GarbageCollector,name=*"]  #Retrieve all garbage collector attributes
       jmx.discovery[beans,"*:type=GarbageCollector,name=*"]  #Retrieve all garbage collectors

Cet élément renvoie un objet JSON. Par exemple, lors de la découverte d'attributs MBean (reformaté pour plus de clarté) :

{
          "data":[
             {
                "{#JMXVALUE}":"0",
                "{#JMXTYPE}":"java.lang.Long",
                "{#JMXOBJ}":"java.lang:type=GarbageCollector,name=PS Scavenge",
                "{#JMXDESC}":"java.lang:type=GarbageCollector,name=PS Scavenge,CollectionCount",
                "{#JMXATTR}":"CollectionCount"
             },
             {
                "{#JMXVALUE}":"0",
                "{#JMXTYPE}":"java.lang.Long",
                "{#JMXOBJ}":"java.lang:type=GarbageCollector,name=PS Scavenge",
                "{#JMXDESC}":"java.lang:type=GarbageCollector,name=PS Scavenge,CollectionTime",
                "{#JMXATTR}":"CollectionTime"
             },
             {
                "{#JMXVALUE}":"true",
                "{#JMXTYPE}":"java.lang.Boolean",
                "{#JMXOBJ}":"java.lang:type=GarbageCollector,name=PS Scavenge",
                "{#JMXDESC}":"java.lang:type=GarbageCollector,name=PS Scavenge,Valid",
                "{#JMXATTR}":"Valid"
             },
             {
                "{#JMXVALUE}":"PS Scavenge",
                "{#JMXTYPE}":"java.lang.String",
                "{#JMXOBJ}":"java.lang:type=GarbageCollector,name=PS Scavenge",
                "{#JMXDESC}":"java.lang:type=GarbageCollector,name=PS Scavenge,Name",
                "{#JMXATTR}":"Name"
             },
             {
                "{#JMXVALUE}":"java.lang:type=GarbageCollector,name=PS Scavenge",
                "{#JMXTYPE}":"javax.management.ObjectName",
                "{#JMXOBJ}":"java.lang:type=GarbageCollector,name=PS Scavenge",
                "{#JMXDESC}":"java.lang:type=GarbageCollector,name=PS Scavenge,ObjectName",
                "{#JMXATTR}":"ObjectName"
             }
          ]
       }

Dans la découverte des MBeans (reformatés pour plus de clarté) :

{
          "data":[
             {  
                "{#JMXDOMAIN}":"java.lang",
                "{#JMXTYPE}":"GarbageCollector",
                "{#JMXOBJ}":"java.lang:type=GarbageCollector,name=PS Scavenge",
                "{#JMXNAME}":"PS Scavenge"
             }
          ]
       }

Macros supportées

Les macros suivantes sont supportées pour le filtre de règles de découverte et les prototypes d'éléments, de déclencheurs et de graphiques :

Macro Description
Découverte des attributs MBean
{#JMXVALUE} Valeur d'attribut.
{#JMXTYPE} Type d'attribut.
{#JMXOBJ} Nom de l'objet.
{#JMXDESC} Nom de l'objet, y compris le nom de l'attribut.
{#JMXATTR} Nom d'attribut.
Découverte des MBeans
{#JMXDOMAIN} Domaine MBean. (Nom réservé Zabbix)
{#JMXOBJ} Nom de l'objet. (Nom réservé Zabbix)
{#JMX<key property>} Propriétés du MBean (comme {#JMXTYPE}, {#JMXNAME}). Remarques importantes à prendre en compte lors de la définition du nom d'attribut MBean créé à partir du nom de la propriété MBean à l'aide de l'algorithme suivant :

* la casse du nom d'attribut est changée en majuscule ;
* la casse du nom d'attribut est ignorée (aucune macro LLD n'est générée) s'il s'agit de caractères non supportés. Les caractères pris en charge peuvent être décrits par l'expression régulière suivante: "A-Z0-9_\." ;
* Si un nom d'attribut est appelé "obj" ou "domain", il sera remplacé par les valeurs des propriétés Zabbix {#JMXOBJ} et {#JMXDOMAIN} (supportées depuis Zabbix 3.4.3.).

Veuillez considérer cet exemple avec jmx.discovery (avec le mode "beans"). MBean a les propriétés suivantes définies :

name=test
       тип=Type
       attributes []=1,2,3
       Name=NameOfTheTest
       domAin=some

À la suite de la découverte JMX, les macros LLD suivantes seront générées :

  • {#JMXDOMAIN} - interne Zabbix, décrivant le domaine du MBean
  • {#JMXOBJ} - interne Zabbix, décrivant l'objet MBean
  • {#JMXNAME} - créé à partir de la propriété "name"

Les propriétés ignorées sont :

  • тип : son nom contient des caractères non supportés (non ASCII)
  • attributes[] : son nom contient des caractères non supportés (les crochets ne sont pas supportés)
  • Name : c'est déjà défini (name=test)
  • domAin : c'est un nom réservé Zabbix

Passons en revue deux autres exemples pratiques de création d'une règle LLD avec l'utilisation de Mbean. Pour mieux comprendre la différence entre une règle LLD collectant des Mbeans et une règle LLD collectant des attributs Mbean, consultez le tableau suivant :

MBean1 MBean2 MBean3
MBean1Attribute1 MBean2Attribute1 MBean3Attribute1
MBean1Attribute2 MBean2Attribute2 MBean3Attribute2
MBean1Attribute3 MBean2Attribute3 MBean3Attribute3

La règle LLD collecte les Mbeans

Cette règle renvoie 3 objets : la ligne du haut de la colonne : MBean1, MBean2, MBean3.

Pour plus d'informations sur les objets, veuillez vous reporter au tableau des macros supportées, section Découverte des MBeans.

La configuration de la règle de découverte collectant des Mbeans (sans les attributs) se présente comme suit :

Clé utilisée :

jmx.discovery[beans,"*:type=GarbageCollector,name=*"]

Tous les garbage collectors sans attributs seront découverts. Comme les garbage collectors ont le même ensemble d'attributs, nous pouvons utiliser les attributs souhaités dans les prototypes d'élément de la manière suivante :

discovery_rule_mbean_2.png

Clé utilisée :

jmx[{#JMXOBJ},CollectionCount] 
       jmx[{#JMXOBJ},CollectionTime] 
       jmx[{#JMXOBJ},Valid] 

La règle de découverte LLD aura comme résultat quelque chose de proche (les objets sont découverts pour deux garbage collectors) :

discovery_rule_mbean_3.png

Règle LLD collectant les attributs Mbean

Cette règle renvoie 9 objets avec les champs suivants : MBean1Attribute1, MBean2Attribute1, Mbean3Attribute1, MBean1Attribute2, MBean2Attribute2, Mbean3Attribute2, MBean1Attribute2, MBean2Attribute3, MBean2Attribute3, MBean2Attribute3, MBean2Attribute3.

Pour plus d'informations sur les objets, veuillez vous reporter au tableau des macros supportées, section Découverte des MBeans.

La configuration des règles de découverte collectant les attributs Mbean se présente comme suit :

discovery_rule_mbean_attributes_1.png

Clé utilisée :

jmx.discovery[attributes,"*:type=GarbageCollector,name=*"]

Tous les garbage collectors avec un seul attribut d'élément seront découverts.

discovery_rule_mbean_attributes_2.png

Dans ce cas particulier, un élément sera créé à partir du prototype pour chaque attribut MBean. L'inconvénient majeur de cette configuration est que la création de déclencheurs à partir de prototypes de déclencheurs est impossible car il n'existe qu'un seul prototype d'élément pour tous les attributs. Cette configuration peut donc être utilisée pour la collecte de données, mais n'est pas recommandée pour la surveillance automatique.