Áú»¢¶Ä²©

6 Descoberta d'objectes JMX

Vista general

?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.

Clau d'element

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 ±Ê²¹°ù¨¤³¾±ð³Ù°ù±ð²õ 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 ) 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 ) 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.

?s de jmx.discovery

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"
           }
       ]
Macros admeses

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 ¶Ù±ð²õ³¦°ù¾±±è³¦¾±¨®
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 Áú»¢¶Ä²©)
{#JMXOBJ} Nom de l'objecte. (Nom reservat Áú»¢¶Ä²©)
{#JMX<propietat de clau>} Propietats MBean (com {#JMXTYPE}, {#JMXNAME}) (veieu les limitacions m¨¦s avall).
Limitacions

Hi ha algunes limitacions associades a l'algoritme per crear noms de macro LLD a partir de noms de propietat MBean:

  • els noms dels atributs s¨®n en maj¨²scula
  • els noms d'atributs s'ignoren (no es genera cap macro LLD) si contenen car¨¤cters no compatibles amb els noms de macro LLD. Els car¨¤cters admesos es poden descriure amb l'expressi¨® regular seg¨¹ent: A-Z0-9_\.
  • si un atribut s'anomena "obj" o "domini", s'ignorar¨¤ a causa de la superposici¨® amb els valors de les propietats reservades de Áú»¢¶Ä²© {#JMXOBJ} i {#JMXDOMAIN}

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):

name=test
       §ä§Ú§á=Type
       attributes []=1,2,3
       Name=NameOfTheTest
       domAin=some

Com a resultat de la descoberta de JMX, es generaran les macros LLD seg¨¹ents:

  • {#JMXDOMAIN} - Áú»¢¶Ä²© intern, que descriu el domini MBean
  • {#JMXOBJ} - Áú»¢¶Ä²© intern, que descriu l'objecte MBean
  • {#JMXNAME} - creat a partir de la propietat "name"

Les propietats ignorades s¨®n:

  • §ä§Ú§á: el seu nom cont¨¦ car¨¤cters no admesos (no ASCII)
  • atrributes[]: el seu nom cont¨¦ car¨¤cters no admesos (no s'admeten els claud¨¤tors)
  • Name: ja ¨¦s definit (name=test)
  • domAin: ¨¦s un nom reservat de Áú»¢¶Ä²©
Exemples

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
Exemple 1 : Descobrir els MBeans

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:

lld_rule_mbean.png

La clau emprada aqu¨ª:

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

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:

lld_rule_mbean_prototypes.png

Claus emprades aqu¨ª:

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

La regla de descoberta d'LLD donar¨¤ lloc a alguna cosa semblant a aix¨° (es descobreixen elements per a dos col¡¤lectors d'escombraries):

discovery_rule_mbean_3.png

Exemple 2 : Descoberta dels atributs Mbean

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:

lld_rule_mbean_attr.png

La clau emprada aqu¨ª:

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

Es descobriran tots els recol¡¤lectors d'escombraries amb un ¨²nic atribut d'element.

lld_rule_mbean_attr_prototypes.png

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.

?s de jmx.get

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.

Descoberta dels MBeans

Element de descoberta: jmx.get[beans,"com.example:type=*,*"]

Resposta:

[
           {
               "object": &±ç³Ü´Ç³Ù;³¦´Ç³¾.±ð³æ²¹³¾±è±ô±ð:³Ù²â±è±ð=±á±ð±ô±ô´Ç,»å²¹³Ù²¹-²õ°ù³¦=»å²¹³Ù²¹-²ú²¹²õ±ð,§Ü§Ý§ð§é=§Ù§ß§Ñ§é§Ö§ß§Ú§Ö&±ç³Ü´Ç³Ù;,
               "domain": "com.example",
               "properties": {
                   "data-src": "data-base",
                   &±ç³Ü´Ç³Ù;§Ü§Ý§ð§é&±ç³Ü´Ç³Ù;: &±ç³Ü´Ç³Ù;§Ù§ß§Ñ§é§Ö§ß§Ú§Ö&±ç³Ü´Ç³Ù;,
                   "type": "Hello"
               }
           },
           {
               "object": "com.example:type=Atomic",
               "domain": "com.example",
               "properties": {
                   "type": "Atomic"
               }
           }
       ]
Descoberta dels atributs MBean

Element de descoberta: jmx.get[attributes,"com.example:type=*,*"]

Resposta:

[
           {
               "object": "com.example:type=*",
               "domain": "com.example",
               "properties": {
                   "type": "Simple"
               }
           },
           {
               "object": &±ç³Ü´Ç³Ù;³¦´Ç³¾.³ú²¹²ú²ú¾±³æ:³Ù²â±è±ð=²â±ð²õ,»å´Ç³¾²¹¾±²Ô=³ú²¹²ú²ú¾±³æ.³¦´Ç³¾,»å²¹³Ù²¹-²õ´Ç³Ü°ù³¦±ð=/»å±ð±¹/°ù²¹²Ô»å,§Ü§Ý§ð§é=§Ù§ß§Ñ§é§Ö§ß§Ú§Ö,´Ç²úÂá=³Ù°ù³Ü±ð&±ç³Ü´Ç³Ù;,
               "domain": "com.zabbix",
               "properties": {
                   "type": "Hello",
                   "domain": "com.example",
                   "data-source": "/dev/rand",
                   &±ç³Ü´Ç³Ù;§Ü§Ý§ð§é&±ç³Ü´Ç³Ù;: &±ç³Ü´Ç³Ù;§Ù§ß§Ñ§é§Ö§ß§Ú§Ö&±ç³Ü´Ç³Ù;,
                   "obj": true
               }
           }
       ]