IDCFクラウドの仮想マシンにZabbixをセットアップする時のポイント(ほぼ手間いらず)

2015/09/20

とあるWebサーバの監視を外部から行う要件があり、IDCFクラウド上の仮想マシンにZabbixを入れて監視を行うことにしました。

IDCFクラウド側の作業ですが、本来のZabbixの設定以外はほとんどやることもなく簡単に設置できました。

設置にあたりいくつかポイントがあるので説明します。仮想マシンは一番格安なLightタイプ、OSはCentOS 7、Zabbixは2.4.6です。

Zabbixを動作させるのに必要なソフトウェアは以下の4つですが、WebサーバとMTAは最初から仮想マシンにインストールされていました。その他もインストールして少々設定を行うのみで準備完了です。

Webサーバ(Apacheなど)
PHP
DBMS(MySQLなど)
MTA(Postfixなど)

尚、Zabbixの設定についてはワルブリックスさんの以下の記事がとても分かりやすいのでここでは割愛します。

Zabbixを使ってエージェント無しで単純な Webサイト監視だけを行う最短の方法 - ワルブリックス株式会社

インストール

まずZabbixを動作させるのに必要なソフトウェアをインストールしていきます。それぞれとても簡単な作業です。

Webサーバ

Apacheがインストールされているので有効化して起動するのみ。
# systemctl enable httpd
# systemctl start httpd

PHP

パッケージをインストールしてタイムゾーンを設定する。
# yum -y install php php-mbstring php-pear
# vi /etc/php.ini
:
878  date.timezone = "Asia/Tokyo"
:
Apacheを再起動する。
# systemctl restart httpd

DBMS

ここではMariaDBをインストールする。

server.cnfを編集してサーバ側の文字コードをUTF-8に変更する。
# yum -y install mariadb-server
# vi /etc/my.cnf.d/server.cnf
(mysqldセクションに以下の設定を追加)
:
 12 [mysqld]
 13 character-set-server = utf8
:
有効化・起動を行う。
# systemctl enable mariadb
# systemctl start mariadb
MariaDB全体の初期設定を行う。
# mysql_secure_installation
:
Set root password? [Y/n] y <- rootパスワード設定
New password: *****
Re-enter new password: *****
:
Remove anonymous users? [Y/n] y <- 匿名ユーザ削除
:
Disallow root login remotely? [Y/n] y <- rootのリモートログイン無効化
:
Remove test database and access to it? [Y/n] y <- テストデータベース削除
:
Reload privilege tables now? [Y/n] y <- 特権情報リロード

# mysql -u root -p
Enter password: *****
:
MariaDB [(none)]> select user,host,password from mysql.user; <- ユーザ一覧表示
+------+-----------+-------------------------------------------+
| user | host      | password                                  |
+------+-----------+-------------------------------------------+
| root | localhost | *6FE21BD0EA89B0BCA37C2916970BF2F8D33EB0AC |
| root | 127.0.0.1 | *6FE21BD0EA89B0BCA37C2916970BF2F8D33EB0AC |
| root | ::1       | *6FE21BD0EA89B0BCA37C2916970BF2F8D33EB0AC |
+------+-----------+-------------------------------------------+

MariaDB [(none)]> show databases; <- データベース一覧表示
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

MariaDB [(none)]> exit

Zabbix

Zabbix本体と関連パッケージをインストールする。
# rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/7/x86_64/zabbix-release-2.4-1.el7.noarch.rpm
# yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-web-japanese
CentOS 7に同梱されているtrousers-3.11ではZabbixサーバの起動に失敗するためCentOS 6で配布されているtrousers-3.13にアップデートする。
# yum -y update http://ftp.jaist.ac.jp/pub/Linux/CentOS/6/os/x86_64/Packages/trousers-0.3.13-2.el6.x86_64.rpm
Zabbix用データベースを作成する。
# mysql -u root -p
Enter password: *****

MariaDB [(none)]> create database zabbix;
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@'localhost' identified by '<パスワード>';
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@'%' identified by '<パスワード>';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit

# cd /usr/share/doc/zabbix-server-mysql-*/create
# mysql -u root -p zabbix < schema.sql
Enter password: *****
# mysql -u root -p zabbix < images.sql
Enter password: *****
# mysql -u root -p zabbix < data.sql
Enter password: *****
Zabbixサーバの設定とサービスの有効化・起動を行う。
# vi /etc/zabbix/zabbix_server.conf
:
 72 # DBHost=localhost <- コメントを外す
:
106 # DBPassword= <- コメントを外してパスワード設定
:

# systemctl enable zabbix-server
# systemctl start zabbix-server

MTA

CentOS 7にはデフォルトでPostfixがインストールされているのでそれをそのまま使用する。
Zabbixサーバから外部に通知メッセージを送る必要があるのでlocalhostから外部にメールが出せることを確認しておく(設定は不要)。
# echo "test" | mail -s `hostname` <送信先メールアドレス>

IDCFクラウド側の設定

ここまで終わったらIDCFクラウド側の設定に移ります。

ZabbixサーバのWebインタフェースに外部からのアクセスを許可するための設定で、[IPアドレス]メニューで対象の仮想マシンを選択して以下の2点を設定するのみです。

ファイアウォールでTCP/80をActiveに
ポートフォワードでプライベートのTCP/80をパブリックのTCP/80に接続

動作確認

Webブラウザから仮想マシンにアクセスしてZabbixのWebインタフェースが表示されればサーバ側の設定は完了です。あとは先に紹介したページの手順に従ってZabbix内の設定を行います。

http://<仮想マシンのIPアドレス>/zabbix/