Zabbixのポート監視設定手順(使うアイテムキー、アイテムとトリガーの作成手順)

Others,Zabbix

Zabbixを利用して、サーバーなどのポート監視をすることができます。
今回は、Zabbixポート監視の概要からZabbixを利用してやSSH(TCP 22番ポート)や、RDP(TCP 3389番ポート)を監視する手順を紹介します。

Webサーバーやデータベースなどのサービスが特定のTCPポートで待ち受けているかを定期的に監視することで、サービスのダウンを検知できます。
今回は、Zabbixのポート監視の概要、ポート監視に利用するアイテムキー(net.tcp.service/net.tcp.service.perf/net.tcp.port)、アイテムやトリガーの作成手順まで紹介しています。

※手順確認には、Zabbixのバージョンは7.0LTS(7.0.26)を使用しています。
※監視対象ホストには、Zabbix エージェント2を利用した場合の手順を中心に確認しています。

スポンサーリンク

Zabbixにおけるポート監視の概要

Zabbixのポート監視とは?

指定したホストのTCPまたはUDPポートに対して接続を行い、接続可能かどうかや、サービスが応答するかを確認する機能です。
プロセスが起動していてもサービスが応答していないケースなどを検知できます。

シンプルチェック
Zabbixエージェント

シンプルチェックを利用する場合、監視対象の機器にZabbixエージェントをインストールする必要はありません。

ポート監視に利用されるアイテムキー

ポート監視に利用されるアイテムキーには、net.tcp.serviceやnet.tcp.portなどがあります。

net.tcp.serviceやnet.tcp.service.perfは、Zabbixエージェントとシンプルチェックのアイテムタイプ両方で利用できます。
net.tcp.service[ssh]のようにサービス名を指定すると、標準ポートを使用して、プロトコルレベルでの簡易的な確認が行えます。

net.tcp.service[service,<ip>,<port>](シンプルチェック)
net.tcp.service[service,<ip>,<port>](Zabbixエージェント)

ポート監視用のアイテムキー
net.tcp.service[service,<ip>,<port>] 指定したサービス/ポートに接続できるかを確認します。
serviceにssh、http、httpsなどを指定すると、プロトコルレベルでの簡易な応答確認も行われます。
接続できる場合は1、できない場合は0が返ります。
net.tcp.service.perf[service,<ip>,<port>] サービスへの接続確認に加え、応答時間(秒)を取得します。
接続できない場合は0が返ります。

net.tcp.portは、Zabbixエージェントのアイテムタイプでのみ利用することができます。

net.tcp.port[<ip>,port](Zabbixエージェント)

ポート監視用のアイテムキー
net.tcp.port[<ip>,port] 指定したIPアドレスとTCPポートに対して、TCP接続が確立できるかを確認します。
プロトコルレベルの応答確認は行いません。
接続できる場合は1、できない場合は0が返ります。

※その他にポートの待ち受けを監視するアイテムキーとして、net.tcp.listen[port]があります。監視対象ホスト上で、指定したTCPポートがLISTEN状態であるかを確認します。

net.tcp.serviceとnet.tcp.portの違いについて

どちらもTCPレベルでの接続確認を行いますが、いくつか違いがあります。

利用できるアイテムタイプが異なります。
net.tcp.serviceはZabbixエージェント、シンプルチェックの両方で利用できます。
一方、net.tcp.portはZabbixエージェントでのみ利用可能です。
そのため、Zabbixエージェントをインストールできないネットワーク機器のポート監視を行う場合は、net.tcp.service(シンプルチェック)を利用します。

簡易的なプロトコル接続確認の有無にも違いがあります。
net.tcp.portは、TCPポートへの接続可否のみを確認します。
一方、net.tcp.serviceは指定したTCPサービスが応答するかどうかも確認します。

net.tcp.serviceで指定可能なサービス

net.tcp.serviceで指定できるサービスです。
多くのサービスが用意されています。

9 net.tcp.serviceおよびnet.udp.serviceチェックの実装の詳細

