本文へジャンプします。

Zabbixでニフティクラウドを監視する(導入編)

Zabbixを導入しよう

ニフティクラウドには、いろいろな監視オプションがありますが、独自にシステム監視を行いたい人もいるのではないでしょうか。

システム監視ツールにはさまざまなものがありますが、今回は最近人気の高いZabbixの導入方法を紹介します。

Zabbixはオープンソースで開発されており、GPLでライセンスされているため、無償で使うことができます。また、商用サポートが必要な場合には、いろいろな会社がサポートメニューを提供しているので、ビジネスで本格的に使いたい場合も、コンサルティングや技術サポートを受けることができ、安心して使うことができます。

今回はZabbixの最新版であるバージョン3.0をインストールしてみます。
インストール先としてCentOS 7の環境を用意します。ニフティクラウドではCentOS 7.1のイメージが用意されていますが、現在はCentOS 7.2が最新版になります。といっても、yumコマンドで簡単に7.1から7.2にアップデートできます。今回はCentOS 7.2へのインストール方法を解説していきます。

インストール先ですが、ニフティクラウド上に用意するのはもちろんですが、手元にCentOS環境を用意して遠隔からクラウド上のシステムを監視する、という方法も考えられます。そこで、手順はニフティクラウド上に設定する方法を解説していきますが、自分でCentOS 7.2の環境を用意した場合に行わなければいけない手順を別途記述します。

具体的にはセキュリティに関わるSELinuxの設定とfirewalldの設定について解説します。
また、Zabbixの具体的な設定方法については、別途解説します。ただし設定できることの幅が広いので、Zabbixについて解説した書籍を購入することをお勧めします。

すべての作業はroot権限で行っています。
コピー&ペーストしやすくするため、コマンドプロンプトは省略しています。

サーバーの準備

CentOS 7.1のイメージからサーバーを作成します。

CPUやメモリは監視対象をどの程度登録するかに左右されますが、とりあえずe-small(1vCPU・1GB)でサーバーを作成します。

サーバーの作成が終わったら、システムのアップデートを行います。カーネルも更新されるので再起動を行ってください。

sudo yum update -y
sudo reboot

WebサーバーとPHPのインストール

ZabbixのWeb管理画面を使うために、Apache WebサーバーとPHPをインストールします。

sudo yum install httpd php -y

MySQLのインストール

Zabbixのバックエンドデータベースとして、MySQLをインストールします。

CentOS 7から標準でMariaDBがインストールされるようになっているので、別途MySQLのコミュニティ版がインストールできるようにリポジトリの登録を行います。

sudo rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm

リポジトリが登録されたら、MySQLをインストールします。

sudo yum install mysql-server -y

Zabbixのインストール

Zabbixをインストールします。

こちらも、Yum用のリポジトリ設定パッケージが用意されているので、インストールします。

sudo rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm

リポジトリが登録されたら、Zabbixをインストールします。

sudo yum install zabbix-server-mysql zabbix-web-mysql -y

Zabbixは、監視の対象となるホストに、Zabbixエージェントをインストールすることで、各種データを取得できるようになります。Zabbixサーバー自身も監視対象にできるので、Zabbixエージェントをインストールしておきます。

sudo yum install zabbix-agent -y

MySQLの設定

MySQLの設定を行います。

MySQLの起動

systemctlコマンドを使って、mysqldサービスを起動します。システム起動時に自動起動するように有効にしておきます。

sudo systemctl start mysqld
sudo systemctl enable mysqld

MySQLの初期rootパスワードの確認

MySQLは、初期起動時にスーパーユーザー(root)のパスワードをランダム設定しますので、確認しておきます。

sudo grep password /var/log/mysqld.log

以下は実行例です。

$ sudo grep password /var/log/mysqld.log
2016-03-25T06:50:26.067022Z 1 [Note] A temporary password is generated for root@localhost: %ilg<p>5Le

表示の最後にある%ilg<p>5Leの部分がパスワードです。

MySQLのセキュリティ設定

MySQLの初期状態をよりセキュアにするため、mysql_secure_installationスクリプトが用意されているので実行します。
rootパスワードの再設定が必要となりますが、パスワードポリシーは「STRONG」なため、以下の条件に合うパスワードを設定してください。

  • 8文字以上
  • 小文字、大文字、数字、特殊文字をそれぞれ1文字以上含む
  • 4文字以上の部分文字列が辞書にマッチしない
sudo mysql_secure_installation

以下は実行例です。

$ sudo mysql_secure_installation
Securing the MySQL server deployment.

Enter password for user root: (先ほど確認した初期rootパスワードを入力)

