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/