情報畑でつかまえてロゴ
本サイトは NTTテクノクロスが旬の IT をキーワードに
IT 部門が今知っておきたい最新テクノロジーに関する情報をお届けするサイトです

OpenStackMonascaで本番環境の監視はどこまでできるのか

Monascaを実際に使うとなると、どんな課題が待ち受けているのかわからなかったので、使ってみて、何が出来て何が出来ないのかを調べてみようと思います。

目次

第1回:Monascaって何?。Monascaをインストールしてみよう
第2回:Monascaは商用の監視要件を満たしているのか?
第3回:実際にMonascaを使ってみよう

はじめに

前回のOpenStack Summit Tokyoでは、監視サービスであるMonascaが注目されていました。

4月末にアメリカで行われるOpenStack Summit Austinでも、Monascaに関するセッションが多数予定されており、今後の動向が注目されています。

私はOpenStackの監視の業務に携わってきたので、Austin Summitでも継続してMonascaをチェックしていきたいと思います。

Fluentd + Elasticsearch + Kibana + Norikra+ Zabbixを使ってOpenStackのログ解析してみた

まずは、Austin Summitに参加する前に、現状のMonascaがどうなっているのかを確認してみます。

しかし調べてみると、Tokyo Summitでは報告が上がっていたのですが、まだ国内での導入事例や動作報告がなく、現時点で使い物になるのかがわかりませんでした。

なので、実際に使うとなると、どんな課題が待ち受けているのかわからなかったので、使ってみて、何が出来て何が出来ないのかを調べてみようと思います。

Monascaって何?

サーバ監視はIaaSにとって必須要件であり、物理マシンと仮想資源(VMや仮想NW)をどのようにして統合的に監視するかが常に課題としてあがっていました。

この問題を解決するためにMonitoring as a ServiceをOpenStackに組み込もうとMonascaのプロジェクトが立ち上がりました。

MonascaはOpenStack自体や、物理マシン、仮想マシンや仮想資源を統合的に監視するコンポーネントとなっています。

類似コンポーネントとして、メータリングサービスのCeilometerがあります。Ceilometerで監視を行う場合は、管理者が事前に定義した監視項目(リソース収集)を使用する必要がありますが、Monascaの場合は利用者が自分で監視したい項目を自由に定義できるのが嬉しいですね。

Monascaをインストールする

今回はインストールと簡単な動作確認をするところまでご紹介します。

構成情報

今回はWindows7上でOpenStackコミュニティから公開されているmonasca-vagrant を使用します。

https://github.com/openstack/monasca-vagrant

ただし、コミュニティのvagrantではLinunx上で展開することを想定しているので、Windowsで使う場合はvirtualbox on virtualboxでvagrantを動かすことが出来ないので、構成に少し手を加える必要があります。

vagrant libvirt pluginを使えば可能ですが、ひとまずこの構成でやってみます。

こんな構成で今回は動かしてみます↓

図 1 構成図

Windows側の操作

  1. Vagrantをインストールします。
    インストール方法については割愛します。
  2. 使用するboxをダウンロードします。
    vagrant box add ubuntu/trusty64
    vagrant box add monasca/vagrant
    回線が細いとDLに数時間掛かる場合があるので、時間に余裕を持って着手しましょう。

# -*- mode: ruby -*-
# vi: set ft=ruby :
VAGRANTFILE_API_VERSION = "2" # Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
if Vagrant.has_plugin?("vagrant-cachier")
config.cache.scope = :box
end

# Handle local proxy settings
if Vagrant.has_plugin?("vagrant-proxyconf")
if ENV["http_proxy"]
config.proxy.http = ENV["http_proxy"]
end

if ENV["https_proxy"]
config.proxy.https = ENV["https_proxy"]
end

if ENV["no_proxy"]
config.proxy.no_proxy = ENV["no_proxy"]
end
end

config.vm.synced_folder "~/", "/vagrant_home", disable: true

# One vm just for devstack (to access the UI)
config.vm.define "devstack" do |ds|
ds.vm.hostname = "devstack"
ds.vm.box = "monasca/devstack"
# ds.vm.box_version = "0.0.9"
ds.vm.network :private_network, ip: "192.168.10.5"
ds.vm.provider "virtualbox" do |vb|
vb.memory = 7168
vb.cpus = 2
vb.gui = true
end

# ds.vm.provision "ansible" do |ansible|
# ansible.playbook = "devstack.yml"
# ansible.raw_arguments = ['-T 30', '-e pipelining=True']
# end

end

# One vm running all the services
config.vm.define "mini-mon" do |mm|
mm.vm.hostname = 'mini-mon'
mm.vm.box = "ubuntu/trusty64"
mm.vm.network :private_network, ip: "192.168.10.4"
mm.vm.provider "virtualbox" do |vb|
vb.memory = 4096
vb.cpus = 1
vb.gui = true
end

# mm.vm.provision "ansible" do |ansible|
# ansible.playbook = "mini-mon.yml"
# ansible.raw_arguments = ['-T 30', '-e pipelining=True']
# if ENV["USE_VERTICA"]
# ansible.extra_vars = { database_type: "vertica"}
# else
# ansible.extra_vars = { database_type: "influxdb"}
# end
# end
end
end


