【システム監視】Zabbix 3.4をCentOS 7にインストールしてみた

サーバやネットワーク機器などのシステムに異常がないかを監視するツールとして、Zabbixが広く使われています。
仕事でZabbixに関わる機会がけっこうあるので、今回はZabbixによる監視環境を自宅サーバにインストールして、いろいろ実験してみました。

目次

Zabbixとは?

Zabbix(ざびっくす)は、ネットワーク機器・サーバ・各種ログなどの状態を監視し、異常を検知できるオープンソースのツールです。
無料で使用できます。
個人用途はもちろん、企業の大規模システムの監視実績も豊富です。

日本語の公式サイトで、ツールのダウンロードやドキュメントの確認ができます。
本記事投稿時点の最新版は3.4系です。まもなく4.0がリリースされるそうです。

【監視するサーバの準備】インストール

まずは、監視する側のサーバに、Zabbix本体や関連ツールをインストールします。
自分自身を監視するために、エージェントツールもインストールします。

インストール方法は、公式サイトの手順を基本にしつつ、必要なものを少し追加しています。

  1. サーバにログインして、rootユーザになります。
    $ su -
  2. Zabbix用のリポジトリをインストール。
    # rpm -i http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
  3. 監視サーバツール、管理画面表示用のツール、データ収集用のエージェントツール、日本語化ファイルをインストール。
    # yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent zabbix-web-japanese
  4. CentOSにMariaDBがインストールされていない場合は、インストール、起動して初期設定。
    # yum install mariadb-server
    # systemctl enable mariadb
    # systemctl start mariadb
    # mysql_secure_installation
  5. データベースの作成と、権限設定。●●●●には任意のパスワードを指定。
    # mysql -u root -p
    Enter password:
    mysql> create database zabbix character set utf8 collate utf8_bin;
    mysql> grant all privileges on zabbix.* to zabbix@localhost identified by '●●●●●●●●';
    mysql> quit;
  6. データベースに、初期データを投入。
    # zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
  7. Zabbixの設定に、データベースのパスワードを追記。
    # vi /etc/zabbix/zabbix_server.conf

    以下の内容で、先ほど設定したパスワードを記述。

    DBPassword=●●●●●●●●
  8. firewalldで、Zabbixサーバが使用する10051番ポートと、管理画面で使用するhttpの待ち受けを許可して、設定を反映。
    # firewall-cmd --add-port=10051/tcp --zone=public --permanent
    # firewall-cmd --add-service=http --zone=public --permanent
    # systemctl restart firewalld
  9. SELinuxで、Zabbixがhttpdや他のネットワークと疎通するのを許可。
    # setsebool -P httpd_can_network_connect on
    # setsebool -P zabbix_can_network on
  10. httpdのZabbix用設定で、時刻表示を日本時間に変更。
    # vi /etc/httpd/conf.d/zabbix.conf

    以下の行を編集

    # php_value date.timezone Europe/Riga
    ↓
    php_value date.timezone Asia/Tokyo
  11. Zabbixサーバ・エージェントと、httpdを起動して、自動起動設定。
    # systemctl start zabbix-server zabbix-agent httpd
    # systemctl enable zabbix-server zabbix-agent httpd

SELinuxが有効である場合、Zabbixのサーバ起動に失敗することがあります。
最初に起動しようとしたら、こんなエラーが表示されました。

# systemctl start zabbix-server
Job for zabbix-server.service failed because a configured resource limit was exceeded. See "systemctl status zabbix-server.service" and "journalctl -xe" for details.

# systemctl status zabbix-server.service
● zabbix-server.service - Zabbix Server
   Loaded: loaded (/usr/lib/systemd/system/zabbix-server.service; disabled; vendor preset: disabled)
   Active: activating (auto-restart) (Result: resources) since 木 2018-02-08 23:31:04 JST; 8s ago
  Process: 12211 ExecStart=/usr/sbin/zabbix_server -c $CONFFILE (code=exited, status=0/SUCCESS)

 2月 08 23:31:04 aiyabushi-zbx01 systemd[1]: zabbix-server.service never wrote its PID file. Failing.
 2月 08 23:31:04 aiyabushi-zbx01 systemd[1]: Failed to start Zabbix Server.
 2月 08 23:31:04 aiyabushi-zbx01 systemd[1]: Unit zabbix-server.service entered failed state.
 2月 08 23:31:04 aiyabushi-zbx01 systemd[1]: zabbix-server.service failed.

