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

Преглед

Могуће је открити све 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=* може довести до потенцијалних проблема са перформансама.

Коришћење jmx.discovery

Ова ставка враћа 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-а:

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

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

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

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

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

Игнорисана својства су:

  • тип : његово име садржи неподржане знакове (non-ASCII)
  • attributes[] : његово име садржи неподржане знакове (угласте заграде нису подржане)
  • Name : већ је дефинисано (name=test)
  • domAin : то је Zabbix резервисано име
Examples

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
Пример 1: Откривање MBeans-ова

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

За више информација о објектима погледајте табелу supported macros , одељак Откривање 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 макроа, као што су цртице или не-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
               }
           }
       ]