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.
Dans la configuration de la règle de découverte, sélectionnez agent JMX dans le champ Type.
Deux clés d'élément sont prises en charge pour la découverte d'objets JMX - jmx.discovery[] et jmx.get[] :
Clé d'élément | |||
---|---|---|---|
Return value | Parameters | Comment | |
jmx.discovery[<discovery mode>,<object name>,<unique short description>] | |||
Cet élément renvoie un tableau JSON avec des macros LLD décrivant des objets MBean ou leurs attributs. | discovery mode - l'un des éléments suivants : attributes (récupération des attributs JMX MBean, par défaut) ou beans (récupération des MBeans JMX) object name - modèle de nom d'objet (voir la documentation) en identifiant les noms de MBean à récupérer (vide par défaut, récupérant tous les beans enregistrés) unique short description - une description unique qui autorise plusieurs éléments JMX avec le même mode de découverte et le même nom d'objet sur l'hôte (facultatif) |
Exemples : → jmx.discovery - récupérer tous les attributs JMX MBean → jmx.discovery[beans] - récupérer tous les MBeans JMX → jmx.discovery[attributes,"*:type=GarbageCollector,name=*"] - récupérer tous les attributs du ramasse-miettes → jmx.discovery[beans,"*:type=GarbageCollector,name=*"] - récupérer tous les ramasse-miettes Il existe certaines limitations concernant les propriétés MBean que cet élément peut renvoyer en fonction des caractères limités pris en charge dans la génération de noms de macro (les caractères pris en charge peuvent être décrits par l'expression régulière suivante : A-Z0-9_\. ). Ainsi, par exemple, pour découvrir les propriétés MBean avec un mot à trait d'union ou des caractères non ASCII, vous devez utiliser jmx.get[] .Pris en charge depuis la passerelle Java Zabbix 3.4. |
|
jmx.get[<discovery mode>,<object name>,<unique short description>] | |||
Cet élément renvoie un tableau JSON avec des objets MBean ou leurs attributs. Par rapport à jmx.discovery[] il ne définit pas les macros LLD. |
discovery mode - l'un des éléments suivants : attributes (récupérer les attributs MBean JMX, par défaut) ou beans (récupérer les MBeans JMX) object name - modèle de nom d'objet (voir la documentation) en identifiant les noms de MBean à récupérer (vide par défaut, récupérant tous les beans enregistrés) unique short description - une description unique qui autorise plusieurs éléments JMX avec le même mode de découverte et le même nom d'objet sur l'hôte (facultatif) |
Lors de l'utilisation de cet élément, il est nécessaire de définir des macros de découverte personnalisées de bas niveau, pointant vers des valeurs extraites du JSON renvoyé à l'aide de JSONPath . Pris en charge depuis la passerelle Java Zabbix 4.4. |
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 telle que *:type=*,name=*
peut entraîner des problèmes de performances potentiels.
Cet élément renvoie un objet JSON avec des macros de découverte de bas niveau décrivant des objets ou des attributs MBean. Par exemple, dans la découverte des attributs MBean (reformatés pour plus de clarté) :
[
{
"{#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é) :
[
{
"{#JMXDOMAIN}":"java.lang",
"{#JMXTYPE}":"GarbageCollector",
"{#JMXOBJ}":"java.lang:type=GarbageCollector,name=PS Scavenge",
"{#JMXNAME}":"PS Scavenge"
}
]
Les macros suivantes sont prises en charge pour une utilisation dans le filter de la règle 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 d'objet incluant le nom d'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 MBean (comme {#JMXTYPE}, {#JMXNAME}) (voir Limitations ci-dessous). |
Certaines limitations sont associées à l'algorithme de création de noms de macros LLD à partir de noms de propriétés MBean :
A-Z0-9_\.
Veuillez considérer cet exemple jmx.discovery (avec le mode "beans"). MBean a les propriétés suivantes définies :
À la suite de la découverte JMX, les macros LLD suivantes seront générées :
Les propriétés ignorées sont :
Passons en revue deux autres exemples pratiques de création de règles 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, veuillez consulter le tableau suivant :
MBean1 | MBean2 | MBean3 |
MBean1Attribute1 | MBean2Attribute1 | MBean3Attribute1 |
MBean1Attribute2 | MBean2Attribute2 | MBean3Attribute2 |
MBean1Attribute3 | MBean2Attribute3 | MBean3Attribute3 |
Cette règle renverra 3 objets : la ligne du haut de la colonne : MBean1, MBean2, MBean3.
Pour plus d'informations sur les objets, reportez-vous au tableau des macros prises en charge, section Découverte des MBeans.
La configuration de la règle de découverte collectant les MBeans (sans les attributs) ressemble à ceci :
La clé utilisée ici :
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éments de la manière suivante :
Les clés utilisées ici :
La règle de découverte LLD se traduira par quelque chose de proche de cela (les éléments sont découverts pour deux garbage collectors) :
Cette règle renverra 9 objets avec les champs suivants : MBean1Attribute1, MBean2Attribute1, MBean3Attribute1, MBean1Attribute2, MBean2Attribute2, Mbean3Attribute2, MBean1Attribute3, MBean2Attribute3, Mbean3Attribute3.
Pour plus d'informations sur les objets, reportez-vous au tableau des macros prises en charge, section Découverte des attributs MBean.
La configuration de la règle de découverte collectant les attributs Mbean ressemble à ceci :
La clé utilisée ici :
Tous les garbage collectors avec un seul attribut d'élément seront découverts.
Dans ce cas particulier, un élément sera créé à partir du prototype pour chaque attribut MBean. Le principal inconvénient de cette configuration est que la création de déclencheurs à partir de prototypes de déclencheurs est impossible car il n'y a 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.
jmx.get[]
est similaire à l'élément jmx.discovery[]
, mais il ne transforme pas les propriétés d'objet Java en noms de macro de découverte de bas niveau et peut donc renvoyer des valeurs sans limitations qui sont associés à la génération de noms de macros LLD tels que des traits d'union ou des caractères non ASCII.
Lors de l'utilisation de jmx.get[]
pour la découverte, les macros de découverte de bas niveau peuvent être définies séparément dans l'onglet personnalisé Macros LLD de la configuration de la règle de découverte, en utilisant JSONPath pour pointer vers les valeurs requises.
Elément de découverte : jmx.get[beans,"com.example:type=*,*"]
Réponse :
[
{
"object": "com.example:type=Hello,data-src=data-base,ключ=значение",
"domain": "com.example",
"properties": {
"data-src": "data-base",
"ключ": "значение",
"type": "Hello"
}
},
{
"object": "com.example:type=Atomic",
"domain": "com.example",
"properties": {
"type": "Atomic"
}
}
]
Elément de découverte : jmx.get[attributes,"com.example:type=*,*"]
Réponse :
[
{
"object": "com.example:type=*",
"domain": "com.example",
"properties": {
"type": "Simple"
}
},
{
"object": "com.zabbix:type=yes,domain=zabbix.com,data-source=/dev/rand,ключ=значение,obj=true",
"domain": "com.zabbix",
"properties": {
"type": "Hello",
"domain": "com.example",
"data-source": "/dev/rand",
"ключ": "значение",
"obj": true
}
}
]