/var/log/zabbix_server.logにはこんなログが出ています。

using configuration file: /etc/zabbix/zabbix_server.conf
cannot set resource limit: [13] Permission denied
cannot disable core dump, exiting...

/var/log/audit.logはこんな感じ。

type=AVC msg=audit(1518101384.840:744): avc:  denied  { setrlimit } for  pid=12599 comm="zabbix_server" scontext=system_u:system_r:zabbix_t:s0 tcontext=system_u:system_r:zabbix_t:s0 tclass=process

権限がよろしくないようです。

SELinuxを止めてしまうのも選択肢かもしれませんが、それではSELinuxの意味がなくなってしまうので、auditの設定ツールを使って設定を変えましょう。

設定ツールをインストール。

# yum install policycoreutils-python

必要な権限を確認。

# grep zabbix_server /var/log/audit/audit.log | audit2allow

#============= zabbix_t ==============
allow zabbix_t self:process setrlimit;

setrlimitというのが必要とのこと。設定用のファイルを生成します。

# grep zabbix_server /var/log/audit/audit.log | audit2allow -M zabbix-limit
******************** IMPORTANT ***********************
To make this policy package active, execute:

semodule -i zabbix-limit.pp

メッセージに従い、コマンドを実行して、再度Zabbixサーバを起動。

# semodule -i zabbix-limit.pp
# systemctl start zabbix-server

そしたら、次はこんなエラーが。

zabbix_server [13493]: cannot open log: cannot create semaphore set: [28] No space left on device

セマフォを使いすぎとのこと。サーバを再起動したら解消しました。

さらにこんなエラーも。

cannot start preprocessing service: Cannot bind socket to "/var/run/zabbix/zabbix_server_preprocessing.sock"

audit2allowによる権限設定をもう一度実施したところ、起動するようになりました。

 

【監視されるサーバの準備】インストール

監視されるクライアント側には、データ収集を行うエージェントツールのみをインストールしておきます。

  1. サーバにログインして、rootユーザになります。
    $ su -
  2. Zabbix用のリポジトリをインストール。
    # rpm -i http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
  3. データ収集用のエージェントツールをインストール。
    # yum install zabbix-agent
  4. firewalldで、エージェントが使用する10050番ポートの待ち受けを許可して、設定を反映。
    # firewall-cmd --add-port=10050/tcp --zone=public --permanent
    # systemctl restart firewalld
  5. Zabbixエージェントの設定に、監視サーバのIPアドレスを設定。
    # vi /etc/zabbix/zabbix_agentd.conf

    ServerとServerActiveの行に、サーバのIPアドレスを設定。Hostnameにはクライアントの名前を追加。

    Server=127.0.0.1
    ServerActive=127.0.0.1
    Hostname=Zabbix server
    ↓
    Server=●.●.●.●
    ServerActive=●.●.●.●
    Hostname=●●●●
  6. Zabbixエージェントの起動と、自動起動設定。
    # systemctl start zabbix-agent
    # systemctl enable zabbix-agent

初回ログイン

サーバの準備が完了すると、下記URLで管理画面へアクセスできます。

http://サーバのIPアドレス/zabbix/

  1. 「Next step」をクリック。
    Zabbixインストール
  2. PHPが動作条件を満たしているか表示されます。「Next step」をクリック。
    Zabbixインストール
  3. データベース設定画面になります。データベースのパスワードを追加して、次へ。
    Zabbixインストール
  4. Zabbixサーバの設定画面になります。そのまま次へ。
    ここで名前を指定しておくと、ダッシュボード画面の右上に名前が表示されるそうなので、お好みで設定可です。
    Zabbixインストール
  5. 内容を確認して次へ。
    Zabbixインストール
  6. インストールが完了。「Finish」を押すとログイン画面になるので、ユーザ名Admin、パスワードzabbixでログイン。
    Zabbixインストール
  7. ダッシュボード画面が表示されます。画面右上の人型アイコンからユーザ設定を開いて、日本語化ができます。
    Zabbixインストール

まとめ

けっこうトラブルありましたが、以上でインストールと初期設定ができました。
今後は監視設定をいろいろ入れて使い込んでいこうと思います。

コメントを残す

メールアドレスが公開されることはありません。

関連記事