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.
In de ontdekkingsregel configuratie, selecteer JMX-agent in het Type veld.
Er worden twee item-sleutels ondersteund voor JMX-objectontdekking - 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 (JMX MBean-attributen ophalen, standaard) of beans (JMX MBeans ophalen) objectnaam - objectnaam patroon (zie documentatie) die de MBean-namen identificeert die moeten worden opgehaald (standaard leeg, alle geregistreerde beans ophalen) 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 eigenschappen 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 het genereren van de macronaam (ondersteunde tekens kunnen worden beschreven door de volgende reguliere expressie: A-Z0-9_\. ). Dus bijvoorbeeld om MBean-eigenschappen te ontdekken met een woord met een streepje of niet-ASCII-tekens, moet je 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. Vergeleken met jmx.discovery[] definieert het geen LLD-macro's. |
ontdekkingsmodus - een van de volgende: attributes (JMX MBean-attributen ophalen, standaard) of beans (JMX MBeans ophalen) objectnaam - objectnaam patroon (zie documentatie) die de MBean-namen identificeert die moeten worden opgehaald (standaard leeg, alle geregistreerde beans ophalen) unieke korte beschrijving - een unieke beschrijving die meerdere JMX-items met dezelfde ontdekkingsmodus en objectnaam op de host mogelijk maakt (optioneel) |
Bij gebruik van dit item is het nodig om aangepaste laag-niveau ontdekkingsmacro's te 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 opgevraagd. Het niet specificeren van parameters voor JMX-ontdekking of proberen alle attributen op te halen voor een breed scala zoals *:type=*,name=*
kan leiden tot mogelijke prestatieproblemen.
Dit item retourneert een JSON-object met lage-niveau ontdekkingsmacro's die MBean-objecten of attributen beschrijven. Bijvoorbeeld, bij de ontdekking van MBean-attributen (hergeformatteerd voor duidelijkheid):
[
{
"{#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"
}
]
Bij de ontdekking van MBeans (hergeformatteerd voor duidelijkheid):
[
{
"{#JMXDOMAIN}":"java.lang",
"{#JMXTYPE}":"GarbageCollector",
"{#JMXOBJ}":"java.lang:type=GarbageCollector,name=PS Scavenge",
"{#JMXNAME}":"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-macro's uit MBean-eigenschappennamen:
A-Z0-9_\.
Houd rekening met dit jmx.discovery (met de modus "beans") voorbeeld. De MBean heeft de volgende eigenschappen gedefinieerd:
Als gevolg 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, bekijk de volgende tabel:
MBean1 | MBean2 | MBean3 |
MBean1Attribute1 | MBean2Attribute1 | MBean3Attribute1 |
MBean1Attribute2 | MBean2Attribute2 | MBean3Attribute2 |
MBean1Attribute3 | MBean2Attribute3 | MBean3Attribute3 |
Deze regel zal 3 objecten retourneren: de bovenste rij van de kolom: MBean1, MBean2, MBean3.
Voor meer informatie over objecten kun je verwijzen naar de tabel ondersteunde macros, Ontdekking van MBeans sectie.
De configuratie van de ontdekkingsregel voor het verzamelen van MBeans (zonder de attributen) ziet er als volgt uit:
De gebruikte sleutel hier:
Alle garbage collectors zonder attributen worden ontdekt. Omdat de garbage collectors dezelfde attributenset hebben, kunnen we de gewenste attributen in item-prototypen op de volgende manier gebruiken:
De gebruikte sleutels hier:
De LLD-ontdekkingsregel resulteert in iets wat hier dicht bij komt (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 kun je verwijzen naar de tabel ondersteunde macros, Ontdekking van MBean-attributen sectie.
De configuratie van de ontdekkingsregel voor het verzamelen van MBean-attributen ziet er als volgt uit:
De gebruikte sleutel hier:
Alle garbage collectors met een enkel item-attribuut worden ontdekt.
In dit specifieke geval wordt er voor elk MBean-attribuut een item gemaakt vanuit een prototype. Het belangrijkste nadeel van deze configuratie is dat het niet mogelijk is om triggers te maken vanuit trigger-prototypen, omdat er slechts één item-prototype is voor alle attributen. Dus deze opstelling kan worden gebruikt voor gegevensverzameling, maar wordt niet aanbevolen voor automatische monitoring.
jmx.get[]
is vergelijkbaar met het jmx.discovery[]
item, maar het zet Java-objecteigenschappen niet om in namen van ontdekkingsmacro's op laag niveau. Hierdoor kan het waarden retourneren zonder de beperkingen die geassocieerd worden met LLD-macronaamgeneratie, zoals streepjes of niet-ASCII-tekens.
Bij gebruik van jmx.get[]
voor ontdekking kunnen macronamen voor ontdekking op laag niveau apart gedefinieerd worden in het aangepaste LLD-macro tabblad van de ontdekkingsregelconfiguratie, door gebruik te maken van JSONPath om te verwijzen naar de benodigde waarden.
Ontdekkingsitem: 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"
}
}
]
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
}
}
]