6 Откривање JMX објеката

Преглед

Могуће је открити све JMX MBeans или MBean атрибути или да наведете образац за откривање ових објеката.

Обавезно је разумети разлику између MBean-а и MBean-а атрибути за конфигурацију правила откривања. MBean је објекат који може представљати уређај, апликацију или било који ресурс који треба да буде управљао.

На пример, постоји MBean који представља веб сервер. Његово атрибути су број конекција, број нити, временско ограничење захтева, http кеш датотека, употреба меморије, итд. Изражавање ове мисли на људском свеобухватним језиком можемо дефинисати апарат за кафу као MBean који има следеће атрибуте које треба пратити: количину воде по шољи, просечна потрошња воде за одређени временски период, број зрна кафе потребна по шољици, зрна кафе и време допуњавања воде итд.

Кључ ставке

У правило откривања конфигурацију, изаберите ** JMX агент** у пољу Тип.

Два кључа ставки су подржана за откривање JMX објеката - jmx.discovery[] и jmx.get[]:

Item key
Return value Parameters Comment
jmx.discovery[<discovery mode>,<object name>,<unique short description>]
Ова ставка враћа JSON низ са LLD макроима који описују MBean објекте или њихове атрибуте. режим откривања - једно од следећег: атрибути (преузми JMX MBean атрибуте, подразумевано) или beans (преузми JMX MBean)
име објекта - образац назива објекта (погледајте документација) која идентификује MBean имена која ће се преузети (подразумевано је празно, преузимају се сви регистровани бинови)
јединствени кратки опис - јединствени опис који дозвољава више JMX ставки са истим начином откривања и именом објекта на домаћину (опционо)
Примери:
→ jmx.discovery- преузми све JMX MBean атрибуте
→ jmx.discovery[beans] - преузми све JMX MBean
→ jmx.discovery[attributes,"*:type=GarbageCollector,name=*"] - преузима све сакупљаче смећа атрибути
→ jmx.discovery[beans,"*:type=GarbageCollector,name=*"] - преузми све сакупљаче смећа

Постоје нека ограничења за шта MBean својства ова ставка може да врати на основу ограничених знакова који су подржани у генерисању имена макроа (подржани карактери се могу описати следећим регуларним изразом: А-З0-9_\.). Тако, на пример, да бисте открили својства MBean-а са речју са цртицом или знаковима који нису ASCII, морате да користите jmx. get[].
jmx.get[<discovery mode>,<object name>,<unique short description>]
Ова ставка враћа JSON низ са MBean објектима или њиховим атрибутима.

У поређењу са jmx.discovery[], не дефинише LLD макрое.
режим откривања - једно од следећег : атрибути (преузми JMX MBean атрибуте, подразумевано) или beans (преузми JMX MBean)
име објекта - образац назива објекта (погледајте документацију) који идентификује MBean имена која се преузимају (подразумевано празно, преузимање сви регистровани бинови)
јединствени кратки опис - јединствени опис који дозвољава више JMX ставки са истим начином откривања и именом објекта на хосту (опционо)
Када користите ову ставку, потребно је дефинисати прилагођене макрое за откривање ниског нивоа, указујући на вредности екстраховане из враћеног JSON-а користећи JSONPath.

Ако ниједан параметар није прослеђен, сви MBean атрибути од JMX се траже. Без навођења параметара за JMX откривање или покушава да прими све атрибуте за широк опсег као што је *: type =*, name =* може довести до потенцијалних проблема са перформансама.

Коришћење јмк.дисцовери

Ова ставка враћа JSON објекат са макроима за откривање ниског нивоа описивање 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}":"јава.ланг.Боолеан",
               "{#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.Boolean",
               "{#JMXOBJ}":"ava.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"
           }
       ]
Подржани макрои

Следећи макрои су подржани за коришћење у правилу откривања филтер и прототипови ставки, покретача и графикона:

