yuu26's memo

試したことや調べたことなどを記録しています。まずは継続的な更新が目標です。

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

Zabbix Proxyとは

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

f:id:yuu2634:20170509222412p:plain
Zabbix Documentation 2.2

今回は、インターネット上の Zabbix サーバから NAT 内のサーバを監視する目的で、Zabbix Proxy を構築してみました。


1. インストール

yumリポジトリの登録

今回は yum でインストールするため、RHEL7 用のリポジトリをインストールします。

# 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) を使用するため、以下のパッケージをインストールします。

# yum install zabbix-proxy-mysql

Retrieving key from ... から始まる確認メッセージが表示された場合は y を入力します。


MariaDB

CentOS 7 から、MySQL の派生である MariaDB が標準のデータベースとして採用されています。

# yum install mariadb-server

サービスの自動起動を有効にし、サービスを開始します。

# systemctl enable mariadb
# systemctl start mariadb


2.データベース設定

DBの作成

root でログインします。パスワード設定は後ほど忘れずにしておきましょう。

# 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. 設定ファイル更新

バックアップ

何ごともバックアップは大事、編集前にコピーしておきます。

[root@centos ~]# cd /etc/zabbix/
[root@centos zabbix]# cp -p zabbix_proxy.conf{,.bk}
[root@centos zabbix]# 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 サーバに設定を追加します。
管理→プロキシ→プロキシの作成 の順に辿ります。

f:id:yuu2634:20170510005549p:plain

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


5. ネットワークの設定

Zabbix 親サーバからの通信 (tcp:10051) が、今回構築する Zabbix-Proxy に届くようにポート転送等の設定をします。

Zabbix 親サーバ側でも、Zabbix-Proxy からの通信 (tcp:10050) が受信できるように、フィルタの解除等を行ってください。


6. 起動……失敗

サービスの自動起動設定と、サービスの開始を行います。

# systemctl enable zabbix-proxy
# 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
# semodule -i zabbix-policy.pp

audit2allow が入っていない場合は、yum install policycoreutils-python でインストールできます。


また、以下の設定も後々必要になるので先に入れておきます。
(Zabbix サーバのインストール時にも必要な項目ですね)

# setsebool httpd_can_connect_zabbix on
# setsebool zabbix_can_network on


8. 改めて起動

今度は無事に起動できました。

# 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 親サーバ側でも無事に認識されました。 f:id:yuu2634:20170510002748p:plain


次回は……

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

追記)書きました:Zabbix Server と Zabbix Proxy 間の通信を暗号化する