Vagrantfileを作成
適当なディレクトリで「Vagrantfile」を作ります。
ベースはGithubで公開されているものを使い、一部今回の構成用に修正します。
修正内容は2点、
・windowsではansibleが実行できないのでansible実行の場所をコメントアウトします。
・今回ノートPC1台で動かしているので、性能が足りないので使用するメモリとCPUを微調整します。

  1. 準備が出来たら「vagrant up」でVMを立ち上げます。
  2. Ubuntu14.04のVMを1台作ります。
    スペックは低くても問題なし。
    - CPU:1コア
    - メモリ:256MB

Ansibleサーバー準備

- ディスク:20GB
- NIC:2本

  1. 必要パッケージのインストール
    $ sudo apt-get install -y git python-pip python-dev
    $ sudo pip install ansible
    $ cd monasca-vagrant/
    $ ansible-galaxy install -r requirements.yml -p ./roles
  2. Ansible実行の際に読み込まれる変数ファイルを今回の構成用に修正を加えます。
    mini-mon.yml smoke.yml event.ymlの全タスクに対して、下記を追記してください。

    vars_files:
    - host_vars/mini-mon



    Ansible実行の際に読み込まれるhostsファイルを作成します。

      $ vi hosts
      [mini-mon]
      192.168.10.4
      [devstack]
      192.168.10.5


      1. Windows側操作編での「vagrant up」の構築が終わるまで待ちます。
      2. SSHの鍵交換を済ませます。
        $ ssh-copy-id -i ~/.ssh/id_rsa.pub vagrant@192.168.10.4
        $ ssh-copy-id -i ~/.ssh/id_rsa.pub vagrant@192.168.10.5

      Ansible実行

      Ansibleサーバーから「vagrant up」で起動したVMに対してansible-playbookを実行する前に、1個不具合があるので対処しておきます。(2015/12時点)

      今回のやり方で実行すると、monasca用のユーザが作られないので、下記の条件で作っておきます。Horizonからでも、Keystoneコマンドでも作ればどちらでも良いです。

       ・project:mini-mon
       ・user:mini-mon
       ・role:_member_ monasca-user

      $ ansible-playbook -i hosts devstack.yml
      $ ansible-playbook -i hosts mini-mon.yml \
      -e database_type=influxdb


      準備ができたら、devstackVM、mini-monVMに対してansible-playbookを実行します。

      Monascaが動作しているか確認

      まずは管理画面を見てみます。

      OpenStackを構成する各サービスの状態と、監視対象のサーバーが表示されています。

      DBやRabbitMQ等のMiddleWare監視も行えるので、OpenStackそのものの監視はMonascaのみでできそうな気がします。

      緑色が正常状態。黄色が警告状態と視覚的に分かりやすく表示がされています。

      VMも作成するだけで特に何もすることなく監視対象に組み込まれましたが、

      OpenStackを構成する物理マシンと仮想マシンが同じ箇所に表示されるのはどうなんでしょうか・・・。

      利用者に基盤側の情報見せたくない場合にマスクするとかできるのでしょうか・・・。

      Austin Summitで改善されているのか要確認ですね。

      図 2 Monasca管理画面

      アイコンをクリックすると、それぞれの監視項目と状態が表示されます。

      黄色くなっているのは何かしらの障害が発生しているようです。

      こちらも同様にクリックすると、監視項目と状態がわかるようになっています。

      図 3 monascaVMの監視状態

      また、グラフ化機能を備えているので、物理や仮想サーバーの情報やMonasca自体の状態をグラフィカルに表示できます。

      たとえば、下の図では物理サーバのhttp_serviceの死活監視とCPU使用率、Database使用率が表示されています。

      構築直後のグラフなので、CPU消費が大きいですね。

      図 4 サーバーの状態

      こちらではMonascaを構成している各サービスの稼働状況ですね。

      DBの仕様具合やCPU,Memory,Diskの使用率がグラフ化されてます。

      No datapointsが多いのが気になりますね...。要調査です。

      図 5 Monascaの状態

      アラーム定義はZabbixっぽい書き方ですね。

      図 6 アラーム定義設定画面

      新規で設定しようとするとこのような画面から設定することになります。

      Expressionで選択できる監視アイテムは100を超える程度の項目が用意されていました。

      図 7 新規監視定義設定

      アラートがあがった際の通知処理ですが、メール通知、webhook(heat連携等)、Pagerdutyが使えるようです。

      図 8 通知先設定

      さいごに

      今回はインストールとMonascaが動作しているところの確認まででした。

      次回はMonascaができることについて解説したいと思います。実際の商用環境の監視システムで求められる要件を備えているのかが注目どころです。

      Austin Summitでの動向も踏まえてお伝えしようと考えています。

      NTTテクノクロスではOpenStackのメインコンポーネントだけでなく、BigTentと呼ばれる周辺コンポーネントに対しても、日々技術検証を行っております。OpenStackの周辺コンポーネントに対して興味のある方、導入を検討している方はぜひお問い合わせください。

      OpenStack®はOpenStack, LLCの登録商標又は商標です。

      連載シリーズ
      テクノロジーコラム
      著者プロフィール
      深津 颯騎
      深津 颯騎
      NTTソフトウェア株式会社
      クラウドセキュリティ事業部
      第一事業ユニット