Могуће је открити све JMX MBeans или MBean атрибути или да наведете образац за откривање ових објеката.
Обавезно је разумети разлику између MBean-а и MBean-а атрибути за конфигурацију правила откривања. MBean је објекат који може представљати уређај, апликацију или било који ресурс који треба да буде управљао.
На пример, постоји MBean који представља веб сервер. Његово атрибути су број конекција, број нити, временско ограничење захтева, http кеш датотека, употреба меморије, итд. Изражавање ове мисли на људском свеобухватним језиком можемо дефинисати апарат за кафу као MBean који има следеће атрибуте које треба пратити: количину воде по шољи, просечна потрошња воде за одређени временски период, број зрна кафе потребна по шољици, зрна кафе и време допуњавања воде итд.
У конфигурацији discovery rule , изаберите JMX агент у пољу Тип.
Подржана су два кључа ставке за откривање JMX објеката - jmx.discovery[] и jmx.get[]:
Item key | |||
---|---|---|---|
Враћена вредност | Параметри | Коментар | |
jmx.discovery[<discovery mode>,<object name>,<unique short description>] | |||
Ова ставка враћа JSON низ са LLD макроима који описују MBean објекте или њихове атрибуте. | режим откривања - једно од следећег: атрибути (преузимање JMX MBean атрибута, подразумевано) или беанс (преузимање JMX MBeans) назив објекта - образац назива објекта (видети документацију) који идентификује имена MBean објеката која треба преузети (подразумевано празно, преузимање свих регистрованих bean објеката) јединствени кратак опис - јединствени опис који дозвољава више JMX ставки са истим режимом откривања и називом објекта на хосту (опционо) |
Примери: → jmx.discovery - преузимање свих JMX MBean атрибута → jmx.discovery[beans] - преузимање свих JMX MBeans објеката → jmx.discovery[attributes,"*:type=GarbageCollector,name=*"] - преузимање свих атрибута сакупљача смећа → jmx.discovery[beans,"*:type=GarbageCollector,name=*"] - преузимање свих сакупљача смећа Постоје нека ограничења у погледу тога која својства MBean-а ова ставка може да врати на основу ограниченог броја знакова који су подржани у генерисању имена макроа (подржани знакови могу се описати следећим регуларним изразом: A-Z0-9_\. ). Тако, на пример, да бисте открили својства MBean-а са речју са цртицом или знаковима који нису ASCII, потребно је да користите jmx.get[] . |
|
jmx.get[<discovery mode>,<object name>,<unique short description>] | |||
Ова ставка враћа JSON низ са MBean објектима или њиховим атрибутима. У поређењу са jmx.discovery[] , не дефинише LLD макрое. |
режим откривања - једно од следећег: атрибути (преузимање JMX MBean атрибута, подразумевано) или беанс (преузимање JMX MBeans) назив објекта - образац имена објекта (видети документацију) који идентификује имена MBean објеката која треба преузети (подразумевано празно, преузимање свих регистрованих beanova) јединствени кратак опис - јединствени опис који омогућава више JMX ставки са истим режимом откривања и именом објекта на домаћину (опционо) |
Када користите ову ставку, потребно је дефинисати прилагођене макрое за откривање ниског нивоа, који указују на вредности извучене из враћеног JSON-а помоћу JSONPath. |
Ако се не прослеђују параметри, захтевају се сви атрибути MBean-а из JMX-а. Ненавођење параметара за откривање JMX-а или покушај добијања свих атрибута за широк опсег као што је *:type=*,name=*
може довести до потенцијалних проблема са перформансама.
Ова ставка враћа JSON објекат са макроима за откривање ниског нивоа који описују MBean објекте или атрибуте. На пример, приликом откривања MBean атрибута (реформатираних ради јасноће):
[
{
"{#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"
}
]
У открићу MBeans објеката (реформатирано ради јасноће):
[
{
"{#JMXDOMAIN}":"java.lang",
"{#JMXTYPE}":"GarbageCollector",
"{#JMXOBJ}":"java.lang:type=GarbageCollector,name=PS Scavenge",
"{#JMXNAME}":"PS Scavenge"
}
]
Следећи макрои су подржани за употребу у правилу откривања filter и прототиповима ставки, окидача и графикона:
Macro | Description |
---|---|
Откривање атрибута MBean-а | |
{#JMXVALUE} | Вредност атрибута. |
{#JMXTYPE} | Тип атрибута. |
{#JMXOBJ} | Назив објекта. |
{#JMXDESC} | Назив објекта, укључујући назив атрибута. |
{#JMXATTR} | Назив атрибута. |
Откривање MBean-ова | |
{#JMXDOMAIN} | MBean домен. (Zabbix резервисано име) |
{#JMXOBJ} | Назив објекта. (Zabbix резервисано име) |
{#JMX<кључно својство>} | MBean својства (као што су {#JMXTYPE}, {#JMXNAME}) (погледајте Ограничења испод). |
Постоје нека ограничења повезана са алгоритмом креирања LLD назива макроа из назива својстава MBean-а:
A-Z0-9_\.
Молимо вас да размотрите овај пример jmx.discovery (са режимом "beans"). MBean има следећа дефинисана својства (нека од њих ће бити игнорисана; видети доле):
name=test тип=Type attributes []=1,2,3 Name=NameOfTheTest domAin=some
Као резултат JMX откривања, генерисаће се следећи LLD макрои:
Игнорисана својства су:
Let’s review two more practical examples of a LLD rule creation with the use of MBean. To understand the difference between a LLD rule collecting MBeans and a LLD rule collecting MBean attributes better please take a look at following table:
MBean1 | MBean2 | MBean3 |
MBean1Attribute1 | MBean2Attribute1 | MBean3Attribute1 |
MBean1Attribute2 | MBean2Attribute2 | MBean3Attribute2 |
MBean1Attribute3 | MBean2Attribute3 | MBean3Attribute3 |
Ово правило ће вратити 3 објекта: горњи ред колоне: MBean1, MBean2, MBean3.
За више информација о објектима погледајте табелу supported macros , одељак Откривање MBeans-ова.
Конфигурација правила откривања која прикупља MBeans-ове (без атрибута) изгледа овако:
Кључ који се овде користи:
jmx.discovery[beans,":type=GarbageCollector,name="]
Сви сакупљачи смећа без атрибута ће бити откривени. Пошто сакупљачи смећа имају исти скуп атрибута, можемо користити жељене атрибуте у прототиповима елемената на следећи начин:
Кључеви који се овде користе:
jmx[{#JMXOBJ},CollectionCount] jmx[{#JMXOBJ},CollectionTime] jmx[{#JMXOBJ},Valid]
LLD правило откривања ће резултирати нечим сличним овоме (елементи су откривени за два сакупљача смећа колекционари):
Ово правило ће вратити 9 објеката са следећим пољима: MBean1Attribute1, MBean2Attribute1, MBean3Attribute1, MBean1Attribute2, MBean2Attribute2, MBean3Attribute2, MBean1Attribute3, MBean2Attribute3, MBean3Attribute3.
За више информација о објектима погледајте табелу подржани макрои , одељак Откривање атрибута MBean-а.
Конфигурација правила откривања која прикупља атрибуте MBean-а изгледа овако:
Кључ који се овде користи:
jmx.discovery[attributes,":type=GarbageCollector,name="]
Сви сакупљачи смећа са једним атрибутом ставке биће откривени.
У овом конкретном случају, ставка ће бити креирана из прототипа за сваки атрибут MBean-а. Главни недостатак ове конфигурације је то што је креирање окидача из прототипова окидача немогуће јер постоји само један прототип ставке за све атрибуте. Дакле, ово подешавање се може користити за прикупљање података, али се не препоручује за аутоматско праћење.
jmx.get[]
је сличан ставци jmx.discovery[]
, али не претвара својства Јава објекта у имена макроа за откривање ниског нивоа и стога може вратити вредности без ограничења која су повезана са генерисањем имена LLD макроа, као што су цртице или не-ASCII карактери.
Када се користи jmx.get[]
за откривање, макрои за откривање ниског нивоа могу се дефинисати одвојено у прилагођеној картици LLD макро у конфигурацији правила откривања, користећи JSONPath да би се указало на потребне вредности.
Ставка открића: jmx.get[beans,"com.example:type=*,*"]
Одговор:
[
{
"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"
}
}
]
Ставка открића: jmx.get[attributes,"com.example:type=*,*"]
Одговор:
[
{
"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
}
}
]