Zabbix 5.0のローレベルディスカバリーの設定

スポンサーリンク

Zabbixのローレベルディスカバリーについて説明します。ローレベルディスカバリーはファイルシステムやネットワークインターフェースなど機器によって異なる仕様について、機器の仕様を情報取得し、動的に設定を作成する機能です。例えば、ローレベルディスカバリーを使用する事によって、24ポートのネットワーク機器と48ポートのネットワーク機器で異なる設定を作成する必要がなくなり、機器間の微妙な構成差異について動的な設定を行う事ができます。

テンプレートのアレンジ

Zabbixのデフォルトでインストールされるテンプレートには、有用なローレベルディスカバリーの設定が施されています。以下、テンプレートに若干の設定の追加で監視可能になる例を紹介します。

ファイルシステムの監視

時点準備

検証シナリオの都合上、監視される側の機器にbind-chrootをインストールします。bind-chrootをインストールする事によって、やや厄介なシナリオが発生しますが、これの回避方法を体験するためです。

dnf install bind bind-chroot
systemctl enable named-chroot --now

監視対象となる機器に対して、テンプレート「Template OS Linux by Zabbix agent」を適用します。

ローレベルディスカバリーの手動実行

デフォルト設定では、1時間に1回の頻度でローレベルディスカバリーが実行され、監視対象となる機器の設定を読み取りに行きます。1時間も待つのは作業効率が悪いかと思いますので、手動によるローレベルディスカバリーもサポートされています。

ホストの設定画面において、「ディスカバリールール」のタブを開きます。ルールにチェックを入れ、「監視データの取得」を押下すると手動によるローレベルディスカバリーが実行されます。

ローレベルディスカバリーでファイルシステム一覧取得するのを手動で実行 001

デフォルト設定の把握

仕様把握のため、もう少しデフォルト設定を追跡してみましょう。前述の画面にて「Mounted filesystem discovery」を押下します。

ローレベルディスカバリーのファイルシステム監視のデフォルト設定確認 001

ディスカバリールールの設定画面を見ると、キー「vfs.fs.discovery」が設定されている事がわかります。

ローレベルディスカバリーのファイルシステム監視のデフォルト設定確認 002

