[comment]: # translation:outdated

[comment]: # ({1cf00713-386ff732})
# 6 Descoberta d'objectes JMX

[comment]: # ({/1cf00713-386ff732})

[comment]: # ({c07df864-c07df864})
#### Vista general

És possible [descobrir](/manual/discovery/low_level_discovery) 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.

[comment]: # ({/c07df864-c07df864})

[comment]: # ({b2fd2d1f-ccae3f99})
#### Clau d'element

A la configuració de la [regla de descoberta](/manual/discovery/low_level_discovery#discovery_rule), 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)<br>**nom de l'objecte** - patró de nom d'objecte (veieu la [documentació](https://docs.oracle.com/javase/7/docs/api/javax/management/ObjectName.html)) que identifica el Noms de MBean per recuperar (buit per defecte, recuperant tots els beans registrats)<br>**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: <br>→ jmx.discovery - recupera tots els atributs JMX MBean<br>→ jmx.discovery\[beans\] - recupera tots els MBeans JMX<br>→ jmx.discovery\[atributs,"\*:type=GarbageCollector,nom =\*"\] - recupera tots els atributs del col·lector d'escombraries<br>→ jmx.discovery\[beans,"\ *:type=GarbageCollector,name=\*"\] - recupera tots els col·lectors d'escombraries<br><br> Hi ha algunes [limitacions](#limitations) 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.<br><br>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)<br>**nom de l'objecte** - patró de nom d'objecte (veieu [documentació](https://docs.oracle.com/javase/7/docs/api/javax/management/ObjectName.html)) identificant els noms MBean que cal recuperar (buit per defecte, recuperant tots els beans registrats)<br>**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.|

::: noteimportant
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.
:::

[comment]: # ({/b2fd2d1f-ccae3f99})

[comment]: # ({cbb39bec-dbdbb9bc})
#### Ú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):

```json
[
    {
        "{#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):

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

```

[comment]: # ({/cbb39bec-dbdbb9bc})

[comment]: # ({41c7d097-41c7d097})
##### Macros admeses

S'admeten les macros següents per emprar-les al [filtre](/manual/discovery/low_level_discovery#discovery_rule_filter) 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](#limitations) més avall).|

[comment]: # ({/41c7d097-41c7d097})

[comment]: # ({9f385f18-8c9889ad})
##### 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 Zabbix {\#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} - Zabbix intern, que descriu el domini MBean
- {\#JMXOBJ} - Zabbix 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 Zabbix

[comment]: # ({/9f385f18-8c9889ad})

[comment]: # ({396d61ba-905ac1fe})
##### 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|

[comment]: # ({/396d61ba-905ac1fe})

[comment]: # ({724a4e9c-f7377f35})
##### 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](/manual/discovery/low_level_discovery/examples/jmx#supported_macros), 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](../../../../../assets/en/manual/discovery/low_level_discovery/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](../../../../../assets/en/manual/discovery/low_level_discovery/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](../../../../../assets/en/manual/discovery/low_level_discovery/discovery_rule_mbean_3.png){width="600"}

[comment]: # ({/724a4e9c-f7377f35})

[comment]: # ({3c5773c1-ded9e4d5})
##### 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](/manual/discovery/low_level_discovery/examples/jmx#supported_macros), 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](../../../../../assets/en/manual/discovery/low_level_discovery/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](../../../../../assets/en/manual/discovery/low_level_discovery/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.

[comment]: # ({/3c5773c1-ded9e4d5})

[comment]: # ({55dac68c-6d62dc78})
#### Ú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](#limitations) que s'associen amb la generació de noms de macro LLD com ara guions o caràcters no ASCII.

Quan s'empra`jmx.get[]` per a la descoberta, les macros de descoberta de baix nivell es poden establir per separat a la pestanya personalitzada [Macros LLD](/manual/discovery/low_level_discovery#discovery_rule) de la configuració de la regla de descoberta, emprant JSONPath per apuntar als valors requerits.

[comment]: # ({/55dac68c-6d62dc78})

[comment]: # ({b087c327-b087c327})
##### Descoberta dels MBeans

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

Resposta:

``` {.json}
[
    {
        "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"
        }
    }
]
```

[comment]: # ({/b087c327-b087c327})

[comment]: # ({cb2449af-cb2449af})
##### Descoberta dels atributs MBean

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

Resposta:

``` {.json}
[
    {
        "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
        }
    }
]
```

[comment]: # ({/cb2449af-cb2449af})