serviceに指定できる主な値
tcp 任意のTCPポートに対して接続確認を行います。
portパラメータの指定が必須となります。
ssh / ftp / smtp / pop / imap / http / https / telnet / ntp / ldap あらかじめ定義されたサービスです。
portを省略した場合は、各サービスの標準ポートが使用されます。

※net.tcp.service[ssh]のように、サービス名のみの指定で標準ポートをチェックできます。
※portを明示的に指定すれば、標準以外のポートにも対応できます。

net.tcp.serviceとnet.tcp.service.perfの使い分け方法

どちらも同じ条件で接続確認を行いますが、戻り値が異なります。
net.tcp.serviceの場合は、接続できたかどうかを0または1で返します。
一方、net.tcp.service.perfの場合は、応答速度(レスポンスタイム)を返します。
例えば、応答速度をグラフ化して確認したい場合は、net.tcp.service.perfを利用します。

ポート監視で利用できるアイテムタイプ

ポート監視は、主に以下のアイテムタイプから選択できます。
net.tcp.portの場合は、シンプルチェックは選択できません。

ポート監視で利用できるアイテムタイプ
シンプルチェック Zabbixサーバー(またはZabbixプロキシ)から、監視対象ホストへ直接接続確認を行います。
主にNW機器など、監視対象ホストにZabbixエージェントを導入できない場合に利用します。
Zabbixエージェント Zabbixサーバー(またはZabbixプロキシ)は、監視対象ホストのZabbixエージェントに対して定期的に通信を行います。
Zabbixサーバーに登録された収集項目のリスト(監視項目)に基づき、Zabbixエージェントから値を取得します。
Zabbixエージェント(アクティブ) 監視対象ホストのZabbixエージェントは、Zabbixサーバー(またはZabbixプロキシ)に対して結果を送信します。
Zabbixエージェントが定期的にZabbixサーバー(またはZabbixプロキシ)から、収集項目のリスト(監視項目)を取得します。

アイテムキーの設定例

アイテムキーの設定例です。

アイテムキーの設定例
SSH(TCP 22番ポート)の接続確認

# net.tcp.serviceの場合
net.tcp.service[ssh]
# net.tcp.portの場合
net.tcp.port[,22]

RDP(TCP 3389番ポート)の接続確認

# net.tcp.serviceの場合
net.tcp.service[tcp,,3389]
# net.tcp.portの場合
net.tcp.port[,3389]

HTTPS(TCP 443番ポート)の応答時間取得

# net.tcp.service.perfの場合
net.tcp.service.perf[https]

—広告—

ポート監視のアイテム作成手順

SSH(TCP 22番ポート)やRDP(TCP 3389番ポート)を監視するためのアイテムを作成します。

ポート監視のアイテム設定値

今回作成したアイテムの設定値です。
SSH監視用とRDP監視用の2種類を作成しています。
SSH監視にはnet.tcp.service、RDP監視にはnet.tcp.portを利用しています。
今回は、アイテムタイプにZabbixエージェントを利用しています。

SSH(TCP 22番ポート)を監視する場合の設定値です。

アイテムの設定値
名前 TCP Service Status SSH
タイプ Zabbixエージェント
キー net.tcp.service[ssh]
データ型 数値(整数)
監視間隔 1m

RDP(TCP 3389番ポート)を監視する場合の設定値です。

アイテムの設定値
名前 TCP Port Status RDP
タイプ Zabbixエージェント
キー net.tcp.port[,3389]
データ型 数値(整数)
監視間隔 1m

※監視間隔、データの保存期間などはデフォルト値のままとしています。監視要件に応じて設定を変更して下さい。

net.tcp.serviceを使用してSSHをポート監視するアイテムを作成

ポート監視用のアイテムを新規に作成します。
SSH(TCP 22番ポート)の接続確認を行うアイテムを新規に作成します。
アイテムキーにはnet.tcp.serviceを使用しています。

アイテムの作成