The existing password for the user account root has expired.
Please set a new password.

New password: (新しいrootパスワードを入力)

Re-enter new password: (新しいrootパスワードを再入力)
The ‘validate_password’ plugin is installed on the server.
The subsequent steps will run with the existing configuration of the plugin.
Using existing password for root.

Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n(既にrootパスワードの変更は行ったのでnと入力)

… skipping.
By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother.
You should remove them before moving into a production environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y(匿名ユーザーを削除。yと入力)
Success.

Normally, root should only be allowed to connect from ‘localhost’. This ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y(リモートからのroot接続を許可しない。yと入力)
Success.

By default, MySQL comes with a database named ‘test’ that anyone can access. This is also intended only for testing, and should be removed before moving into a production
environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y(テストDBを削除。yと入力。)
– Dropping test database…
Success.

– Removing privileges on test database…
Success.

Reloading the privilege tables will ensure that all changes made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y(権限設定を反映させる。yと入力)
Success.

All done!

MySQLの設定を変更

MySQLの設定を変更します。
文字コードをUTF-8に設定し、パスワードの有効期間を無期限に設定しておきます。

sudo vi /etc/my.cnf

以下の2つの設定を/etc/my.cnfに追加します。

character-set-server = utf8
default_password_lifetime = 0

MySQLを再起動

設定を反映させるためにMySQLを再起動します。

sudo systemctl restart mysqld

MySQLにデータベースとユーザーを作成

MySQLにZabbix用のデータベースzabbixを作成します。
さらにそのデータベースにアクセスできるユーザーzabbixを作成します。
ユーザーzabbixにはパスワードを設定します。パスワードはrootパスワード同様、8文字以上、大文字・小文字・数字・記号をすべて含む、辞書に部分文字列がマッチしないパスワードで設定する必要があります。

実行するSQL文

create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by ‘NicoPri120%’;
sudo mysql -uroot -p

以下は実行例です。

$ sudo mysql -uroot -p
Enter password:(rootパスワードを入力)
Welcome to the MySQL monitor. Commands end with ; or \g.
(略)
mysql> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)

mysql> grant all privileges on zabbix.* to zabbix@localhost identified by ‘NicoPri120%’;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> \q
Bye

MySQLにZabbix用データベーススキーマを作成

Zabbixに必要なデータベーススキーマを作成します。
/usr/share/doc/zabbix-server-mysql-*ディレクトリにSQLスクリプトcreate.sql.gzが用意されているので、内容をmysqlコマンドの標準入力に流し込んで実行します。

cd /usr/share/doc/zabbix-server-mysql-3.0.1
sudo zcat create.sql.gz | mysql -uroot -p zabbix

以下は実行例です。

$ cd /usr/share/doc/zabbix-server-mysql-3.0.1
$ sudo zcat create.sql.gz | mysql -uroot -p zabbix
Enter password:(ユーザーzabbixのパスワードを入力。例ではNicoPri120%)

Zabbixの初期設定

MySQLの準備ができたので、Zabbix側の設定に進みます。

Zabbixのデータベース接続設定を変更

Zabbixのデータベースへの接続設定を変更します。
設定ファイルは、/etc/zabbix/zabbix_server.confです。

sudo vi /etc/zabbix/zabbix_server.conf

以下の設定を行います。

DBHost=localhost(コメントアウトを外す)
DBName=zabbix(設定済み)
DBUser=zabbix(設定済み)
DBPassword=NicoPri120%(ユーザーZabbixのパスワード。コメントアウトを外す。例ではNicoPri120%)

Zabbixサーバーを起動します。

Zabbixサーバーを起動します。

sudo systemctl start zabbix-server
sudo systemctl enable zabbix-server

PHPの設定を変更します。

ZabbixのWeb管理画面が使用するパラメーターは、/etc/httpd/conf.d/zabbix.confに記述されています。

sudo vi /etc/httpd/conf.d/zabbix.conf

以下の設定を行います。

# php_value date.timezone Europe/Riga
php_value date.timezone Asia/Tokyo(コメントアウトを外し、Asia/Tokyoに変更)

Webサーバーの起動

httpdサービスを起動し、システム起動時に自動起動するように有効にしておきます。

sudo systemctl start httpd
sudo systemctl enable httpd

Zabbixの初期設定

Webブラウザーで「http://サーバーのIPアドレス/zabbix」にアクセスします。
初期設定画面が表示されるので、指示に従って初期設定を行います。

screenshot_242

環境チェック

初期画面で「Next Step」をクリックすると、環境チェックが行われます。
もし、OKになっていない項目があると先に進めません。
すべてOKになっていることを確認して、「Next Step」をクリックします。

