本文へジャンプします。

ニフティクラウドAutomationでZabbixサーバーを構築してみた

1 はじめに

はじめまして、ニフティ入社一年目の袁と申します。最近ニフティクラウドを色々勉強しています。

さる6月18日、ニフティクラウド Automationがリリースされました。自分でも使ってみて、非常に便利な機能だと思いましたので、ここで皆さんに紹介したいと思います。

ただ紹介するだけではなく、実際の利用例として、皆さんがよく使っている監視ソフトのZabbixをAutomationを使って構築してみます。

プレゼンテーション1

2 ニフティクラウド Automationの基礎知識

まずは、ニフティクラウドAutomaitonの基礎知識を紹介いたします。

2.1 ニフティクラウド Automationとは?

ニフティクラウド Automationは、これまでサーバー・ディスクなどコントロールパネル上でリソースごとに管理していた機能を、用途や環境ごとにまとめて作成・管理することができる機能です。

さらに、設定済のサーバーを手軽に作成することが可能です。またお客様が簡単にアプリケーションをデプロイできるので、継続的デリバリーを実現することができます。

 ※デプロイ:お客様が開発されたアプリケーションをサーバー内に展開すること。
 ※継続的デリバリー:アプリケーションのデプロイを自動化することにより、継続的に新しいプロダクトを顧客へ届けること。

2.2 ニフティクラウド Automationの構造

ニフティクラウド Automationは下の図のように、スタック/レイヤー/サーバーの3つの階層から構成されています。

 - スタック:「レイヤー」「サーバー」「アプリ」によって構成される「入れ物」のようなものです。複数のサーバーをまとめて管理することができます。
 - レイヤー:「アプリサーバー」「DBサーバー」など、特定の役割が定義されたサーバーの集合を表します。サーバーは必ずレイヤーに所属する必要があります。
 - サーバー:ニフティクラウドのサーバーを表します。サーバーは、スタック・レイヤーの設定に沿って構築されます。
 - アプリ:サーバーにデプロイするアプリケーションの情報です。
 - デプロイ:保存したアプリは、サーバーへデプロイすることができます。またアプリのデプロイだけでなく、さまざまなコマンドをコントロールパネルからサーバーに実行させることができます。

automation_03

簡単に説明すると、スタックの中に複数のレイヤーがあり、さらに各レイヤーの中でサーバーを管理することができます。

今回はZabbixをニフティクラウド Automationで構築するため、スタックとレイヤーの設定をメインに記述します。

2.3 ニフティクラウド Automation 動作の流れ

ニフティクラウド Automationは、デフォルトのレシピとお客様が作成したレシピを利用して、サーバーを自動的に構築します。お客様はChefを手動で実行する必要がありません。ライフサイクルイベントと呼ばれる5つのイベントが用意されており、それぞれのイベントにレシピを設定しておけば、そのタイミングで指定したレシピが自動的に実行され、サーバーを簡単に構築できます。

また、ニフティクラウド Automationにはたくさんのデフォルトレシピが提供されているので、非常に使い易いと思います。

お客様の操作とライフサイクルイベントの発生タイミングについて、下記の図の通りです。

auto-kouzou

図を見ると、お客様の操作は主にサーバーの「作成・停止」とアプリの「デプロイ・アンデプロイ」となります。それぞれの操作に合わせて、ライフサイクルのイベントが発生します。ただし、サーバーの「作成・停止」を行う場合、同じスタック内の他のサーバーに対して、configureイベントが自動的に発生することに注意してください。

2.4 ニフティクラウド Automation 特長

 - コントロールパネルからまとめてサーバー作成
 レイヤーに設定された設計書を元に、用途に合わせた設定済のサーバーを手軽に作成することが可能です。
 
 - コントロールパネルからまとめてリソース・アプリケーション管理
 お客様のニフティクラウドリソースをまとめて管理することが可能です。また、アプリケーション(ソースコード)の管理・デプロイを行うこともできます。
 
詳しくはAutomation の機能・サービスページをご参照ください

3 Automationを利用したZabbixサーバーの構築

今回の目標は、ニフティクラウド Automationを利用し、Zabbixサーバーを立ち上げることです。

3.1 今回構築するサーバー環境

今回は下記のようなサーバー環境を構築してみます。
 - CentOS 6.3 64bit
 - Database mysql
 - webserver php+apache
 - Zabbix 2.2.0

3.2 Zabbixの概要

Zabbixは、サーバーのリソース(cpuの利用率、メモリの使用状況等)、プロセス起動状況、ネットワーク状況などを監視・追跡するソフトウエアです。設定の自由度が高く、オープンソースで提供されているため、非常によく使われている監視ソフトです。