ポート監視用のアイテムを作成
監視対象ホストのアイテムを選択します。 ホストでアイテムを選択(Zabbixのポート監視設定手順)
アイテムの作成を選択します。 アイテムの作成を選択(Zabbixのポート監視設定手順)
新規アイテム作成画面が表示されます。
タイプにZabbixエージェントが選択されていることを確認します。
キーを選択します。
新規アイテム作成画面を表示(Zabbixのポート監視設定手順)
標準のアイテム選択画面が表示されます。
net.tcp.serviceを選択します。
アイテムキーを選択(Zabbixのポート監視設定手順)
新規アイテム作成画面に戻ります。
名前、監視間隔などを選択します。
追加します。

※データ型などは、アイテムキーに応じて自動的に選択されます。
※今回は画面上でアイテムキーを選択していますが、直接net.tcp.service[ssh]と入力して設定することも可能です。

新規アイテム作成画面で設定(Zabbixのポート監視設定手順)

# 設定したアイテムキー
net.tcp.service[ssh]

追加したアイテムが表示されます。 追加されたアイテムを表示(Zabbixのポート監視設定手順)

net.tcp.portを使用してRDPをポート監視するアイテムを作成

アイテムキーにnet.tcp.portを使用した、RDP (TCP 3389番ポート) の接続確認を行うためのアイテムを新規作成します。
なお、net.tcp.portはTCPレベルでの接続確認のみを行います。
そのため、RDPプロトコル自体の応答を確認するものではなく、3389番ポートでTCP接続が確立できるかどうかを監視することになります。

アイテムの作成

ポート監視用のアイテムを作成
新規アイテム作成画面で、キーを選択します。 新規アイテム作成画面を表示(Zabbixのポート監視設定手順)
標準のアイテム選択画面が表示されます。
net.tcp.serviceを選択します。
アイテムキーを選択(Zabbixのポート監視設定手順)
新規アイテム作成画面に戻ります。
名前、監視間隔などを選択します。
追加します。

※データ型などは、アイテムキーに応じて自動的に選択されます。
※今回は画面上でアイテムキーを選択していますが、直接net.tcp.port[,3389]と入力して設定することも可能です。

新規アイテム作成画面で設定(Zabbixのポート監視設定手順)

# 設定したアイテムキー
net.tcp.port[,3389]

追加したアイテムが表示されます。 追加されたアイテムを表示(Zabbixのポート監視設定手順)

テストを使って値の取得できるか確認

アイテム作成前や作成後に、データが正常に取得できているかどうかをテスト機能を使って確認できます。
ただし、テストで利用できるアイテムキーには制限があり、Zabbixエージェント(アクティブ)など一部のアイテムキーではテスト機能は利用できません。

アイテムの作成

テストを使ってデータ取得できるか確認
アイテム作成画面でテストを選択します。
アイテムを更新する場合も、表示されるボタンの種類は異なりますが、同様にテストを選択して動作確認できます。
新規アイテム作成画面でテストを表示(Zabbixのポート監視設定手順)
アイテムのテスト画面が表示されます。
値の取得とテストを選択します。
結果に値の取得結果が表示されます。
アイテムのテストを実施(Zabbixのポート監視設定手順)

値が取得されているかを最新データで確認

作成したアイテムが、正しく値を取得できているかを確認します。
監視データのメニューにある最新データから確認できます。

最新データ

取得した監視データの確認
最新データに設定したアイテムが表示されます。
接続できる場合は1、できない場合は0が取得されることを確認できます。
最新データで取得された値を確認(Zabbixのポート監視設定手順)
最新データでグラフを選択すると、データ取得値をグラフとして表示することができます。
net.tcp.service.perf場合は、応答速度をグラフとして表示することができます。
最新データで取得された値のグラフを確認(Zabbixのポート監視設定手順)
最新データで取得された値のグラフを確認(Perfの場合)(Zabbixのポート監視設定手順)

—広告—

ポート監視のトリガー作成手順

ポート監視のトリガー設定値

今回作成したトリガーの設定値です。
max関数を利用して、3回の最大値が0の場合を検知条件としています。
こうすることで、3回連続で接続できなかった場合に障害として検知することができます。

