Het is mogelijk om alle JMX MBeans of MBean-attributen te ontdekken, of om een patroon op te geven voor het ontdekken van deze objecten.
Het is belangrijk om het verschil te begrijpen tussen een MBean en MBean-attributen voor de configuratie van de ontdekkingsregel. Een MBean is een object dat een apparaat, een toepassing of een bron vertegenwoordigt die moet worden beheerd.
Bijvoorbeeld, er is een MBean die een webserver vertegenwoordigt. De attributen zijn het verbindingsaantal, het threadaantal, de aanvraagtime-out, de HTTP-bestandsbuffer, het geheugengebruik, enzovoort. Als we dit in begrijpelijke menselijke taal zouden uitdrukken, kunnen we een koffiemachine definiëren als een MBean met de volgende te bewaken attributen: de hoeveelheid water per kopje, het gemiddelde waterverbruik gedurende een bepaalde periode, het aantal benodigde koffiebonen per kopje, de tijd voor het bijvullen van water en koffiebonen, enzovoort.
Bij de configuratie van een ontdekkingsregel selecteert u JMX-agent in het veld Type.
Er worden twee item-sleutels ondersteund voor de ontdekking van JMX-objecten - jmx.discovery[] en jmx.get[]:
Item-sleutel | |||
---|---|---|---|
Retourwaarde | Parameters | Opmerking | |
jmx.discovery[<ontdekkingsmodus>,<objectnaam>,<unieke korte beschrijving>] | |||
Dit item retourneert een JSON-array met LLD-macro's die MBean-objecten of hun attributen beschrijven. | ontdekkingsmodus - een van de volgende: attributes (haal JMX MBean-attributen op, standaard) of beans (haal JMX MBeans op) objectnaam - objectnaampatroon (zie documentatie) dat de namen van de MBeans identificeert die moeten worden opgehaald (standaard leeg, haalt alle geregistreerde beans op) unieke korte beschrijving - een unieke beschrijving die meerdere JMX-items met dezelfde ontdekkingsmodus en objectnaam op de host mogelijk maakt (optioneel) |
Voorbeelden: → jmx.discovery - haal alle JMX MBean-attributen op → jmx.discovery[beans] - haal alle JMX MBeans op → jmx.discovery[attributes,"*:type=GarbageCollector,name=*"] - haal alle attributen van de garbage collector op → jmx.discovery[beans,"*:type=GarbageCollector,name=*"] - haal alle garbage collectors op Er zijn enkele beperkingen voor welke MBean-eigenschappen dit item kan retourneren op basis van beperkte tekens die worden ondersteund bij de generatie van de macro-naam (ondersteunde tekens kunnen worden beschreven door de volgende reguliere expressie: A-Z0-9_\. ). Dus bijvoorbeeld om MBean-eigenschappen te ontdekken met een woord met koppeltekens of niet-ASCII-tekens, moet u jmx.get[] gebruiken.Ondersteund sinds Zabbix Java-gateway 3.4. |
|
jmx.get[<ontdekkingsmodus>,<objectnaam>,<unieke korte beschrijving>] | |||
Dit item retourneert een JSON-array met MBean-objecten of hun attributen. In vergelijking met jmx.discovery[] definieert het geen LLD-macro's. |
ontdekkingsmodus - een van de volgende: attributes (haal JMX MBean-attributen op, standaard) of beans (haal JMX MBeans op) objectnaam - objectnaampatroon (zie documentatie) dat de namen van de MBeans identificeert die moeten worden opgehaald (standaard leeg, haalt alle geregistreerde beans op) unieke korte beschrijving - een unieke beschrijving die meerdere JMX-items met dezelfde ontdekkingsmodus en objectnaam op de host mogelijk maakt (optioneel) |
Bij het gebruik van dit item moet u aangepaste LLD-macro's definiëren, die wijzen naar waarden die zijn geëxtraheerd uit de geretourneerde JSON met behulp van JSONPath. Ondersteund sinds Zabbix Java-gateway 4.4. |
Als er geen parameters worden doorgegeven, worden alle MBean-attributen van JMX aangevraagd. Het niet specificeren van parameters voor JMX-ontdekking of proberen alle attributen te ontvangen voor een breed scala zoals *:type=*,name=*
kan leiden tot mogelijke prestatieproblemen.
Dit item retourneert een JSON-object met LLD-macro's die MBean-objecten of attributen beschrijven. Hier is een voorbeeld van de ontdekking van MBean-attributen (herschikt voor duidelijkheid):
[
{
"{#JMXWAARDE}":"0",
"{#JMXTYPE}":"java.lang.Long",
"{#JMXOBJ}":"java.lang:type=GarbageCollector,name=PS Scavenge",
"{#JMXBESCHRIJVING}":"java.lang:type=GarbageCollector,name=PS Scavenge,CollectionCount",
"{#JMXATTR}":"CollectionCount"
},
{
"{#JMXWAARDE}":"0",
"{#JMXTYPE}":"java.lang.Long",
"{#JMXOBJ}":"java.lang:type=GarbageCollector,name=PS Scavenge",
"{#JMXBESCHRIJVING}":"java.lang:type=GarbageCollector,name=PS Scavenge,CollectionTime",
"{#JMXATTR}":"CollectionTime"
},
{
"{#JMXWAARDE}":"true",
"{#JMXTYPE}":"java.lang.Boolean",
"{#JMXOBJ}":"java.lang:type=GarbageCollector,name=PS Scavenge",
"{#JMXBESCHRIJVING}":"java.lang:type=GarbageCollector,name=PS Scavenge,Valid",
"{#JMXATTR}":"Valid"
},
{
"{#JMXWAARDE}":"PS Scavenge",
"{#JMXTYPE}":"java.lang.String",
"{#JMXOBJ}":"java.lang:type=GarbageCollector,name=PS Scavenge",
"{#JMXBESCHRIJVING}":"java.lang:type=GarbageCollector,name=PS Scavenge,Name",
"{#JMXATTR}":"Name"
},
{
"{#JMXWAARDE}":"java.lang:type=GarbageCollector,name=PS Scavenge",
"{#JMXTYPE}":"javax.management.ObjectName",
"{#JMXOBJ}":"java.lang:type=GarbageCollector,name=PS Scavenge",
"{#JMXBESCHRIJVING}":"java.lang:type=GarbageCollector,name=PS Scavenge,ObjectName",
"{#JMXATTR}":"ObjectName"
}
]
En hier is een voorbeeld van de ontdekking van MBeans (herschikt voor duidelijkheid):
[
{
"{#JMXDOEL}":"java.lang",
"{#JMXTYPE}":"GarbageCollector",
"{#JMXOBJ}":"java.lang:type=GarbageCollector,name=PS Scavenge",
"{#JMXNAAM}":"PS Scavenge"
}
]
De volgende macros worden ondersteund voor gebruik in de ontdekkingsregel filter en in de prototypes van items, triggers en grafieken:
Macro | Beschrijving |
---|---|
Ontdekking van MBean-attributen | |
{#JMXVALUE} | Attribuutwaarde. |
{#JMXTYPE} | Attribuuttype. |
{#JMXOBJ} | Objectnaam. |
{#JMXDESC} | Objectnaam inclusief attribuutnaam. |
{#JMXATTR} | Attribuutnaam. |
Ontdekking van MBeans | |
{#JMXDOMAIN} | MBean-domein. (Gereserveerde Zabbix-naam) |
{#JMXOBJ} | Objectnaam. (Gereserveerde Zabbix-naam) |
{#JMX<key property>} | MBean-eigenschappen (zoals {#JMXTYPE}, {#JMXNAME}) (zie Beperkingen hieronder). |
Er zijn enkele beperkingen verbonden aan het algoritme voor het maken van LLD-macronamen uit MBean-attribuutnamen:
A-Z0-9_\.
Overweeg dit voorbeeld van jmx.discovery (met de modus "beans"). Een MBean heeft de volgende eigenschappen gedefinieerd:
Als resultaat van JMX-ontdekking worden de volgende LLD-macro's gegenereerd:
Genegeerde eigenschappen zijn:
Laten we nog twee praktische voorbeelden bekijken van het maken van een LLD-regel met het gebruik van MBean. Om het verschil tussen een LLD-regel die MBeans verzamelt en een LLD-regel die MBean-attributen verzamelt beter te begrijpen, kunt u kijken naar de volgende tabel:
MBean1 | MBean2 | MBean3 |
MBean1Attribuut1 | MBean2Attribuut1 | MBean3Attribuut1 |
MBean1Attribuut2 | MBean2Attribuut2 | MBean3Attribuut2 |
MBean1Attribuut3 | MBean2Attribuut3 | MBean3Attribuut3 |
Deze regel zal 3 objecten retourneren: de bovenste rij van de kolom: MBean1, MBean2, MBean3.
Voor meer informatie over objecten verwijst u naar de tabel met ondersteunde macro's, sectie Ontdekking van MBeans.
De configuratie van de ontdekkingsregel die MBeans verzamelt (zonder de attributen) ziet er als volgt uit:
De gebruikte sleutel hier:
Alle garbage collectors zonder attributen worden ontdekt. Omdat garbage collectors dezelfde attribuutset hebben, kunnen we gewenste attributen in item-prototypen als volgt gebruiken:
De gebruikte sleutels hier:
De LLD-ontdekkingsregel resulteert in iets dat hierop lijkt (items worden ontdekt voor twee garbage collectors):
Deze regel zal 9 objecten retourneren met de volgende velden: MBean1Attribute1, MBean2Attribute1, MBean3Attribute1, MBean1Attribute2, MBean2Attribute2, MBean3Attribute2, MBean1Attribute3, MBean2Attribute3, MBean3Attribute3.
Voor meer informatie over objecten verwijst u naar de tabel met ondersteunde macro's, sectie Ontdekking van MBean-attributen.
De configuratie van de ontdekkingsregel die MBean-attributen verzamelt, ziet er als volgt uit:
De gebruikte sleutel hier:
Alle garbage collectors met een enkel attribuutitem worden ontdekt.
In dit specifieke geval wordt voor elk MBean-attribuut een item gemaakt vanuit het prototype. Het belangrijkste nadeel van deze configuratie is dat het maken van een trigger vanuit triggerprototypen onmogelijk is, omdat er slechts één itemprototype is voor alle attributen. Deze opstelling kan dus worden gebruikt voor gegevensverzameling, maar wordt niet aanbevolen voor automatische monitoring.
jmx.get[]
is vergelijkbaar met het item jmx.discovery[]
, maar het zet Java-objecteigenschappen niet om in LLD-macro's (low-level discovery) voorbeeldnamen en kan daarom waarden retourneren zonder de beperkingen die gepaard gaan met de generatie van LLD-macronamen, zoals streepjes of niet-ASCII-tekens.
Bij gebruik van jmx.get[]
voor ontdekking kunnen LLD-macro's voor lage niveaus afzonderlijk worden gedefinieerd in het aangepaste LLD-macro tabblad van de configuratie van de ontdekkingsregel, met gebruik van JSONPath om te wijzen naar de vereiste waarden.
Ontdekkingselement: jmx.get[beans,"com.example:type=*,*"]
Reactie:
[
{
"object": "com.example:type=Hello,data-src=data-base,key=value",
"domain": "com.example",
"properties": {
"data-src": "data-base",
"key": "value",
"type": "Hello"
}
},
{
"object": "com.example:type=Atomic",
"domain": "com.example",
"properties": {
"type": "Atomic"
}
}
]
In dit voorbeeld wordt een ontdekking uitgevoerd met behulp van het jmx.get[]
item. Het retourneert een JSON-respons met gedetecteerde MBeans en hun eigenschappen. Elke MBean heeft een objectnaam, domein en een lijst van eigenschappen. De LLD-macro's kunnen vervolgens worden ingesteld om de gewenste waarden uit deze respons te halen met behulp van JSONPath.
Ontdekkingsitem: jmx.get[attributes,"com.example:type=*,*"]
Reactie:
[
{
"object": "com.example:type=*",
"domain": "com.example",
"properties": {
"type": "Eenvoudig"
}
},
{
"object": "com.zabbix:type=yes,domain=zabbix.com,data-source=/dev/rand,key=value,obj=true",
"domain": "com.zabbix",
"properties": {
"type": "Hello",
"domain": "com.example",
"data-source": "/dev/rand",
"key": "value",
"obj": true
}
}
]