You are viewing documentation for the development version, it may be incomplete.
Join our translation project and help translate Zabbix documentation into your native language.

6 JMXオブジェクトの検出

概要

すべての JMX MBean または MBean 属性を 検出 したり、これらのオブジェクトの検出パターンを指定したりできます。

ディスカバリ ルールを設定するには、MBean と MBean 属性の違いを理解しておく必要があります。 MBean は、管理が必要なデバイス、アプリケーション、または任意のリソースを表すことができるオブジェクトです。

たとえば、Web サーバーを表す MBean があります。 その属性は、接続数、スレッド数、リクエスト タイムアウト、http ファイル キャッシュ、メモリ使用量などです。 この考えを人間の包括的な言語で表現すると、コーヒー マシンを豆と水の補充時間などを監視対象の属性として持つ MBean として定義できます。

アイテムキー

ディスカバリールールの設定で、タイプフィールドにJMXエージェントを選択します。

JMXオブジェクトディスカバリ用に2つのアイテムキー(jmx.discovery[]とjmx.get[])がサポートされています。

アイテムキー
戻り値 パラメータ コメント
jmx.discovery[<ディスカバリーモード>,<オブジェクト名>,<一意な短い説明>]
このアイテムは、MBeanオブジェクトまたはその属性を記述するLLDマクロを含むJSON配列を返します。 ディスカバリーモード - 次のいずれか: attributes(JMX MBean属性の取得、デフォルト)またはbeans(JMX MBeanの取得)
オブジェクト名 - 取得するMBean名を識別するオブジェクト名パターン(ドキュメントを参照)(デフォルトは空、すべての登録済みBeanを取得)
一意な短い説明 - ホスト上で同じディスカバリーモードとオブジェクト名を持つ複数のJMXアイテムを許可する一意な説明(省略可能)
例:
→ jmx.discovery - すべてのJMX MBean属性を取得
→ jmx.discovery[beans] - すべてのJMX MBeanを取得
→ jmx.discovery[attributes,"*:type=GarbageCollector,name=*"] - すべてのガベージコレクタ属性を取得
→ jmx.discovery[beans,"*:type=GarbageCollector,name=*"] - すべてのガベージコレクタを取得

このアイテムが返すことができるMBeanプロパティには、マクロ名生成でサポートされる文字が制限されているため、制限事項があります(サポートされる文字は次の正規表現で表現できます: A-Z0-9_\.)。したがって、例えばハイフン付きの単語や非ASCII文字を含むMBeanプロパティをディスカバリするには、jmx.get[]を使用する必要があります。
jmx.get[<ディスカバリーモード>,<オブジェクト名>,<一意な短い説明>]
このアイテムは、MBeanオブジェクトまたはその属性を含むJSON配列を返します。

jmx.discovery[]と比較して、LLDマクロは定義しません。
ディスカバリーモード - 次のいずれか: attributes(JMX MBean属性の取得、デフォルト)またはbeans(JMX MBeanの取得)
オブジェクト名 - 取得するMBean名を識別するオブジェクト名パターン(ドキュメントを参照)(デフォルトは空、すべての登録済みBeanを取得)
一意な短い説明 - ホスト上で同じディスカバリーモードとオブジェクト名を持つ複数のJMXアイテムを許可する一意な説明(省略可能)
このアイテムを使用する場合は、返されたJSONからJSONPathを使用して抽出した値を指すカスタム低レベルディスカバリーマクロを定義する必要があります。

パラメータを指定しない場合、JMXからすべてのMBean属性が要求されます。JMXディスカバリでパラメータを指定しない、または*:type=*,name=*のような広範囲のすべての属性を取得しようとすると、パフォーマンス上の問題が発生する可能性があります。

jmx.discoveryの使用

このアイテムは、MBeanオブジェクトまたは属性を記述する低レベルディスカバリーマクロを含む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}":"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"
           }
       ]

MBeanのディスカバリーの場合(見やすく整形):

[
           {
               "{#JMXDOMAIN}":"java.lang",
               "{#JMXTYPE}":"GarbageCollector",
               "{#JMXOBJ}":"java.lang:type=GarbageCollector,name=PS Scavenge",
               "{#JMXNAME}":"PS Scavenge"
           }
       ]
サポートされているマクロ

次のマクロはディスカバリルール フィルター およびアイテム、トリガー、グラフのプロトタイプでの使用がサポートされています。

マクロ 説明
MBean 属性の検出
{#JMXVALUE} 属性値
{#JMXTYPE} 属性タイプ
{#JMXOBJ} オブジェクト名
{#JMXDESC} 属性名を含むオブジェクト名
{#JMXATTR} 属性名
MBean の検出
{#JMXDOMAIN} MBean ドメイン. (Zabbix予約名)
{#JMXOBJ} オブジェクト名. (Zabbix予約名)
{#JMX<key property>} MBean プロパティ (like {#JMXTYPE}, {#JMXNAME}) (参照 Limitations below).
制限事項

MBeanプロパティ名からLLDマクロ名を作成するアルゴリズムにはいくつかの制限があります:

  • 属性名は大文字に変換されます
  • 属性名が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内部用、MBeanのドメインを表す
  • {#JMXOBJ} - Zabbix内部用、MBeanオブジェクトを表す
  • {#JMXNAME} - "name"プロパティから作成

無視されるプロパティは以下の通りです:

  • тип : 名前にサポートされていない文字(非ASCII)が含まれている
  • attributes[] : 名前にサポートされていない文字(角括弧)が含まれている
  • Name : すでに定義されている(name=test)
  • domAin : Zabbixの予約名である

MBeanを使用したLLDルール作成のより実践的な例を2つ見てみましょう。 MBeansを収集するLLDルールとMBean属性を収集するLLDルールの違いをよりよく理解するために、次の表をご覧ください。

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ディスカバリルールの結果は次のようになります(2つのガベージコレクタのアイテムがディスカバリされます)。

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属性ごとにプロトタイプからアイテムが作成されます。この設定の主な欠点は、すべての属性に対してアイテムプロトタイプが1つしかないため、トリガープロトタイプからトリガーを作成することができないことです。そのため、このセットアップはデータ収集には使用できますが、自動監視には推奨されません。

jmx.getの使用

jmx.get[]jmx.discovery[]アイテムと似ていますが、Javaオブジェクトのプロパティを低レベルディスカバリーマクロ名に変換しないため、ハイフンや非ASCII文字など、LLDマクロ名生成に関連する制限なしに値を返すことができます。

ディスカバリーに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
               }
           }
       ]