wikipedia:http://ja.wikipedia.org/wiki/Zabbix
公式サイト: http://www.zabbix.com/
ドキュメント: http://www.zabbix.com/documentation.php

Zabbixの監視構造は二つの部分に分かれています。監視データを収集して表示するサーバー側と、システムの様々な情報を取得するエージェント側の二つです。この記事では、サーバー側を「Zabbixサーバー」と呼び、Zabbixサーバーが所属するレイヤーは「Zabbixレイヤー」と呼びます。エージェント側は「監視対象サーバー」と呼びます。

3.3 ニフティクラウド Automationの基本操作

まず、Automationにアクセスしてみます。ニフティクラウドにログインし、左上のメニューをクリックして、「Automation」を選択します。
 
「利用開始」のボタンクリックします。この時、ニフティクラゥド Automationがお客様のAutomation用ファイアーウォールグループおよび、ルールなどを作成する為、申し込みに10分間ほど時間が掛かるので、しばらくお待ちください。
1

3.1.1 スタックの作成

申し込みが完了したら、スタックを作成してみます。作成するため、先にSSHキーの作成が必要です。

もしsshキーが存在しない場合、[Computing で SSH キーを作成]をクリックして、sshkeyを作成してください。

2

■スタックの基本画面

 - スタック名 ⇒ auto
 - メモ ⇒ 必要に応じて入力してください
 - OS イメージ ⇒ CentOS6.3 64bit Plain
 - リージョン ⇒ west-1
 - ゾーン    ⇒ west-11
 - SSH キー ⇒ 既存SSHキー

■スタックのchefを設定します。
今回はgitHubのgitリポジトリにアップロードした自作cookbookを利用します。

 - Cookbook利用 ⇒ ON
 - リポジトリ種別 ⇒ GIT
 - リポジトリ URL ⇒ https://github.com/kuroei/auto-zabbix-ver3.git

■カスタムJSON

カスタムJSONで、chefがレシピを実行する時のJSONの内容を調整することができます。


{
"mysql": {
  "server_root_password": "password"
},
"zabbix": {
  "server": {
   "install": true,
   "install_method": "source",
   "version":"2.2.0"
  },
  "web": {
   "install": true,
   "fqdn": "localhost"
  },
  "agent": {
   "install": true,
   "install_method": "source",
   "servers": ["auto2cst001"]
  },
  "database": {
   "install_method": "mysql",
   "dbname": "zabbix",
   "dbuser": "zabbix",
   "dbhost": "localhost",
   "dbpassword": "password",
   "dbport": "3306"
  }
 }
}

■カスタムJSON各項目説明

 ”mysql”: {“server_root_password”: “password”}

 zabbixで利用するmysqlの初期passwordを設定します。
 

 ”server”: {
   ”install”: true,
   ”install_method”: “source”,
   ”version”:”2.2.0″
  },

 zabbix サーバーをインストールするかどうかを指定します。ソースからインストールし、バージョンは2.2.0になります。
 

 ”web”: {
   ”install”: true,
   ”fqdn”: “localhost”
  }

 web管理画面をインストールします。Zabbixサーバーでも、エージェントをインストールするため、fqdnはlocalhostに設定してください。
 

 ”agent”: {
   ”install”: true,
   ”install_method”: “source”,
   ”servers”: [“auto2cst001”]
  },

 エージェントをインストールします。ソースからインストールします。serversにはZabbixサーバー(複数可能)のホスト名を設定します。
 

 ”database”: {
   ”install_method”: “mysql”,
   ”dbname”: “zabbix”,
   ”dbuser”: “zabbix”,
   ”dbhost”: “localhost”,
   ”dbpassword”: “password”,
   ”dbport”: “3306”
  }

 Zabbix用のデータベースの設定です。利用するデータベースはmysql、DBのuser/pw ⇒ zabbix/password 、ホストはlocalhost,ポートは3306です。

これで、スタックの設定が完了です。

3.1.2 レイヤーの作成

スタックを作成した後、レイヤーを作成します。今回はカスタマイズしたZabbixレイヤーを作成したいため、カスタムレイヤーを選びます。

■レイヤーの設定画面
addlayer1

 
 - タイプ ⇒ [other カスタム]
 - 名前  ⇒ monitoring-master-zabbix
 - 短縮名 ⇒ zabbix
 - メモ  ⇒ 必要に応じて入力してください

レイヤーの基本情報を入力した後、レイヤーのchefの設定も行う必要があります。

zabbixをインストールするため、setupとconfigureにレシピを設定します。
それぞれの設定について、下記の図のとおりです。

■setup段階レシピ画面
setup

