This is a translation of the original English documentation page. Help us make it better.

5 גילוי פריטי JMX

סקירה כללית

אפשר לגלות הכל תכונות JMX MBeans או MBean או כדי לציין דפוס עבור הגילוי של החפצים הללו.

חובה להבין את ההבדל בין MBean ל-MBean תכונות עבור תצורת כלל גילוי. MBean הוא אובייקט אשר יכול לייצג מכשיר, אפליקציה או כל משאב שצריך מנוהל.

לדוגמה, יש MBean המייצג שרת אינטרנט. שֶׁלָה התכונות הן ספירת חיבורים, ספירת שרשורים, פסק זמן של בקשה, http מטמון קבצים, שימוש בזיכרון וכו'. הבעת מחשבה זו באדם שפה מקיפה אנו יכולים להגדיר מכונת קפה כ-MBean אשר יש לנטר את התכונות הבאות: כמות מים לכל כוס, צריכה ממוצעת של מים לפרק זמן מסוים, מספר של פולי קפה נדרשים לכוס, זמן מילוי פולי קפה ומים וכו'.

מפתח פריט

ב גילוי כלל תצורה, בחר סוכן JMX בשדה סוג.

שני מפתחות פריטים נתמכים לגילוי אובייקט JMX - jmx.discovery[] ו-jmx.get[]:

מפתח פריט
ערך החזרה פרמטרים הערה
jmx.discovery[<מצב גילוי>,<שם אובייקט>,<תיאור קצר ייחודי>]
פריט זה מחזיר מערך JSON עם פקודות מאקרו LLD המתארות אובייקטי MBean או תכונותיהם. מצב גילוי - אחד מהבאים: attributes (אחזר תכונות JMX MBean, ברירת מחדל) או beans (אחזר JMX MBeans)
שם אובייקט - דפוס שם אובייקט (ראה תיעוד) המזהה את יש לאחזר שמות MBean (ריק כברירת מחדל, אחזור כל הפולים הרשומים)
תיאור קצר ייחודי - תיאור ייחודי המאפשר מספר פריטי JMX עם אותו מצב גילוי ושם אובייקט במארח (אופציונלי)
דוגמאות :
→ jmx.discovery - אחזר את כל תכונות JMX MBean
→ jmx.discovery[שעועית] - אחזר את כל JMX MBeans
→ jmx.discovery[attributes,"*:type=GarbageCollector, name=*"] - אחזר את כל תכונות אספן האשפה
→ jmx.discovery[beans,"*:type=GarbageCollector,name=*"] - אחזר את כל אספני האשפה

יש כמה מגבלות לאילו מאפייני MBean פריט זה יכול להחזיר בהתבסס על תווים מוגבלים הנתמכים ביצירת שמות מאקרו (תווים נתמכים יכולים להיות מתוארים על ידי הביטוי הרגולרי הבא: A-Z0-9_\. ). אז, למשל, כדי לגלות מאפייני MBean עם מילה מקף או תווים שאינם ASCII, עליך להשתמש ב-'jmx.get[]'.

נתמך מאז Zabbix Java gateway 3.4.
jmx.get[<מצב גילוי>,<שם אובייקט>,<תיאור קצר ייחודי>]
פריט זה מחזיר מערך JSON עם אובייקטי MBean או התכונות שלהם.

בהשוואה ל-jmx.discovery[] הוא אינו מגדיר פקודות מאקרו LLD.
מצב גילוי - אחד מהבאים : תכונות (אחזר תכונות JMX MBean, ברירת מחדל) או שעועית (אחזר JMX MBeans)
שם אובייקט - דפוס שם אובייקט (ראה תיעוד) מזהה את שמות ה-MBean שיש לאחזר (ריק כברירת מחדל, אחזור כל הפולים הרשומים)
תיאור קצר ייחודי - תיאור ייחודי המאפשר פריטי JMX מרובים עם אותו מצב גילוי ושם אובייקט במארח (אופציונלי)
כשמשתמשים בפריט זה, יש צורך להגדיר פקודות מאקרו גילוי מותאמות אישית ברמה נמוכה, המצביעים על ערכים שחולצו מה-JSON שהוחזר באמצעות JSONPath.

br>נתמך מאז Zabbix Java gateway 4.4.

::: שימו לב חשוב אם לא מועברים פרמטרים, כל תכונות 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}": "ספירת אוסף"
            },
            {
                "{#JMXVALUE}":"0",
                "{#JMXTYPE}":"java.lang.Long",
                "{#JMXOBJ}":"java.lang:type=GarbageCollector,name=PS Scavenge",
                "{#JMXDESC}":"java.lang:type=GarbageCollector,name=PS Scavenge,CollectionTime",
                "{#JMXATTR}":"זמן איסוף"
            },
            {
                "{#JMXVALUE}":"נכון",
                "{#JMXTYPE}":"java.lang.Boolean",
                "{#JMXOBJ}":"java.lang:type=GarbageCollector,name=PS Scavenge",
                "{#JMXDESC}":"java.lang:type=GarbageCollector,name=PS Scavenge,Valid",
                "{#JMXATTR}":"תקף"
            },
            {
                "{#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}":"שם"
            },
            {
                "{#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}":"שם אובייקט"
            }
       ]