screenshot_243

DB接続の設定

DB接続の設定を行います。
「Password」にユーザーzabbixのパスワードを入力します(例ではNicoPri120%)。

screenshot_244

Zabbixサーバーの設定

Zabbixサーバーの設定を確認します。特に変更せず、「Next Step」をクリックします。

screenshot_245

初期設定値の確認

初期設定値を確認します。「Next Step」をクリックします。

screenshot_246

インストール成功の確認

インストールが成功したことを確認します。
新たに、設定ファイル/etc/zabbix/web/zabbix.conf.phpが生成されています。
「Finish」をクリックすると、ログイン画面になります。

screenshot_247

ログインする

Zabbixの管理者としてログインします。
ユーザー名は「Admin」、初期パスワードは「zabbix」です。

screenshot_248

日本語環境に設定する

無事にログインができたら、Web管理画面を日本語に設定します。
「Administration」→「Users」とクリックし、ユーザーリストに表示されているAdminをクリックします。

screenshot_251

パスワードを変更したい場合には「Change Password」をクリックすると、パスワード入力のテキストボックスが確認用も入れて2つ表示されるので、新しいパスワードを入力します。
言語の設定は、「Language」を「Japanese(ja_JP)」に変更し、「Update」をクリックします。

screenshot_252

ユーザーリスト画面に戻りますが、ブラウザーをリロードすると表示が日本語に変更されます。

screenshot_253

Zabbixサーバー自身を監視対象に指定する

インストールが完了した後は、監視対象を登録していくのですが、すでにZabbixサーバー自身が監視対象として登録されているので、その監視設定を有効にしてみます。

Zabbixエージェントを起動する

Zabbixエージェントを起動します。

sudo systemctl start zabbix-agent
sudo systemctl enable zabbix-agent

Web管理画面で監視を有効にする

Web管理画面でZabbixサーバーに対する監視を有効にします。
「設定」→「ホスト」とクリックし、ホストリストに表示されているZabbix serverの「ステータス」に表示されている「無効」をクリックします。確認のダイアログが表示されるので「OK」をクリックすると、ステータスが有効になって、監視対象となります。

screenshot_254

しばらく経った後にページをリロードすると、「エージェントの状態」の「ZBX」の色が変わって、エージェント監視が行われていることが分かります。

以上でZabbix 3.0のインストールは終了です。

監視対象がまだZabbixサーバー自身しか登録されていません。

次回は、Zabbixサーバーの基本的な設定と、LinuxサーバーにZabbixエージェントをインストールして監視を設定してみます。

※ニフティクラウド以外のCentOS 7.2環境に導入する場合の注意点

最後に、ニフティクラウド以外のCentOS 7.2環境に、Zabbix 3.0を導入する場合の注意点に触れておきます。

SELinuxの設定

SELinuxが有効になっていると、正常に動作しません。Zabbix用のブーリアンが用意されているので、確認の上でブーリアンを有効にしておきます。

sudo getsebool -a|grep zabbix
httpd_can_connect_zabbix --> off
zabbix_can_network --> off
sudo setsebool -P httpd_can_connect_zabbix on
sudo setsebool -P zabbix_can_network on

firewalldの設定

firewalldでパケットフィルタリングを行っている場合、ポートを開けてあげる必要があります。
必要なルールは以下の通りです。

  • Web管理画面にアクセスするにはポート番号80番を開ける
  • ZabbixサーバーがZabbixエージェントにアクセスするには、Zabbixエージェント側のポート番号10050番を開ける
  • ZabbixエージェントがZabbixサーバーにアクセスするには、Zabbixサーバー側のポート番号10051番を開ける

今回のZabbixサーバーでは、以下のように設定します。ローカルで動作しているZabbixエージェントへはfirewalldの設定をしないでもアクセスできます。

sudo firewall-cmd --add-service=http --zone=public --permanent
sudo firewall-cmd --add-port=10051/tcp --zone=public --permanent
sudo systemctl restart firewalld

また、Zabbixサーバー以外の監視対象にZabbixエージェントをインストールしている場合には、ポート番号10050番を開けるように設定します。

sudo firewall-cmd --add-port=10050/tcp --zone=public --permanent
sudo systemctl restart firewalld
ニフティクラウド 導入相談窓口
ニフティクラウド 無料セミナー

閉じる

閉じる

クラウドブログ編集部

クラウドブログ編集部

ニフティクラウド ユーザーブログ編集部のアカウントです。 編集部からのお知らせや、レギュラーライター以外のゲストによる寄稿記事を掲載していきます。

