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エージェントをインストールする必要はありません。
ポート監視に利用されるアイテムキー
ポート監視に利用されるアイテムキーには、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番ポート)の接続確認 |
|
|
| RDP(TCP 3389番ポート)の接続確認 |
|
|
| HTTPS(TCP 443番ポート)の応答時間取得 |
|
|
—広告—
ポート監視のアイテム作成手順
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を使用しています。
net.tcp.portを使用してRDPをポート監視するアイテムを作成
アイテムキーにnet.tcp.portを使用した、RDP (TCP 3389番ポート) の接続確認を行うためのアイテムを新規作成します。
なお、net.tcp.portはTCPレベルでの接続確認のみを行います。
そのため、RDPプロトコル自体の応答を確認するものではなく、3389番ポートでTCP接続が確立できるかどうかを監視することになります。
| ポート監視用のアイテムを作成 | |
| 新規アイテム作成画面で、キーを選択します。 | ![]() |
| 標準のアイテム選択画面が表示されます。 net.tcp.serviceを選択します。 |
![]() |
| 新規アイテム作成画面に戻ります。 名前、監視間隔などを選択します。 追加します。 ※データ型などは、アイテムキーに応じて自動的に選択されます。 |
![]() |
|
|
| 追加したアイテムが表示されます。 | ![]() |
テストを使って値の取得できるか確認
アイテム作成前や作成後に、データが正常に取得できているかどうかをテスト機能を使って確認できます。
ただし、テストで利用できるアイテムキーには制限があり、Zabbixエージェント(アクティブ)など一部のアイテムキーではテスト機能は利用できません。
| テストを使ってデータ取得できるか確認 | |
| アイテム作成画面でテストを選択します。 アイテムを更新する場合も、表示されるボタンの種類は異なりますが、同様にテストを選択して動作確認できます。 |
![]() |
| アイテムのテスト画面が表示されます。 値の取得とテストを選択します。 結果に値の取得結果が表示されます。 |
![]() |
値が取得されているかを最新データで確認
作成したアイテムが、正しく値を取得できているかを確認します。
監視データのメニューにある最新データから確認できます。
| 取得した監視データの確認 | |
| 最新データに設定したアイテムが表示されます。 接続できる場合は1、できない場合は0が取得されることを確認できます。 |
![]() |
| 最新データでグラフを選択すると、データ取得値をグラフとして表示することができます。 net.tcp.service.perf場合は、応答速度をグラフとして表示することができます。 |
![]() |
![]() |
|
—広告—
ポート監視のトリガー作成手順
ポート監視のトリガー設定値
今回作成したトリガーの設定値です。
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になったことを条件としています。
| ポート監視の障害を検知するトリガー | |
| 監視対象ホストのトリガーを選択します。 | ![]() |
| トリガーの作成を選択します。 | ![]() |
| 新規トリガーの作成画面が表示されます。 条件式の追加を選択します。 |
![]() |
| トリガー条件式の設定画面が表示されます。 アイテムを選択します。 |
![]() |
| 作成したアイテムが一覧表示されます。 利用するアイテムを選択します。 |
![]() |
| トリガー条件式の設定画面に戻ります。 関数、最新の(T)、結果を選択します。 今回は関数にmax、最新の3カウント、結果が0の場合としています。 挿入を選択します。 |
![]() |
| 新規トリガー設定画面に戻ります。 トリガー名、深刻度などを設定します。 追加を選択します。 |
![]() |
|
|
| 追加したトリガーが表示されます。 | ![]() |
ポート監視の障害検知を確認
監視対象サーバーのSSHサービスを停止して、障害として検知されるかを確認します。
| 障害検知を確認 | |
| SSHサービスを停止後、しばらくすると障害として検知されます。 今回の場合は監視間隔1分、3回連続で検知としているので、2分~3分経過後に障害と判断されます。 障害の発生は、監視データのホストや障害のメニューから確認できます。 |
![]() |
![]() |
|
![]() |
|
| SSHサービスを開始後、しばらくするとステータスが解決済みとなります。 今回の設定では、1分以内に正常イベントが生成され解決済と判断されます。 |
![]() |
| 最新データで値の取得状況を確認します。 障害が復旧した直後の最新データを確認すると、値が1になっていることが分かります。 また、グラフからは、サービスが停止していた時間帯の値が0になっていることを確認できます。 |
![]() |
![]() |
|
—広告—
最後に
今回は、Zabbixでポート監視を行うためのアイテムキーや設定手順について確認しました。
設定手順では、アイテムの作成からトリガーの作成、データ取得状況の確認、障害発生までの一連の流れを確認しています。
引き続き、いろいろ試してみたいと思います。
Zabbixでホストを新規登録するための手順については、こちらで紹介しています。
Zabbix エージェントのインストールや暗号化通信の有効化手順については、こちらで紹介しています。
Zabbixでログを監視するための手順については、こちらで紹介しています。
ZabbixでWebサイトを監視するための手順については、こちらで紹介しています。





