Macro Description
Откриће MBean атрибута
{#JMXVALUE} Вредност атрибута.
{#JMXTYPE} Тип атрибута.
{#JMXOBJ} Име објекта.
{#JMXDESC} Име објекта укључујући име атрибута.
{#JMXATTR} Име атрибута.
Откриће MBeans-а
{#JMXDOMAIN} MBean домен. (Zabbix резервисано име)
{#JMXOBJ} Име објекта. (Zabbix резервисано име)
{#JMX<key property>} MBean својства (као {#JMXTYPE}, {#JMXNAME}) (погледајте Ограничења испод).
Ограничења

Постоје нека ограничења повезана са алгоритмом креирања LLD-а имена макроа из MBean имена својства:

  • имена атрибута су промењена у велика слова
  • имена атрибута се игноришу (не генеришу се LLD макрои) ако су састоје се од неподржаних знакова за имена LLD макроа. Подржано знакови се могу описати следећим регуларним изразом: А-З0-9_\.
  • ако се атрибут зове "obj" или "domain" они ће бити занемарени због преклапања са вредностима резервисаног Zabbix-а својства {#JMXOBJ} и {#JMXDOMAIN}

Узмите у обзир овај пример jmx.discovery (са режимом "пасуљ"). MBean има дефинисана следећа својства (од којих ће нека бити занемарена; погледајте доле):

name=test
       тип=Type
       attributes []=1,2,3
       Name=NameOfTheTest
       domAin=some

Као резултат JMX открића, следећи LLD макрои ће бити генерисано:

  • {#JMXDOMAIN} - Zabbix интерни, који описује домен MBean-а
  • {#JMXOBJ} - Zabbix интерни, који описује MBean објекат
  • {#JMXNAME} - креирано од својства "name".

Занемарена својства су:

  • тип: његово име садржи неподржане знакове (non-ASCII)
  • атрибути[] : његово име садржи неподржане знакове (квадрат заграде нису подржане)
  • Име: већ је дефинисано (име=тест)
  • domAin: то је резервисано име Zabbix-а
Примери

Погледајмо још два практична примера креирања LLD правила са коришћење MBean-а. Да бисте разумели разлику између прикупљања LLD правила MBeans и LLD правило које боље прикупља MBean атрибуте, узмите а погледајте следећу табелу:

MBean1 MBean2 MBean3
MBean1Attribute1 MBean2Attribute1 MBean3Attribute1
MBean1Attribute2 MBean2Attribute2 MBean3Attribute2
MBean1Attribute3 MBean2Attribute3 MBean3Attribute3
Пример 1: Откривање MBeans

Ово правило ће вратити 3 објекта: горњи ред колоне: MBean1, MBean2, MBean3.

За више информација о објектима погледајте подржани макрои табела, Откривање MBeans одељка.

Конфигурација правила откривања која прикупља MBeans (без атрибута) изгледа овако:

lld_rule_mbean.png

Кључ који се овде користи:

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

Биће откривени сви сакупљачи смећа без атрибута. Ас Сакупљачи смећа имају исти скуп атрибута, можемо користити жељени атрибуте у прототиповима ставке на следећи начин:

lld_rule_mbean_prototypes.png

Кључеви који се овде користе:

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

LLD правило откривања ће резултирати нечим сличним овом (ставке су откривено за два сакупљача смећа):

discovery_rule_mbean_3.png

Пример 2: Откривање MBean атрибута

Ово правило ће вратити 9 објеката са следећим пољима: MBean1Attribute1, MBean2Attribute1, MBean3Attribute1,MBean1Attribute2,MBean2Attribute2, MBean3Attribute2, MBean1Attribute3, MBean2Attribute3, MBean3Attribute3.

За више информација о објектима погледајте подржано макрои табела, Откривање MBean атрибута одељак.

Конфигурација правила откривања која прикупља MBean атрибуте изгледа као следеће:

lld_rule_mbean_attr.png

Кључ који се овде користи:

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

Сви сакупљачи смећа са једним атрибутом ставке ће бити откривено.

lld_rule_mbean_attr_prototypes.png

У овом конкретном случају, ставка ће бити креирана од прототипа за сваки MBean атрибут. Главни недостатак ове конфигурације је тај окидач стварање од прототипова окидача је немогуће јер постоји само једна ставка прототип за све атрибуте. Дакле, ово подешавање се може користити за податке прикупљање, али се не препоручује за аутоматско праћење.

Коришћењем jmx.get

jmx.get[] је сличан ставци jmx.discovery[], али није претворити својства Јава објеката у имена макроа за откривање ниског нивоа и стога може вратити вредности без ограничења које су повезано са генерисањем имена LLD макроа као што су цртице или non-ASCII ликова.

Када користите jmx.get[] за откривање, макрои за откривање ниског нивоа могу бити дефинисано посебно у обичају LLD макро картица на конфигурацију правила открића, користећи JSONPath да укаже на потребно вредности.

Откривање MBeans

Ставка открића: 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"
               }
           }
       ]
Откривање MBean атрибута

Ставка открића: 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
               }
           }
       ]