こんにちは、ギークフィードに入社して2年が経ちました、エンジニアのサミーラです。入社後フルスタックエンジニアとして以下のエリアとプロジェクトに携わってきました。
- LaravelフレームワークでWEBシステム開発
- サーバー構築・メンテナンス
- クラウドサービス
- 音声認識/音声の分析/VOIP
Laravelのプロジェクト経験は以下です。
- 通話録音システムの制御および表示Webシステム(音声認識も含め)
- モバイルゲームのバックエンドシステム
- WEB電話帳システム
- IP-PBXのWEBプロビジョニングシステム。
今回はNATファイアウォールの背後にあるサーバーをZabbixで監視することについて話をしたいと思います。ホストサーバーはNATの背後とZabbix-Serverは外にある場合は外から直接、ホストへアクセスできないので、Passiveモードで監視ができる方法について話をします。
このブログを読むために必要な理解。
この記事のすべてのコマンドは、rootユーザーとして実行されています。
先にZabbix-Agentのモードから説明します。
環境情報
- CentOS 7.6のサーバー
- Zabbixサーバー 4.0.9
目次
Zabbix-Agentのモードについて
Zabbix-Agentのモードは以下の2つあります。
★ActiveとPassiveは接続の方向が異なります。
Passive Mode
1:Zabbix-Serverはポート10050/TCPを使用して、Zabbix-Agentへ管理するメトリクスリストを送ります。
2:Zabbix-Agentがメトリクスリストにあるデータを取得して、取得データをZabbix-Serverへ送信します。
Active Mode
1:Zabbix-Agentはポート10051/TCP を使用して、Zabbix-Serverへ接続し、管理するメトリクスを取得します。
2:Agentはデフォルトで2分に1回Zabbix-Serverに接続し、その後ホストを監視して取得したデータをZabbix-Serverへ送信します。
★どちらのモードも同じことができるようですが、モードごとにメリットとデメリットがあります。今回はPassive Modeについて話します。
なぜPassive Modeなのか?
Active ModeではZabbix-Agentからデータが送られてこないのか、なんらかの障害が発生して送ることができていないかを判別する方法が無いので、パッシブチェックをした方が、より確実にZabbix-Agentと通信できる状態かを確認できます。
もし、ホストサーバで問題が発⽣していれば、Zabbix-ServerからZabbix-Agentへのリモートコマンド実行で問題解決もできます。
NATファイアウォールの背後にあるサーバーをZabbixのPassive Modeで監視する方法
まず、前提としてNATの背後にあるホストサーバは、外にあるZabbix-Serverから直接ホストにアクセスできませんが、サーバーをPassive Modeで監視する為には、外からホストへ接続が必要です。
外からホストへ接続する為に、sshトンネルを利用しましょう。
今回はCentOS7.6環境で行います。コマンドは、rootユーザーとして実行されています。
- 監視されるホストサーバーにZabbix-Agentをインストールする必要があります。Zabbix-Agentをインストールのために以下のコマンドを使用します。
1234567rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpmyum install Zabbix-Agentsystemctl start Zabbix-Agentsystemctl enable Zabbix-Agent - 外からアクセスできないので、外からアクセスできるようにするため、sshでトンネル作成の以下のコマンドを使用します。
123(1*) ssh -R<リバースポート(例:10550)>:127.0.0.1:10050 ユーザー@zabbixサーバーIP(2*) ssh -L<フォワードポート(例:10551)>:<zabbixサーバーIP>:10051 ユーザー@zabbixサーバーIP
★上のコマンドの、
・(1*)のリバースポートには、Zabbix-Serverで使用して無いポート番号を何でも使用できます。
・(2*)のフォワードポートには、ホストサーバーで使用して無いポート番号を何でも使用できます。 - Zabbix-Agentの設定。Zabbix-Agentのconfigファイル「/etc/zabbix/zabbix_agentd.conf」で以下の項目を設定します。
12345Server=127.0.0.1ServerActive=127.0.0.1:10551 ※(2*)コマンドのポート番号Hostname=<任意のもの>
★Zabbix-Agentを再起動。【systemctl restart zabbix-agent】 - Zabbix-Serverのホストの設定。
・Zabbix-Serverのダッシュボードへログインする。
・「設定」―>「ホスト」へ行って、以下の項目を入力して、ホスト作成する。
1234567Host-name => Zabbix-Agentのconfigファイルで設定したホスト名。Groups => ホストが入るグループAgent-interface => IP:127.0.0.1 / ポート:reverse sshで使ったポート(例:10550 => (1*)コマンドのポート番号)Linked-Template => ホストサーバー用のテンプレート - 接続と監視の確認
★接続確認
Zabbix-Serverのホスト一覧の「エージェントの状態」のカラムの色で有効を判別できます。緑色になっていれば、ZabbixサーバーとNATファイアウォールの背後にあるホストサーバーのpassive modeの接続が問題なくできています。
★監視の確認
NATファイアウォールの背後にあるホストサーバーが正常に監視されていることを確認するためには、ホストを再起動します。Zabbixサーバーのダッシュボードのホストが「host is unreachable」とログが表示されていれば正常に監視されています。
提案
ssh接続は失敗したり、壊れたりする可能性があるため、接続の再試行と復元ができるシステムを使用することをオススメします。Zabbixモニタリングに上記の方法を使用している場合は、永続的なssh接続が重要です。
永続的なssh接続を行うには、autosshというパッケージを使います。コマンドは、rootユーザーとして実行されています。
Autosshのインストール方法
- 「epel-release-7-12.noarch.rpm」ファイルをNATファイアウォールの背後にあるサーバーの「/root/」にコピーします。
- 以下のコマンドでインストールします。
12345cd /root/rpm -Uvh epel-release-7-12.noarch.rpmyum install autossh
Autosshを使用する方法
- 永続的なsshトンネルのために以下のコマンドを使用できます。
123autossh -fN -M0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -o "ExitOnForwardFailure=yes" -R10550:127.0.0.1:10050 ユーザー@zabbixサーバーIPautossh -fN -M0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -o "ExitOnForwardFailure=yes" -L10551:<zabbixサーバーIP>:10051 ユーザー@zabbixサーバーIP
★autosshで自動的にzabbixサーバーへログインするために、public-privateキーを設定する必要があります。この記事ではキーの設定の説明は割愛します。
NATファイアウォール背後のサーバーをZabbixで監視するのまとめ
zabbixでサーバーを監視する方法は、接続方向によって2つの異なるモードがあります。
・Passive Mode
・Active Mode
今回はPassive Modeの監視方法について説明しました。Passive Modeは特にZabbix-ServerからZabbix-Agentへコマンドを実行する時に使います。しかし、監視対象のホストサーバーがNATファイアウォールの背後にある場合、通常Passive Modeは使えないので、SSHトンネルを作成し、Passive Modeを使えるよう設定する必要があります。
ALL THE BEST!!! HAPPY & CLEAN CODING!!!
- SupervisorでLaravelのQueue worker管理 - 2021-07-27
- Laravelでバックグラウンド処理。。。 - 2021-03-22
- NATファイアウォール背後のサーバーをZabbixで監視するTips - 2020-09-09
- Laravelのパフォーマンスを向上しましょう - 2019-12-02
- Laravelのサービスプロバイダーの仕組みやメリットとは - 2019-09-04