CentOS 7.3 に Zabbix Proxy 3.2 をセットアップする

LinuxTech

名前の通り、Zabbix 専用のプロキシサーバです。
Zabbix サーバから直接接続できないサーバの監視などに用いられます。

Zabbix Proxyの概要
Zabbix Documentation 2.2

今回は、自宅ネットワーク内のサーバを監視するために 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 設定01

『プロキシ名』 には、zabbix_proxy.conf に設定した Hostname と同じ値を入力します。
『プロキシモード』 はアクティブのままで構いません。

Zabbix Proxy 設定02

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 Proxy 設定03

次回は……

Zabbix 親サーバと Zabbix-Proxy 間の通信暗号化設定を行います。
Zabbix Server と Zabbix Proxy 間の通信を暗号化する

LinuxTech