浜中 慶

浜中 慶

1980年、神奈川県生まれ。2003年ニフティ入社。 ポータルサイト開発を中心に、音楽配信サービス、CGMサービスなど様々なプロジェクトに企画/デザイン/システム担当として参加。現在は@niftyのポータルサービス向けコンテンツ管理システムの企画/開発/運用を担当。

吉田 雄哉

吉田 雄哉

株式会社co-meetingの創業メンバー。「取締役&External- facing Technologist」と名乗り新しいIT技術を広く伝える活動とWebアプリケーション開発を行う毎日。パッケージベンダーでのSaaS立上げ・製造業の情報システム部門で企画やPM・受託開発と従事してきたため、ベンダーサイドとユーザサイド の両方の視点を持ち合わせる。

石田 健亮

石田 健亮

株式会社ドリーム・アーツで小売事業者向けSaaS「Shopらん」を企画、開発。メインの仕事はプログラマーだがサーバー管理や営業もこなすユーティリティプレイヤー。最近好きな事はパフォーマンスチューニング。特に並列化プログラミングがマイブーム。キライなことはデータセンターでの作業。騒音と乾燥が弱点。ニフティクラウドでデータセンターに行く必要が無くなったことが本当の利点だ と思っている。

五月女 雄一

五月女 雄一

ニフティでは「インフラを守る簡単な様で奥が深いお仕事」をしています。 夢はインフラの気持ちが読めるエンジニアになること。

わたなべ かずひろ

わたなべ かずひろ

専門学校卒業後、ソフトウェア開発会社で電力系統制御システムの開発に従事。その後、CD-ROM等マルチメディア系PCソフトの開発を経て、1998年フリーランスに。 2000年8月に株式会社イーツーの設立に参画。携帯を含む様々なWeb系のシステム開発に携わる。現在はiPhone/Androidアプリなどの開発も手がけている。

市角

市角

ニフティクラウドのコントロールパネル設計・開発をメインに、たまにインフラの運用やお手伝いもやっていたりします。コントロールパネルや新機能の活用方法、アイデアなどを中心に書いていく予定です。

仲山 昌宏

仲山 昌宏

歌って踊れるインフラエンジニア兼、PHPもRubyもJavaも書くPerl使い。 物理サーバの運用に飽きて、フルラックに格安サーバ詰めて自宅プライベートクラウドを構築中。 今年は個人的には分散処理を攻めていきます。

猪飼 賢広

猪飼 賢広

1984年、愛知県名古屋市生まれ。大学は福島県にある某大学。2008年ニフティに入社。 開発系部署に配属後、主に各種テーマサイト開発のシステム面調整、開発進行管理役などとして参加。 現在もPC・ガラケーサイトの開発まわりを担当。インフラまわりを触る案件にも携わっており、日々修行中。 好きな芸人はなかやまきんに君とレイザーラモンRG。

久江 裕之

久江 裕之

ニフティクラウドのインフラ運用、OS提供の仕事をしています。 新しいOSやイメージが出る時にこのブログでご紹介いたします。入社5年目。一流のインフラエンジニアを目指して日々勉強中。

竹内 豪

竹内 豪

ニフティクラウド エンジニア

山口

山口

ニフティクラウドの基盤設計、新サービス/アライアンス/インフラ企画、その他雑用全般を担当しています。 クラウドに欲しい機能や、こんなふうに使ってほしいという想いが共有できれば良いですね。

芳中 隆幸

芳中 隆幸

ニフティクラウドの開発、運用を担当しています。

酒井 浩平

酒井 浩平

ニフティクラウドの中にいます。 ネットワークまわりの運用・開発や自動化などに取り組んでいます。 すべてのエンジニアを幸せにすることを目指しています。

higebu

higebu

ニフティクラウド IaaSのエンジニアです。 ネットワーク、DRサービス with VMware vCloud® Air™ Technology辺りの担当をしています。

武田

武田

ニフティクラウドの開発・運用を担当しています。 各種機能の内容についてなどで執筆させていただく予定です。

森藤 大地

森藤 大地

データに関する仕事が好きです。

宮原徹

宮原徹

日本仮想化技術株式会社 代表取締役社長兼CEO。仮想化技術に関するコンサルタントとして長年活動しており、特にベンチマークテストによる性能評価を得意としている。

荒谷翔

荒谷翔

株式会社はてなでMackerelのセールスデベロッパーとして勤務しています

東條 望

東條 望

2014年にニフティへ中途入社。 入社後から現在まで、ニフティクラウドのサービス企画・開発を担当しています。 各サービスの紹介を執筆させていただく予定です。