És possible descobrir tots els atributs MBeans o MBeans JMX o especificar una plantilla per a la descoberta d'aquests objectes.
Entendre la diferència entre els atributs Mbean i Mbean és essencial per configurar les regles de descoberta. Un MBean és un objecte que pot representar un dispositiu, una aplicació o qualsevol recurs que s'hagi de gestionar.
Per exemple, hi ha un Mbean que representa un servidor web. Els seus atributs són: nombre de connexions, nombre de fils, temps d'espera de la petició, memòria cau de fitxers http, ús de memòria, etc. Expressant aquest pensament en un llenguatge humà complet, podem definir una màquina de cafè com un Mbean els atributs del qual a controlar són: quantitat d'aigua per tassa, consum mitjà d'aigua durant un període determinat, nombre de grans de cafè necessaris per tassa, grans de cafè i recàrrega d'aigua, hora, etc.
A la configuració de la regla de descoberta, trieu agent JMX al camp Tipus.
S'admeten dues claus d'element per a la descoberta d'objectes JMX: jmx.discovery[] i jmx.get[]:
Clau d'element | |||
---|---|---|---|
Valor de retorn | Paràmetres | Comentari | |
jmx.discovery[<mode de descoberta>,<nom de l'objecte>,<descripció breu única>] | |||
Aquest element retorna una matriu JSON amb macros LLD que descriuen objectes MBean o els seus atributs. | mode de descoberta - un dels següents: atributs (obtinguent els atributs MBean JMX, per defecte) o beans (obtinguent JMX). MBeans) nom de l'objecte - patró de nom d'objecte (veieu la documentació) que identifica el Noms de MBean per recuperar (buit per defecte, recuperant tots els beans registrats) descripció curta única - una descripció única que permet diversos elements JMX amb el mateix mode de descoberta i el mateix nom d'objecte a l'equip (opcional) |
Exemples: → jmx.discovery - recupera tots els atributs JMX MBean → jmx.discovery[beans] - recupera tots els MBeans JMX → jmx.discovery[atributs,"*:type=GarbageCollector,nom =*"] - recupera tots els atributs del col·lector d'escombraries → jmx.discovery[beans," *:type=GarbageCollector,name=*"] - recupera tots els col·lectors d'escombraries Hi ha algunes limitacions pel que fa a les propietats de MBean que aquest element pot retornar en funció dels caràcters limitats admesos en la generació de noms de macro (els caràcters admesos es poden descriure amb la següent expressió regular: A-Z0-9_\. ). Així, per exemple, per descobrir propietats de MBean amb paraules amb guionet o caràcters no ASCII, hauríeu d'emprar jmx.get[] . |
|
jmx.get[<mode de descoberta>,<nom de l'objecte>,<descripció curta única>] | |||
Aquest element retorna una matriu JSON amb objectes MBean o els seus atributs. En comparació amb jmx.discovery[] no defineix macros LLD. |
mode de descoberta - un dels següents: atributs (obté els atributs JMX MBean, per defecte) o beans (obté els MBeans JMX) nom de l'objecte - patró de nom d'objecte (veieu documentació) identificant els noms MBean que cal recuperar (buit per defecte, recuperant tots els beans registrats) descripció curta única - una descripció única que permet diversos elements JMX amb el mateix mode de descoberta i el mateix nom d'objecte a l'equip (opcional) |
Quan s'empra aquest element, cal definir macros de descoberta de baix nivell personalitzades, que apunten als valors extrets de JSON retornat mitjançant JSONPath. |
Si no es passa cap paràmetre, es demanen tots els atributs JMX MBean. No especificar paràmetres per a la descoberta de JMX o intentar rebre tots els atributs d'una àmplia gamma com ara *:type=*,name=*
pot provocar problemes de rendiment potencials.
Aquest element retorna un objecte JSON amb macros de descoberta de baix nivell que descriuen objectes o atributs MBean. Per exemple, a la descoberta d'atributs MBean (reformatat per a més claredat):
[
{
"{#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"
}
]
A la descoberta de MBeans (reformatat per a més claredat):
[
{
"{#JMXDOMAIN}":"java.lang",
"{#JMXTYPE}":"GarbageCollector",
"{#JMXOBJ}":"java.lang:type=GarbageCollector,name=PS Scavenge",
"{#JMXNAME}":"PS Scavenge"
}
]
S'admeten les macros següents per emprar-les al filtre de la regla de descoberta i als prototips d'elements, triggers i gràfics:
Macro | Descripció |
---|---|
Es són descobrint els atributs MBean | |
{#JMXVALUE} | Valor de l'atribut. |
{#JMXTYPE} | Tipus d'atribut. |
{#JMXOBJ} | Nom de l'objecte. |
{#JMXDESC} | Nom de l'objecte inclòs el nom de l'atribut. |
{#JMXATTR} | Nom de l'atribut. |
Descobrint MBeans | |
{#JMXDOMAIN} | Domini MBean. (Nom reservat Zabbix) |
{#JMXOBJ} | Nom de l'objecte. (Nom reservat Zabbix) |
{#JMX<propietat de clau>} | Propietats MBean (com {#JMXTYPE}, {#JMXNAME}) (veieu les limitacions més avall). |
Hi ha algunes limitacions associades a l'algoritme per crear noms de macro LLD a partir de noms de propietat MBean:
A-Z0-9_\.
Si us plau, tingueu en compte aquest exemple jmx.discovery (amb mode "beans"). MBean té definides les propietats següents (algunes de les quals s'ignoraran; veieu més avall):
Com a resultat de la descoberta de JMX, es generaran les macros LLD següents:
Les propietats ignorades són:
Passem per dos exemples més pràctics de creació de regles LLD amb l'ús de Mbean. Per entendre millor la diferència entre una regla LLD que recull Mbeans i una regla LLD que recull atributs Mbean, consulteu la taula següent:
MBean1 | MBean2 | MBean3 |
MBean1Attribute1 | MBean2Attribute1 | MBean3Attribute1 |
MBean1Attribute2 | MBean2Attribute2 | MBean3Attribute2 |
MBean1Attribute3 | MBean2Attribute3 | MBean3Attribute3 |
Aquesta regla retornarà 3 objectes: la filera superior de la columna: MBean1, MBean2, MBean3.
Per obtindre més informació sobre els objectes, consulteu la taula de macros compatibles, secció Descoberta de MBeans.
La configuració de la regla de descoberta que recull els MBeans (sense els atributs) té aquest aspecte:
La clau emprada aquí:
Es descobriran tots els recol·lectors d'escombraries sense atributs. Com que els col·lectors d'escombraries tenen el mateix conjunt d'atributs, podem emprar els atributs desitjats als prototips d'elements de la següent manera:
Claus emprades aquí:
La regla de descoberta d'LLD donarà lloc a alguna cosa semblant a això (es descobreixen elements per a dos col·lectors d'escombraries):
Aquesta regla retornarà 9 objectes amb els següents camps: MBean1Attribute1, MBean2Attribute1, MBean3Attribute1, MBean1Attribute2, MBean2Attribute2, Mbean3Attribute2, MBean1Attribute3, MBean2Attribute3, Mbean3Attribute3.
Per obtindre més informació sobre els objectes, consulteu la taula de macros compatibles, secció Descoberta d'atributs MBean.
La configuració de la regla de descoberta que recull els atributs Mbean té aquest aspecte:
La clau emprada aquí:
Es descobriran tots els recol·lectors d'escombraries amb un únic atribut d'element.
En aquest cas particular, es crearà un element a partir del prototip per a cada atribut MBean. El principal desavantatge d'aquesta configuració és que la creació de triggers a partir de prototips de triggers no és possible perquè només hi ha un prototip d'element per a tots els atributs. Per tant, aquesta configuració es pot emprar per a la recollida de dades, però no es recomana per al monitoratge automàtic.
jmx.get[]
és similar a l'element jmx.discovery[]
, però no transforma les propietats d'objectes Java en noms de macro de descoberta de baix nivell i, per tant, pot retornar valors sense limitacions que s'associen amb la generació de noms de macro LLD com ara guions o caràcters no ASCII.
Quan s'emprajmx.get[]
per a la descoberta, les macros de descoberta de baix nivell es poden establir per separat a la pestanya personalitzada Macros LLD de la configuració de la regla de descoberta, emprant JSONPath per apuntar als valors requerits.
Element de descoberta: jmx.get[beans,"com.example:type=*,*"]
Resposta:
[
{
"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"
}
}
]
Element de descoberta: jmx.get[attributes,"com.example:type=*,*"]
Resposta:
[
{
"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
}
}
]