בגילוי של MBeans (פורמט מחדש לצורך הבהירות):

[
            {
                "{#JMXDOMAIN}":"java.lang",
                "{#JMXTYPE}":"אספן זבל",
                "{#JMXOBJ}":"java.lang:type=GarbageCollector,name=PS Scavenge",
                "{#JMXNAME}":"PS Scavenge"
            }
       ]
פקודות מאקרו נתמכות

פקודות המאקרו הבאות נתמכות לשימוש בכלל הגילוי מסנן ואבות טיפוס של פריטים, טריגרים וגרפים:

מאקרו תיאור
גילוי של תכונות MBean
{#JMXVALUE} ערך תכונה.
{#JMXTYPE} סוג תכונה.
{#JMXOBJ} שם האובייקט.
{#JMXDESC} שם אובייקט כולל שם תכונה.
{#JMXATTR} שם תכונה.
גילוי של MBeans
{#JMXDOMAIN} דומיין MBean. (שם שמור זביביקס)
{#JMXOBJ} שם האובייקט. (שם שמור זביביקס)
{#JMX<נכס מפתח>} מאפייני MBean (כמו {#JMXTYPE}, {#JMXNAME}) (ראה הגבלות למטה).
מגבלות

ישנן כמה מגבלות הקשורות לאלגוריתם של יצירת LLD שמות מאקרו משמות מאפיינים של MBean:

  • שמות התכונות משתנים לאותיות רישיות
  • מתעלמים משמות תכונות (לא נוצרות פקודות מאקרו LLD) אם הן מורכב מתווים לא נתמכים עבור שמות מאקרו LLD. נתמך ניתן לתאר תווים על ידי הביטוי הרגולרי הבא: A-Z0-9_\.
  • אם תכונה נקראת "obj" או "דומיין" תתעלם ממנה בגלל החפיפה עם ערכי ה-Zabix השמורה המאפיינים {#JMXOBJ} ו-{#JMXDOMAIN} (נתמכים מאז Zabbix 3.4.3.)

אנא שקול את הדוגמה הזו של jmx.discovery (עם מצב "שעועית"). MBean בעל המאפיינים הבאים מוגדרים:

 שם=מבחן
        тип=סוג
        תכונות []=1,2,3
        Name=NameOfTheTest
        domAin=חלק

כתוצאה מגילוי JMX, פקודות המאקרו של LLD הבאות יהיו נוצר:

  • {#JMXDOMAIN} - Zabbix פנימי, המתאר את הדומיין של MBean
  • {#JMXOBJ} - פנימי של Zabbix, המתאר אובייקט MBean
  • {#JMXNAME} - נוצר מנכס "שם".

מאפיינים שמתעלמים מהם הם:

  • טיפ: השם שלו מכיל תווים לא נתמכים (לא ASCII)
  • attributes[] : השם שלו מכיל תווים לא נתמכים (ריבוע סוגריים לא נתמכים)
  • שם : זה כבר מוגדר (שם=מבחן)
  • 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},זמן איסוף]
        jmx[{#JMXOBJ},תקף]

כלל גילוי 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[], אך אינו להפוך מאפייני אובייקט Java לשמות מאקרו גילוי ברמה נמוכה ו לכן יכול להחזיר ערכים ללא limitations שהם קשור ליצירת שמות מאקרו 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",
                "נכסים": {
                    "data-src": "בסיס נתונים",
                    "ключ": "זנאчение",
                    "type": "שלום"
                }
            },
            {
                "object": "com.example:type=Atomic",
                "domain": "com.example",
                "נכסים": {
                    "type": "אטומי"
                }
            }
       ]
גילוי תכונות MBean

פריט גילוי: jmx.get[attributes,"com.example:type=*,*"]

תְגוּבָה:

[
            {
                "object": "com.example:type=*",
                "domain": "com.example",
                "נכסים": {
                    "type": "פשוט"
                }
            },
            {
                "object": "com.zabbix:type=yes,domain=zabbix.com,data-source=/dev/rand,ключ=значение,obj=true",
                "domain": "com.zabbix",
                "נכסים": {
                    "type": "שלום",
                    "domain": "com.example",
                    "data-source": "/dev/rand",
                    "ключ": "זנאчение",
                    "obj": נכון
                }
            }
       ]