ローレベルディスカバリは、コンピュータ上に存在する異なるものの、アイテムやトリガー、グラフを自動的に作成する方法を提供します。例えば、龙虎赌博 は、ファイルシステムやネットワークインターフェースのそれぞれにアイテムを手動で作成しなくても、自動的に使用するマシンのファイルシステムやネットワークインターフェースの監視を開始します。加えて、定期的に実行されるディスカバリの実際の結果に基づいて、龙虎赌博 が不要なものを自動的に削除するように設定することも可能です。
龙虎赌博 2.0では、すぐに使える3タイプのディスカバリがサポートされています:
ユーザーは、特定の JSON プロトコルに従うことによって提供される、独自のディスカバリのタイプを定義できます。
ディスカバリのプロセスの一般的なアーキテクチャは以下のとおりです:
最初に、ユーザーは摆设定闭→摆テンプレート闭の摆ディスカバリ闭列でディスカバリルールを作成します。1つのディスカバリルールは、(1)必要なエンティティ(例えば、ファイルシステムまたはネットワークインターフェース)を検出するアイテムと、(2)そのアイテムの値に基づいて作成されるアイテム、トリガー、グラフのプロトタイプから构成されます。
必要なエンティティを検出するアイテムは、ほかの場所で見られるレギュラーアイテムのようにみえます:サーバは、龙虎赌博 エージェント(または設定されている他のアイテムタイプ)にそのアイテムの値を問合せ、エージェントはテキストの値で応答します。違いは、エージェントが応答する値には、特定のJSON形式で検出されたエンティティのリストを含まれるという点です。この形式の詳細はカスタムのディスカバリチェックの実装者にとって重要なだけですが、戻り値にはマクロ→値のペアのリストが含まれているということは知っておく必要があります。例えば、アイテム「net.if.discovery」は2つのペア」:{#IFNAME} → 「lo」と {#IFNAME} → 「eth0」を返す可能性があります。
ローレベルディスカバリのアイテム vfs.fs.discovery と net.if.discovery は、Zabbxi エージェントのバージョン2.0からサポートされています。
龙虎赌博 プロキシでは、ローレベルディスカバリのルールの戻り値は、Oracle DBでは4000文字、IBM DB2では2048文字までに制限されています。
これらのマクロは、各検出されたエンティティの実际のアイテム、トリガー、グラフの作成の基盘となる名前、キー、その他のプロトタイプフィールドに使用されます。これらのマクロは以下の场所で使用可能です:
サーバがディスカバリアイテムのために値を受信するとき、マクロ→値のペアを见て、それぞれのペアがプロトタイプに基づいて実际のアイテム、トリガー、グラフを生成します。上记の「苍别迟.颈蹿.诲颈蝉肠辞惫别谤测」を使用する例では、サーバは、ループバックインターフェース「濒辞」のアイテムとトリガーとグラフのセットを1つ生成し、インターフェース「别迟丑0」に别の1セットを生成します。
次のセクションでは、上記で説明された処理を詳細に描き、ファイルシステム、ネットワークインターフェース、SNMP OIDのディスカバリを実行する方法を示します。最後のセクションで、ディスカバリアイテム用のJSON 形式について説明し、Perl スクリプトで独自のファイルシステムのディスカバリをどのように実装するかの例を示します。
ファイルシステムのディスカバリを设定するには、次のことをおこないます:
パラメータ 説明 | |
---|---|
名前 デ | スカバリルールの名前 |
タイプ ディ | カバリを実行するチェックのタイプ;ファイルシステムのディスカバリ用の龙虎赌博 エージェントとします。 |
キー 「 | fs.fs.discovery」キーをもつアイテムが、多くのプラットフォームの龙虎赌博 エージェント内に構築され(詳細はサポートされているアイテムキーのリストを参照)、コンピュータ上に存在するファイルシステムのリストとそのタイプを含む闯厂翱狈を返します。 |
更新間隔(秒) このフィ | ルドでディスカバリの実行频度を指定します。最初の、ファイルシステムのディスカバリを设定するだけのときは、短い间隔で设定したいと思うでしょうが、ファイルシステムは通常はそう频繁に変わらないので、うまく动くことを确认したら30分以上で设定します。 注意:「0」に设定した场合、アイテムはポーリングされません。しかし、0でない値をもつ「例外の更新间隔」が存在する场合は、例外の更新间隔でそのアイテムがポーリングされます。 |
例外の更新間隔 更新間隔に例 | をつくることができます。例えば: 更新间隔: 0, 期間: 6-7,00:00-24:00 と设定すると、ウィークエンドはポーリングを无効にします。例外の更新间隔を设定しない场合は、デフォルトの更新间隔が使用されます。 例外の更新间隔が复数オーバーラップした场合は、オーバーラップしている期间は最も短い间隔の値が使用されます。 期间の形式の説明は、 期间の指定のページを参照してください。 注意:「0」に设定すると、例外の更新期间中はアイテムはポーリングされず、例外の更新期间が终了后、更新间隔に従ってポーリングが再开されます。 |
存在しなくなったリソースの保持期間(日) このフィールドで、ディスカバリのス | ータスが「もう検出されません」となってから、検出されたエンティティを何日间削除しないで保持するかを指定することができます。(最大3650日) 注意:「0」に设定した场合、エンティティはすぐに削除されます。単なるフィルターの设定间违いで、すべてのヒストリデータでエンティティが削除される结果となる场合があるので、「0」を使用することはお奨めしません。 |
フィルター? フィルタ | は、特定のファイルシステムの、実际のアイテム、トリガー、グラフの生成だけに使用可能です。笔翱厂滨齿正规表现で記述します。例えば、ファイルシステムのC、D、Eドライブだけを対象としたい場合は、[マクロ]に{#FSNAME}、[正规表现]のテキストフィールドに「^C|^D|^E」と入れます。{#FSTYPE} マクロを使用することによって、ファイルシステムのタイプでもフィルタリングが可能です。(例:^ext|^reiserfs) 摆正规表现闭フィールドでは、正规表现の入力、またはグローバル正规表现の参照が可能です。 正规表现をテストするために、「grep -E」を使用することができます。例えば: for f in ext2 nfs reiserfs smbfs; do echo $f \| grep -E '^ext\|^reiserfs' \|\| echo "SKIP: $f"; done |
説明 説 | を入力します。 |
ステータス **有効 | * - そのルールが実行されます。 无効 - そのルールは実行されません。 取得不可 - アイテムが取得不可です。このアイテムは実行されませんが、龙虎赌博 は、取得不可なアイテムの更新间隔の设定に従って、定期的にそのアイテムのステータスを「有効」に设定しようと试みます。 |
<note important>大文字?小文字だけが異なるファイルシステム名が正しく検出されるように、MySQLの龙虎赌博 データベースは、大文字?小文字を区別するように作成する必要があります。 :::
ディスカバリルールのヒストリは保存されません。
ルールが作成されたら、アイテムのプロトタイプを作成するために、そのルールの対象となるアイテムで摆プロトタイプを作成闭をクリックします。ファイルシステム名が必要な场所で、マクロ调#贵厂狈础惭贰皑がどのように使用されているかを忆えておいてください。ディスカバリルールが実行されるとき、検出されたファイルシステムとこのマクロが置き换えられます。
アイテムのプロトタイプが「无効」のステータスで作成される場合、検出されたエンティティに追加されますが、无効のステータスで追加されます。
次のように、対象とする各ファイルシステムの基準に対して复数のアイテムのプロパティを作成できます:
それから、同様の方法でトリガーのプロトタイプを作成します:
また、グラフのプロトタイプも同様に作成します:
ついに、以下に表示されるようなディスカバリルールが作成できました。この例では、5つのアイテムプロトタイプと2つのトリガーのプロトタイプ、1つのグラフのプロトタイプがあります。
以下のスクリーンショットでは、検出されたアイテム、トリガー、グラフが、ホストの设定でどのように见えるかを示しています。検出されたエンティティは、先头にそれを検出したディスカバリルールにリンクしている金色の文字がついています。
ローレベルディスカバリで作成されたアイテム(トリガーやグラフも同様)は、手动では削除できません。しかし、検出されたエンティティ(ファイルシステム、インターフェースなど)が検出されなくなると(あるいはフィルターを通らなくなると)、自动的に削除されます。この例の场合、摆存在しなくなったリソースの保持期间(日)闭で定义された日数が経过すると、それらのエンティティは削除されます。
検出されたエンティティが「もう検出されません」となったとき、オレンジ色のライフタイムインジケータがアイテムのリストの中に表示されます。マウスポインタをそのインジケータの上に移动すると、そのアイテムが削除されるまでに何日间あるかを示すメッセージが表示されます。
ネットワークインターフェースのディスカバリは、ディスカバリルールのキーを「vfs.fs.discovery」ではなく「net.if.discovery」、フィルターやアイテム/トリガー/グラフのプロトタイプでのマクロを {#FSNAME}ではなく{#IFNAME}にすること以外は 、ファイルシステムのディスカバリと全く同じ方法でおこなわれます。
「net.if.discovery」に基づいて作成できるアイテムのプロトタイプの例はつぎのようなものです: “net.if.in[{#IFNAME},bytes]”, “net.if.out[{#IFNAME},bytes]”.
フィルターについての详细な情报は、上记のファイルシステムのディスカバリを参照してください。
この例では、スイッチ上でSNMPディスカバリを実行します。最初に摆设定闭→摆テンプレート闭を选択します。
テンプレートのディスカバリルールを编集するには、摆ディスカバリ闭列のリンクをクリックします。
それから、[ルールの作成]をクリックし、 以下のスクリーンショットのようにフォームに詳細を記入します。
ファイルシステムやネットワークインターフェースのディスカバリと違って、アイテムは「snmp.discovery」キーを持つ必要はありません。SNMP エージェントのアイテムタイプがあれば十分です。
また、上记の例と違って、ディスカバリのアイテムは、検出したエンティティそれぞれに対して2つのマクロ、{#SNMPINDEX} と {#SNMPVALUE}を生成します。戻り値からループバックインターフェースを抽出したい場合は、{#SNMPVALUE}をフィルターの「マクロ」の中に入力し、「^([^l]|l$)[^o]?」正规表现を[正规表现]のテキストフィールドに入力します。フィルターについての详细な情报は、上记のファイルシステムのディスカバリを参照してください。
[SNMP OID]フィールドでは、これらのマクロに対して意味のある値を生成することができるOIDを入力する必要がああります。 この例で示そうとしていることを理解するために、スイッチ上でsnmpwalkを実行してみましょう。
$ snmpwalk -v 2c -c public 192.168.1.1 IF-MIB::ifDescr
IF-MIB::ifDescr.1 = STRING: WAN
IF-MIB::ifDescr.2 = STRING: LAN1
IF-MIB::ifDescr.3 = STRING: LAN2
マクロ {#SNMPINDEX} は、ifDescrの後にくるOIDの部分から値(この例では:1,2,3)を取得します。マクロ {#SNMPVALUE} は、OIDに一致する値(この例では:WAN, LAN1, LAN2)から来ます。 このようにして、「snmp.discovery」アイテムは、マクロ→値のペアを3セット返します。
{#SNMPINDEX} → 1 {#SNMPVALUE} → WAN
{#SNMPINDEX} → 2 {#SNMPVALUE} → LAN1
{#SNMPINDEX} → 3 {#SNMPVALUE} → LAN2
次のスクリーンショットでは、これらのマクロをアイテムのプロトタイプで使用する方法を示します。
再び、必要な数のアイテムのプロトタイプを作成します。
同様にトリガーのプロトタイプも作成します。
そしてグラフのプロトタイプも作成します。
この例でのディスカバリルールの概要は、以下の通りです:
サーバが动作したとき、「蝉苍尘辫.诲颈蝉肠辞惫别谤测」が返す値に基づいて実际のアイテム、トリガー、グラフが作成されます。ホストの设定では、それらは先头にそれを検出したディスカバリルールにリンクしている金色の文字がついています。
また、例えばデータベースサーバ上のデータベースなど、あらゆるタイプのエンティティを検出する完全にカスタムの尝尝顿ルールを作成することも可能です。
その组み込みのディスカバリルールが1つまたは2つのマクロ(例えば、ファイルシステムのディスカバリに対して2つ)のどちらかを返している间は、もっと多くを返すこともできます。
返される JSON 形式は、以下の例でよくわかります。いまわたし達は「vfs.fs.discovery」をサポートしていない古い 龙虎赌博 1.8 エージェントを作動させているけれども、ファイルシステムを検出する必要があると想定してみてください。以下に、監視対象のファイルシステムを検出し、ファイルシステム名とタイプを含むJSONを出力する、Linux用のシンプルな Perl のスクリプトを示します。これを使用する1つの方法は、「vfs.fs.discovery_perl」キーをもつ UserParameterとして使用することです:
#!/usr/bin/perl
$first = 1;
print "{\n";
print "\t\"data\":[\n\n";
for (`cat /proc/mounts`)
{
($fsname, $fstype) = m/\S+ (\S+) (\S+)/;
$fsname =~ s!/!\\/!g;
print "\t,\n" if not $first;
$first = 0;
print "\t{\n";
print "\t\t\"{#FSNAME}\":\"$fsname\",\n";
print "\t\t\"{#FSTYPE}\":\"$fstype\"\n";
print "\t}\n";
}
print "\n\t]\n";
print "}\n";
そのアウトプット(明快にするためにフォーマットが変更されています)を以下に示します。カスタムディスカバリのチェックのJSON は、同じフォーマットに従う必要があります。
{
"data":[
{ "{#FSNAME}":"\/", "{#FSTYPE}":"rootfs" },
{ "{#FSNAME}":"\/sys", "{#FSTYPE}":"sysfs" },
{ "{#FSNAME}":"\/proc", "{#FSTYPE}":"proc" },
{ "{#FSNAME}":"\/dev", "{#FSTYPE}":"devtmpfs" },
{ "{#FSNAME}":"\/dev\/pts", "{#FSTYPE}":"devpts" },
{ "{#FSNAME}":"\/", "{#FSTYPE}":"ext3" },
{ "{#FSNAME}":"\/lib\/init\/rw", "{#FSTYPE}":"tmpfs" },
{ "{#FSNAME}":"\/dev\/shm", "{#FSTYPE}":"tmpfs" },
{ "{#FSNAME}":"\/home", "{#FSTYPE}":"ext3" },
{ "{#FSNAME}":"\/tmp", "{#FSTYPE}":"ext3" },
{ "{#FSNAME}":"\/usr", "{#FSTYPE}":"ext3" },
{ "{#FSNAME}":"\/var", "{#FSTYPE}":"ext3" },
{ "{#FSNAME}":"\/sys\/fs\/fuse\/connections", "{#FSTYPE}":"fusectl" }
]
}
そうすると、ディスバリルールの[フィルター]フィールドで、マクロとして{#FSTYPE} を、正规表现として「rootfs|ext3」を指定できます。
カスタムのLLDルールにマクロ名 FSNAME/FSTYPE を使用する必要はありません。どんな名前でも自由に使用することができます。
本ページは2013/05/12时点の原文を基にしておりますので、内容は必ずしも最新のものとは限りません。
最新の情報は右上の「Translations of this page」から英語版を参照してください。