CentOS 7.3 に Zabbix Proxy 3.2 をセットアップする
名前の通り、Zabbix 専用のプロキシサーバです。
Zabbix サーバから直接接続できないサーバの監視などに用いられます。
今回は、自宅ネットワーク内のサーバを監視するために Zabbix Proxy を構築しました。
親サーバはインターネット上にあるため、Zabbix Proxy から NAT 経由で接続します。
1. インストール
yumリポジトリの登録
今回は yum でインストールするため、RHEL7 用のリポジトリをインストールします。
$ sudo rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
最新版のURLは http://repo.zabbix.com/zabbix/ から辿っていき、zabbix-release
で始まる項目を確認してください。
Zabbix Proxy
利用する DB によってパッケージが異なります。
今回は MariaDB(MySQL) を使用するため、以下のパッケージをインストールします。
$ sudo yum install zabbix-proxy-mysql
Retrieving key from ...
から始まる確認メッセージが表示された場合は y
を入力します。
MariaDB
CentOS 7 から、MySQL の派生である MariaDB が標準のデータベースとして採用されています。Zabbix のデータ管理用にインストールします。
$ sudo yum install mariadb-server
サービスの自動起動を有効にし、サービスを開始します。
$ sudo systemctl enable mariadb
$ sudo systemctl start mariadb
2.データベース設定
DBの作成
root でログインします。パスワード設定は後ほど忘れずにしておきましょう。
$ sudo mysql -uroot
今回は zabbix_proxy
という名称のDBを作成します。
MariaDB [(none)]> create database zabbix_proxy;
DBユーザの作成
ユーザ名は zabbix
とし、先ほど作成したDBの全権限を付与します。password
の部分は、任意のパスワードに置き換えてください。
MariaDB [(none)]> grant all privileges on zabbix_proxy.* to zabbix@localhost identified by 'password';
MariaDB [(none)]> exit;
初期データのインポート
公式ドキュメントでは create.sql.gz
でしたが、 schema.sql.gz
しか見当たらないため、そちらを利用しています。
$ zcat /usr/share/doc/zabbix-proxy-mysql-3.2.6/schema.sql.gz | mysql -uroot zabbix_proxy
gzをそのまま開ける zcat
コマンドがあるのですね。初めて知りました。
なお、ファイルのパスはバージョンによって読み替えてください。
3. 設定ファイル更新
バックアップ
何ごともバックアップは大事、編集前にコピーしておきます。
$ sudo cp -p /etc/zabbix/zabbix_proxy.conf{,.bk}
$ sudo vi zabbix_proxy.conf
確認箇所
少なくとも、以下の項目は確認・修正しておきましょう。
Server=127.0.0.1 → Zabbix親サーバのIPもしくはホスト名に修正
Hostname=Zabbix proxy → 任意の名称に
DBHost=localhost → 追記
DBName=zabbix_proxy → そのまま
DBUser=zabbix → そのまま
DBPassword=password → 追記
4. Zabbix サーバ側の設定
親となるZabbix サーバに設定を追加します。
管理→プロキシ→プロキシの作成 の順に辿ります。
『プロキシ名』 には、zabbix_proxy.conf
に設定した Hostname
と同じ値を入力します。
『プロキシモード』 はアクティブのままで構いません。
5. ネットワークの設定
Zabbix 親サーバからの通信 (tcp:10051) が、今回構築する Zabbix-Proxy に届くようにポート転送等の設定をします。
Zabbix 親サーバ側でも、Zabbix-Proxy からの通信 (tcp:10050) が受信できるように、フィルタの解除等を行ってください。
6. 起動……失敗
サービスの自動起動設定と、サービスの開始を行います。
$ sudo systemctl enable zabbix-proxy
$ sudo systemctl start zabbix-proxy
しかし、開始に失敗してしまいました。ログを見てみます。
$ less /var/log/zabbix/zabbix_proxy.log
以下のようなエラーが出力されています。
cannot set resource limit: [13] Permission denied
cannot disable core dump, exiting...
7. SELinux の設定
経験上、この手のよく分からない権限エラーは SELinux が原因です。(適当)
SELinux のログから必要な権限を洗い出し、許可設定を追加します。
$ grep zabbix /var/log/audit/audit.log | audit2allow -M zabbix-policy
$ sudo semodule -i zabbix-policy.pp
audit2allow
が入っていない場合は、yum install policycoreutils-python
でインストールできます。
また、以下の設定も後々必要になるので先に入れておきます。
(Zabbix サーバのインストール時にも必要な項目ですね)
$ sudo setsebool httpd_can_connect_zabbix on
$ sudo setsebool zabbix_can_network on
8. 改めて起動
今度は無事に起動できました。
$ sudo systemctl start zabbix-proxy
$ systemctl status zabbix-proxy
Active: active (running)
ログ上でも、正常に通信ができているようです。
$ less /var/log/zabbix/zabbix_proxy.log
received configuration data from server at "35.187.xxx.yyy", datalen 2911
Zabbix 親サーバ側でも無事に認識されました。
次回は……
Zabbix 親サーバと Zabbix-Proxy 間の通信暗号化設定を行います。
⇒Zabbix Server と Zabbix Proxy 間の通信を暗号化する