追加されたカスタムレシピは下記の通りです。

 1 mysql::client
 2 mod_php5_apache2
 3 database::mysql
 4 mysql::server
 5 zabbix::database

■configuare段階レシピ画面
configure

追加されたカスタムレシピは下記の通りです。

 1 php::configure
 2 zabbix
 3 zabbix::server
 4 zabbix::web

■レシピ追加の注意事項
カスタムレシピは、追加した順番に実行されますので、ご注意ください。

3.1.3 Zabbixサーバーの作成と起動

さて、作成したmonitoring-master-zabbix レイヤーで、サーバーを作成してみます。
■基本設定画面
addser
基本設定画面では、特に変更必要なものはありません。

■作成&起動
確認した後、[作成する]ボタンをクリックすると、サーバーが作成されます。(この時点では、Automationにだけ作成され、実際のサーバー環境は作成されていません)
addser2
これで、monitoring-master-zabbix レイヤーの下に、作成したサーバーが表示されます。右の開始ボタンを押すと、今度は実際のサーバー環境が作成されます。
addser3
サーバーの起動が完了するまでに、約10分程度掛かります。ここで、2章で紹介したAutomation 動作の流れを確認することができます。サーバーのコマンド一覧から見ると、まずはsetup、その次にconfingureが実行されていきます。

Configureの結果が[successful]に変わると、Zabbixサーバーの作成が完了です。
addser4

3.2 Zabbixサーバー の動作確認

作成したZabbixサーバーに、 IPアドレスが発行されました。

早速このIPアドレスをクリックしてみましょう!なんとZabbixのweb管理画面が表示されました。

zabbix1

ログインしてみます。初期user/pw ⇒ admin/zabbix です。
zabbix2
入った!入った!ちゃんと入った!
あれ?あれれ?!もう出来上がり?
データベースのインストールも、webServerのインストールと設定も、Zabbixの設定ファイルも 不要なの?!

スタックに設定したsshキーを利用し、作成したZabbixサーバーにアクセスしてみましょう。

■データベース状態
mysql

■ウェブサーバー状態
httpd

■Zabbixの設定ファイルを確認してみます。
zabbixの初期設定が完成した状態です。
zabbix_cof

試しに、もう一台Zabbixサーバーを作ってみます。
monitoring-master-zabbix レイヤーで、同じようにサーバーを作成します。

10分待つともう一台Zabbix サーバーの出来上がり!
今まで凄く面倒だった設定がたったの10分で自動的に完成します。

3.3 Zabbixエージェントのインストール

ZabbixエージェントのインストールはZabbixサーバーより、非常に簡単です。
監視対象サーバーが所属するレイヤーの configure イベントに「zabbix」というレシピを追加すれば、Zabbixエージェントが自動的にインストールされます。

4 自作zabbixレシピについて

今回githubで公開されている様々なレシピを組み合わせて、自作cookbookを作成しました。
レシピ置き場:https://github.com/kuroei/auto-zabbix-ver3

現在、ニフティクラウドautomationは1つのカスタムcookbookをしか対応できます。もし複数のcooksに含まれているレシピを利用したい場合、git submodule を利用の必要があります。

今回の自作レシピもこの方法を使っています。

 https://github.com/kuroei/auto-zabbix-ver3     トップcookbook
                   |—– /apt 外部利用したレシピ
                   |—– /yum-epel 修正したレシピ
                   |—–…
                   

4.1 外部利用したレシピのまとめ

外部利用したレシピについては、自作cookbookのREADMEを参照してください。

4.2 修正したレシピについて

外部利用したレシピの一部に修正を行いました。

 ① /yum-epel  本体はgit://github.com/opscode-cookbooks/yum-epel.gitですが、yum-epel.repositoriesという属性をAutomation向けに修正しました。

 ②/cpan     本体はhttps://github.com/melezhik/cookbooks/cpan、git submoduleでリンクできなかったので、ソースをインポートしました。

5 おわりに

この記事では、ニフティクラウド Automationの基本について説明し、自動的にZabbixサーバーを構築する例を紹介しました。もともと非常に複雑な作業がたったの10分で全部完了するので、非常に便利だと思います。

ニフティクラウド Automationはもっと色々な使い方ができます。今回作成した自作cookbookを少し調整すると、サーバーが追加された時に、自動的に監視対象にすることができます。興味を持たれた方は、どうぞニフティクラウド Automationに引き続き注目してください。

10分でZabbixを構築できるニフティクラウド Automationを試してみませんか?

ニフティクラウド 導入相談窓口
ニフティクラウド 無料セミナー

閉じる

閉じる

クラウドブログ編集部

クラウドブログ編集部

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

浜中 慶

浜中 慶

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