キー「vfs.fs.discovery」で取得できる値はコマンドラインでも確認できます。以下に表示されている{#FSNAME}、{#FSTYPE}の値を使って動的な設定が可能です。

dnf install zabbix-get jq
[root@zabbix081 ~]# zabbix_get -s 192.168.1.13 -k vfs.fs.discovery | jq "." 
[
  {
    "{#FSNAME}": "/sys",
    "{#FSTYPE}": "sysfs"
  },
  {
    "{#FSNAME}": "/proc",
    "{#FSTYPE}": "proc"
  },
  {
    "{#FSNAME}": "/dev",
    "{#FSTYPE}": "devtmpfs"
  },

 <omitted>

ローレベルディスカバリーの画面で、「アイテムのプロトライプ」の画面を開きます。すると、「vfs.fs.inode[{#FSNAME},pfree]」などのキーが設定されている事が分かります。{#FSNAME}はvfs.fs.discoveryによって取得した値が格納されます。具体的には「/」「/boot」などの値が格納され、「vfs.fs.inode[/,pfree]」「vfs.fs.inode[/boot,pfree]」などが監視されます。

ローレベルディスカバリーのファイルシステム監視のデフォルト設定確認 003

取得データの確認

「監視データ」「最新データ」の画面を開きます。「/」「/boot」などのファイルシステムが監視されている事が読み取れます。

ローレベルディスカバリーのファイルシステム監視のデフォルト設定確認 004

「監視データ」「グラフ」の画面を開きます。「/」「/boot」だけでなく、「/var/named/chroot/etc/crypto-policies/back-ends/bind.config」などの不要項目も表示されている事が分かります。

ローレベルディスカバリーのファイルシステム監視のデフォルト設定確認 005

不要監視項目のフィルタ

「/var/named/chroot/etc/crypto-policies/back-ends/bind.config」などの不要項目を削除するフィルタする方法を説明します。

「Mounted filesystem discovery」の「フィルター」タブを開きます。この画面を見ると、取得対象を絞り込む「{$VFS.FS.FSNAME.MATCHES}」「{$VFS.FS.FSTYPE.MATCHES}」や取得対象を除外する「{$VFS.FS.FSNAME.NOT_MATCHES}」「{$VFS.FS.FSTYPE.NOT_MATCHES}」などのマクロが定義されている事が分かります。

ローレベルディスカバリーのファイルシステム監視の除外設定 001

対象ホストの「マクロ」「継承したマクロとホストマクロ」のタブを開きます。この画面を見ると、現在設定されているマクロの値を確認する事ができます。デフォルト設定を意図せず消去してしまい、思わぬ監視結果にならないよう、設定前に確認する事をオススメします。

ローレベルディスカバリーのファイルシステム監視の除外設定 002

ローレベルディスカバリーのファイルシステム監視の除外設定 003

対象ホストの「マクロ」「ホストマクロ」のタブを開きます。「{$VFS.FS.FSNAME.NOT_MATCHES}」に以下の値を設定し、「更新」ボタンを押下します。

^(.*named.*|/dev|/sys|/run|/proc|.+/shm$)

ローレベルディスカバリーのファイルシステム監視の除外設定 004

データのリセット

一度作成されてしまった不要なグラフを削除するために、「Template OS Linux by Zabbix agent」の「リンクを削除リンクと保存データを削除」を押下します。

ローレベルディスカバリーのファイルシステム監視の除外設定 005

その後、「Template OS Linux by Zabbix agent」を再適用し、ローレベルディスカバリを再手動実行します。

フィルタ後の取得データの確認

データ一覧画面で「ヒストリがないアイテムを表示」「詳細を表示」にチェックを入れ、「適用」を押下します。

ローレベルディスカバリーのファイルシステム監視の除外設定 006

「/var/named/chroot/etc/crypto-policies/back-ends/bind.config」などの不要項目が表示されていない事を確認します。

ローレベルディスカバリーのファイルシステム監視の除外設定 007

グラフの画面にて、「/var/named/chroot/etc/crypto-policies/back-ends/bind.config」などの不要項目が表示されていない事を確認します。

ローレベルディスカバリーのファイルシステム監視の除外設定 008

ネットワーク機器 インターフェースの監視

監視設定

ホストの追加画面で、インターフェースは「snmp」を選びます。

ネットワーク機器の監視設定 001

必要事項を記入し「追加」を押下します。

ネットワーク機器の監視設定 002

ホスト単位または全体に対してSNMPコミュニティを定義するマクロを定義します。以下スクリーンショットは、ホストに対して設定する例です。

ネットワーク機器の監視設定 003

テンプレート「Templates/Modules/Template Module Interfaces SNMP」を適用します。

ネットワーク機器の監視設定 004

ホスト設定画面の「ディスカバリー」タブへ遷移し、対象にチェックを入れ、「監視データの取得」を押下します。この操作によって、ローレベルディスカバリーが手動で即時実行されます。

ネットワーク機器の監視設定 005

グラフの画面へ遷移し、グラフが描画されている事を確認します。また、「Loopback0」などの不要データも取得されてしまった事を確認します。

ネットワーク機器の監視設定 006

不要監視項目のフィルタ

「Loopback」などの不要項目を削除するフィルタする方法を説明します。

「Network interfaces discovery」の「フィルター」タブを開きます。descriptionやインターフェース名などでフィルタが可能である事が分かります。

ネットワーク機器のフィルタ設定 001

対象ホストの「マクロ」「ホストマクロ」のタブを開きます。「{$NET.IF.IFNAME.MATCHES}」に以下の値を設定し、「更新」ボタンを押下します。

^Ethernet.*

一度作成されてしまった不要なグラフを削除するために、「Template Module Interfaces SNMP」の「リンクを削除リンクと保存データを削除」を押下します。

その後、テンプレートの再適用とローレベルディスカバリの手動実行をし、グラフ描画を確認します。Loopbackなどの不要監視項目が表示されなくなった事を確認します。

ネットワーク機器のフィルタ設定 002

テンプレートの自作

マニュアル

ローレベルディスカバリーの使い方はマニュアルの「15. Discovery」「3 LOW-LEVEL DISCOVERY」を参照ください。

Zabbix マニュアル

CPU個別監視

テンプレートの作成

テンプレートを新規作成します。

ローレベルディスカバリーに対応したテンプレート作成01

テンプレートの「ディスカバリー」タブの画面にて、「ディスカバリールールの作成」を押下します。

ローレベルディスカバリーに対応したテンプレート作成02

ディスカバリールール作成の画面にて、キーに「system.cpu.discovery」を設定します。監視感覚は「1m」から長めの「1h」くらいに変更しておくのが無難かと思われます。設定項目入力完了後、「追加」を押下します。

ローレベルディスカバリーに対応したテンプレート作成03

zabbix_getなどのコマンドを見て、キー「system.cpu.discovery」で取得できる値を確認します。{#CPU.NUMBER}等の変数を使用して定義可能である事が分かります。

[root@zabbix081 ~]# zabbix_get -s 192.168.1.13 -k system.cpu.discovery | jq
[
  {
    "{#CPU.NUMBER}": 0,
    "{#CPU.STATUS}": "online"
  },
  {
    "{#CPU.NUMBER}": 1,
    "{#CPU.STATUS}": "online"
  },
  {
    "{#CPU.NUMBER}": 2,
    "{#CPU.STATUS}": "online"
  },
  {
    "{#CPU.NUMBER}": 3,
    "{#CPU.STATUS}": "online"
  }
]

先ほど追加したディスカバリールールを押下します。

ローレベルディスカバリーに対応したテンプレート作成04

「アイテムのプロトタイプ」を押下します。

ローレベルディスカバリーに対応したテンプレート作成05

「アイテムのプロトタイプの作成」を押下します。

ローレベルディスカバリーに対応したテンプレート作成06

名前は「{#CPU.NUMBER}」を含む名前にした方がCPU番号が分かりやすくなるのでオススメです。キーは「system.cpu.util[{#CPU.NUMBER},idle, avg1]」のようにCPU番号を変数で指定し、データ型は「数値(不動小数)」に変更します。

設定項目の入力完了後、「追加」を押下します。

ローレベルディスカバリーに対応したテンプレート作成07

テンプレートの適用

先ほど作成したテンプレートを対象のホストに適用します。

ローレベルディスカバリーに対応したテンプレート適用01

ディスカバリーの画面にて、ローレベルディスカバリーを手動実行します。

ローレベルディスカバリーに対応したテンプレート適用02

動作確認

ローレベルディスカバリーに対応したテンプレートの適用によって、CPU数が動的に変化する監視ができている事を確認します。

ローレベルディスカバリーの動作確認

タイトルとURLをコピーしました