すべての JMX MBean または MBean 属性を 検出 したり、これらのオブジェクトの検出パターンを指定したりできます。
ディスカバリ ルールを設定するには、MBean と MBean 属性の違いを理解しておく必要があります。 MBean は、管理が必要なデバイス、アプリケーション、または任意のリソースを表すことができるオブジェクトです。
たとえば、Web サーバーを表す MBean があります。 その属性は、接続数、スレッド数、リクエスト タイムアウト、http ファイル キャッシュ、メモリ使用量などです。 この考えを人間の包括的な言語で表現すると、コーヒー マシンを豆と水の補充時間などを監視対象の属性として持つ MBean として定義できます。
ディスカバリルール 設定のタイプ フィールドで JMX エージェント を選択します。
JMX オブジェクトの検出では、jmx.discovery[] と jmx.get[] の 2 つのアイテム キーがサポートされています。
アイテムキー | |||
---|---|---|---|
戻り値 | パラメータ | コメント | |
jmx.discovery[<discovery mode>,<object name>,<unique short description>] | |||
この項目は、MBean オブジェクトまたはその属性を記述する LLD マクロを含む JSON 配列を返します。 | discovery mode - 次のいずれか: attributes (JMX MBean 属性の取得、デフォルト) or beans (JMX MBean を取得) object name - 取得する MBean 名を識別するオブジェクト名パターン (ドキュメント を参照) (デフォルトでは空で、登録されているすべての Bean を取得します) unique short description - ホスト上で同じ検出モードとオブジェクト名を持つ複数の 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[] を使用する必要があります。Zabbix Java ゲートウェイ 3.4 以降でサポートされています。 |
|
jmx.get[<discovery mode>,<object name>,<unique short description>] | |||
この項目は、MBean オブジェクトまたはその属性を含む JSON 配列を返します。jmx.discovery[] との違いはLLD マクロを定義しないことです。 |
discovery mode - 次のいずれか: attributes (JMX MBean 属性を取得、デフォルト) または beans (JMX MBean を取得) object name - 取得する MBean 名を識別するオブジェクト名パターン (ドキュメント を参照) (デフォルトでは空で、登録されているすべての Bean を取得します) unique short description - ホスト上で同じ検出モードとオブジェクト名を持つ複数の JMX アイテムを許可する一意の説明 (オプション) |
このアイテムを使用する場合、JSONPath を使用して返された JSON から抽出された値を指す、カスタムの低レベル検出マクロを定義する必要があります。 . Zabbix Java ゲートウェイ 4.4 以降でサポートされています。 |
パラメータが渡されない場合、JMX からのすべての MBean 属性が要求されます。 JMX ディスカバリー用のパラメーターを指定しない、または *:type=*,name=*
のように広範囲のすべての属性を取得しようとすると、パフォーマンスの問題が発生する可能性があります。
この項目は、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 マクロ名を作成するアルゴリズムには、いくつかの制限があります。
A-Z0-9_\.
次の jmx.discovery ("beans"モードを使用) の例を確認してください。 MBean には次のプロパティが定義されています。
JMX 検出の結果、次の LLD マクロが生成されます。
次のプロパティは以下の理由により無視されます。
Mbean を使用して LLD ルールを作成するさらに 2 つの実用的な例を見てみましょう。 Mbean を収集する LLD ルールと Mbean 属性を収集する LLD ルールの違いをよりよく理解するには、次の表をご覧ください。
MBean1 | MBean2 | MBean3 |
MBean1Attribute1 | MBean2Attribute1 | MBean3Attribute1 |
MBean1Attribute2 | MBean2Attribute2 | MBean3Attribute2 |
MBean1Attribute3 | MBean2Attribute3 | MBean3Attribute3 |
このルールは 3 つのオブジェクトを返します: 列の一番上の行: MBean1, MBean2, MBean3.
オブジェクトの詳細については、サポートされているマクロ 表の MBean の検出 セクションを参照してください。
Mbean (属性なし) を収集するディスカバリー・ルール構成は、次のようになります。
ここで使用されるキー:
属性のないすべてのガベージ コレクターが検出されます。 ガベージ コレクターには同じ属性セットがあるため、アイテム プロトタイプで必要な属性を次のように使用できます。
ここで使用されるキー:
LLD ディスカバリルールは、これに近い結果になります (アイテムは 2 つのガベージ コレクターで検出されます)。
このルールは、次のフィールドを持つ 9 つのオブジェクトを返します:MBean1Attribute1, MBean2Attribute1, Mbean3Attribute1,MBean1Attribute2,MBean2Attribute2, Mbean3Attribute2, MBean1Attribute3, MBean2Attribute3, Mbean3Attribute3.
オブジェクトの詳細については、サポートされているマクロ 表の MBean 属性の検出 セクションを参照してください。
Mbean 属性を収集する検出ルールの構成は、次のようになります。
ここで使用されるキー:
単一の項目属性を持つすべてのガベージ コレクターが検出されます。
この特定のケースでは、すべての MBean 属性のプロトタイプからアイテムが作成されます。 この構成の主な欠点は、すべての属性に対してアイテム プロトタイプが 1 つしかないため、トリガー プロトタイプからトリガーを作成できないことです。 したがって、この設定はデータ収集には使用できますが、自動監視にはお勧めできません。
jmx.get[]
は jmx.discovery[]
アイテムに似ていますが、Java オブジェクトのプロパティをローレベルディスカバリマクロ名に変換しないため、制限 なしで値を返すことができます。 ハイフンや非 ASCII 文字などの LLD マクロ名の生成に関連付けられています。
検出に「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
}
}
]