【システム監視】Zabbix 3.4をCentOS 7にインストールしてみた
サーバやネットワーク機器などのシステムに異常がないかを監視するツールとして、Zabbixが広く使われています。
仕事でZabbixに関わる機会がけっこうあるので、今回はZabbixによる監視環境を自宅サーバにインストールして、いろいろ実験してみました。
目次
Zabbixとは?
Zabbix(ざびっくす)は、ネットワーク機器・サーバ・各種ログなどの状態を監視し、異常を検知できるオープンソースのツールです。
無料で使用できます。
個人用途はもちろん、企業の大規模システムの監視実績も豊富です。
日本語の公式サイトで、ツールのダウンロードやドキュメントの確認ができます。
本記事投稿時点の最新版は3.4系です。まもなく4.0がリリースされるそうです。
【監視するサーバの準備】インストール
まずは、監視する側のサーバに、Zabbix本体や関連ツールをインストールします。
自分自身を監視するために、エージェントツールもインストールします。
インストール方法は、公式サイトの手順を基本にしつつ、必要なものを少し追加しています。
- サーバにログインして、rootユーザになります。
$ su -
- Zabbix用のリポジトリをインストール。
# rpm -i http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
- 監視サーバツール、管理画面表示用のツール、データ収集用のエージェントツール、日本語化ファイルをインストール。
# yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent zabbix-web-japanese
- CentOSにMariaDBがインストールされていない場合は、インストール、起動して初期設定。
# yum install mariadb-server # systemctl enable mariadb # systemctl start mariadb # mysql_secure_installation
- データベースの作成と、権限設定。●●●●には任意のパスワードを指定。
# 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;
- データベースに、初期データを投入。
# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
- Zabbixの設定に、データベースのパスワードを追記。
# vi /etc/zabbix/zabbix_server.conf
以下の内容で、先ほど設定したパスワードを記述。
DBPassword=●●●●●●●●
- firewalldで、Zabbixサーバが使用する10051番ポートと、管理画面で使用するhttpの待ち受けを許可して、設定を反映。
# firewall-cmd --add-port=10051/tcp --zone=public --permanent # firewall-cmd --add-service=http --zone=public --permanent # systemctl restart firewalld
- SELinuxで、Zabbixがhttpdや他のネットワークと疎通するのを許可。
# setsebool -P httpd_can_network_connect on # setsebool -P zabbix_can_network on
- httpdのZabbix用設定で、時刻表示を日本時間に変更。
# vi /etc/httpd/conf.d/zabbix.conf
以下の行を編集
# php_value date.timezone Europe/Riga ↓ php_value date.timezone Asia/Tokyo
- 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による権限設定をもう一度実施したところ、起動するようになりました。
【監視されるサーバの準備】インストール
監視されるクライアント側には、データ収集を行うエージェントツールのみをインストールしておきます。
- サーバにログインして、rootユーザになります。
$ su -
- Zabbix用のリポジトリをインストール。
# rpm -i http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
- データ収集用のエージェントツールをインストール。
# yum install zabbix-agent
- firewalldで、エージェントが使用する10050番ポートの待ち受けを許可して、設定を反映。
# firewall-cmd --add-port=10050/tcp --zone=public --permanent # systemctl restart firewalld
- 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=●●●●
- Zabbixエージェントの起動と、自動起動設定。
# systemctl start zabbix-agent # systemctl enable zabbix-agent
初回ログイン
サーバの準備が完了すると、下記URLで管理画面へアクセスできます。
http://サーバのIPアドレス/zabbix/
- 「Next step」をクリック。
- PHPが動作条件を満たしているか表示されます。「Next step」をクリック。
- データベース設定画面になります。データベースのパスワードを追加して、次へ。
- Zabbixサーバの設定画面になります。そのまま次へ。
ここで名前を指定しておくと、ダッシュボード画面の右上に名前が表示されるそうなので、お好みで設定可です。
- 内容を確認して次へ。
- インストールが完了。「Finish」を押すとログイン画面になるので、ユーザ名Admin、パスワードzabbixでログイン。
- ダッシュボード画面が表示されます。画面右上の人型アイコンからユーザ設定を開いて、日本語化ができます。
まとめ
けっこうトラブルありましたが、以上でインストールと初期設定ができました。
今後は監視設定をいろいろ入れて使い込んでいこうと思います。