SSH監視用のトリガーを新規作成していますが、RDP監視用のトリガーも同様の手順で作成できます。

トリガーの設定値
名前 TCP service is down SSH
条件式 max(/vm-01/net.tcp.service[ssh],#3)=0
深刻度 重度の障害
正常イベントの生成 条件式

※正常イベントの生成で条件式を選択すると、障害の条件式に合致しなくなったタイミングで自動的に障害復旧と判断されます。
※今回の設定では、1度でも接続が確認できると障害復旧と判断されます。監視の要件に応じて、正常イベントの生成で復旧条件式を設定してください。

SSHのポート監視するトリガーを作成

SSHポート監視するトリガーを新規作成します。
3回連続でnet.tcp.serviceで取得した値が0になったことを条件としています。

トリガーの設定

ポート監視の障害を検知するトリガー
監視対象ホストのトリガーを選択します。 ホストの設定画面でトリガーを選択(Zabbixのポート監視設定手順)
トリガーの作成を選択します。 トリガーの作成を選択(Zabbixのポート監視設定手順)
新規トリガーの作成画面が表示されます。
条件式の追加を選択します。
新規トリガー作成画面を表示(Zabbixのポート監視設定手順)
トリガー条件式の設定画面が表示されます。
アイテムを選択します。
トリガー条件式の設定画面を表示(Zabbixのポート監視設定手順)
作成したアイテムが一覧表示されます。
利用するアイテムを選択します。
トリガー条件式に設定するアイテムを選択(Zabbixのポート監視設定手順)
トリガー条件式の設定画面に戻ります。
関数、最新の(T)、結果を選択します。
今回は関数にmax、最新の3カウント、結果が0の場合としています。
挿入を選択します。

トリガー条件式を設定(Zabbixのポート監視設定手順)
新規トリガー設定画面に戻ります。
トリガー名、深刻度などを設定します。
追加を選択します。
新規トリガー作成画面で設定(Zabbixのポート監視設定手順)

# 設定したトリガー条件式
max(/vm-01/net.tcp.service[ssh],#3)=0

追加したトリガーが表示されます。 追加したトリガーを表示(Zabbixのポート監視設定手順)

ポート監視の障害検知を確認

監視対象サーバーのSSHサービスを停止して、障害として検知されるかを確認します。

障害検知を確認
SSHサービスを停止後、しばらくすると障害として検知されます。
今回の場合は監視間隔1分、3回連続で検知としているので、2分~3分経過後に障害と判断されます。

障害の発生は、監視データのホストや障害のメニューから確認できます。
また、トリガー設定でも障害が発生していることを確認することができます。

監視データのホストで障害検知を確認(Zabbixのポート監視設定手順)
監視データの障害で障害検知を確認(Zabbixのポート監視設定手順)
ホストに設定したトリガーで障害検知を確認(Zabbixのポート監視設定手順)
SSHサービスを開始後、しばらくするとステータスが解決済みとなります。
今回の設定では、1分以内に正常イベントが生成され解決済と判断されます。
障害が解決済になったことを確認(Zabbixのポート監視設定手順)
最新データで値の取得状況を確認します。
障害が復旧した直後の最新データを確認すると、値が1になっていることが分かります。
また、グラフからは、サービスが停止していた時間帯の値が0になっていることを確認できます。

最新データで取得された値の変化を確認(Zabbixのポート監視設定手順)
最新データのグラフで取得された値の変化を確認(Zabbixのポート監視設定手順)

—広告—

最後に

今回は、Zabbixでポート監視を行うためのアイテムキーや設定手順について確認しました。
設定手順では、アイテムの作成からトリガーの作成、データ取得状況の確認、障害発生までの一連の流れを確認しています。

引き続き、いろいろ試してみたいと思います。

Zabbixでホストを新規登録するための手順については、こちらで紹介しています。

Zabbix エージェントのインストールや暗号化通信の有効化手順については、こちらで紹介しています。

Zabbixでログを監視するための手順については、こちらで紹介しています。

ZabbixでWebサイトを監視するための手順については、こちらで紹介しています。

スポンサーリンク