はてなブックマーク - Rails3 で restful-authentication
    このエントリーをはてなブックマークに追加

    こんにちはヤマモトです。
    rails3の正式リリースもなされ、いよいよ実案件での運用も視野に入り始めてきました。

    今回は、Ruby on Rails3で、restful-authenticationは動くのか、というのを取り上げます。

    restful-authenticationとは、サイトのユーザー認証機構を組み込むのには便利なプラグインです。
    ユーザー登録、ログイン、ログアウト用のviewファイルや、
    ユーザー用モデル生成、メールアクティベート、ログイン保持などの機能を一気に提供してくれるので大変重宝しています。

    まずは、プロジェクトを生成します。
    なお、rubyは1.9.2(RVM)です。

    rails new sample

    (旧 rails sample)
    でプロジェクトが作成されます。

    そして、db:createもせずにとりあえず起動。

    rails s

    (旧 ruby script/server)

    ところが

    Could not find gem 'sqlite3-ruby (>= 0, runtime)' in any of the gem sources.

    のエラー。

    プロジェクト作成時はデフォルトでsqlliteが指定されるのは従来と変わりませんね。
    ということで、config/database.yml内のsqlite表記部分を、postgresへ変更。
    しかし、それでも上記のエラーが出続けます。
    従来であればここを変えればよかったのですが、設定箇所が別のファイルに移ったのでしょうか。
    とりあえず、データベースを指定して作りなおします。

    rails new sample -d postgresql

    すると次のエラーが。

    LoadError (no such file to load -- openssl)

    OpenSSLは使ってないはずですが必要のようですね。

    CentOSを使用したので、
    yum install openssl openssl-devel
    ※debian系は適宜読み替えてください。

    あとはインストールです。

    ruby ~/.rvm/src/ruby-1.9.2-p0/ext/openssl/extconf.rb
    make && make install

    さて、これでようやく
    「Welcome aboard」
    の画面が表示されました。

    では、restful-authenticationを導入してみます。
    導入方法の詳細は様々なページでご紹介されているので詳しくは割愛します。

    まず、restful-authenticationがrails3に対応しているかですが、以下から提供されているようです。
    github.com/Satish/restful-authentication

    状態管理をサポートするacts_as_state_machineや、パスワード再発行に便利なforget_passwordは従来のままで使えそうです。

    aasm

    gem sources -a http://gems.github.com
    gem install rubyist-aasm

    forget_password

    ruby script/plugin install git://github.com/greenisus/forgot_password.git

    そして、ジェネレート。

    rails g authenticated user sessions --include-activation --aasm

    modelやview、controllerが生成されます。

    では、ユーザー登録を行ってみます。

    hostname/signup

    でユーザー登録ページへアクセス。

    すると、

    uninitialized constant UsersController::AuthenticatedSystem

    AuthenticatedSystemが読み込まれてないとのエラーが。
    ここでrails3の洗礼です。
    rails3はlib以下のファイルを自動でロードしてくれません。
    今まではlib以下に作られるauthenticated_system.rbを自動でincludeしてくれていました。
    rails3では、明示的に記述しないといけません。

    記述場所はconfig/initilizer以下にcustom_requires.rbというファイルを作成して

    require 'authenticated_system.rb'

    と記述。

    これでようやくユーザー登録ページが開き、実行することができました。

    • eucalyptus
    はてなブックマーク - CentOSでEucalyptusを構築してNagiosとGangliaで監視する(2)
    このエントリーをはてなブックマークに追加

    はじめまして或いはこんにちは。Fusic 仁井です。

    タイトルからもわかりますように、今回は連続記事2回目となっております。
    前回の記事ではCentOSにEucalyptusをインストールするところまで行きました。
    続きまして今回はNagiosのインストールと設定、そしてEucalyptusの監視までとなります。

    Nagiosで監視する

    dagからYumでインストールできます。

    # yum --enablerepo=dag -y install nagios nagios-plugins
    # vim /etc/nagios/nagios.cfg
    cfg_dir=/etc/nagios/servers # コメント解除
     
    # mkdir /etc/nagios/servers
     
    # chown nagios. /etc/nagios/servers
     
    # vim /etc/nagios/objects/contacts.cfg
    email hoge@hoge.hoge #ここで指定したメールアドレスに警告メール等が飛んできます
     
    # htpasswd -c /etc/nagios/htpasswd.users nagiosadmin # ユーザ名とパスワードを設定する
    New password: 
    Re-type new password: 
    Adding password for user nagiosadmin
    # /etc/init.d/nagios start
    # chkconfig nagios on
    # /etc/init.d/httpd restart
    httpd を停止中:                                            [  OK  ]
    httpd を起動中:                                            [  OK  ]

    というわけで、これでNagiosインストール完了です。

    ホストのIPアドレス/nagios/にアクセスすると、ユーザ名とパスワードを聞かれますので、先程設定したユーザ名とパスワードを入力します。ホラー映画のタイトルに使われそうなフォントでNagiosと書いてある画面がでたらOKです。

    ここでちょっと監視設定のために画面を操作します。

    Services画面を見ると、メガホンだかベルだかのマークが付いているものがありますので、そちらをクリックします。


    「Enable notifications for this service」をクリックします。


    「Commit」ボタンをクリックします。


    「Done」をクリックします。


    マークが消えます。これで通知設定が有効になりました。
    この状態で、例えばSSHを止めると、コンフィグで設定したメールアドレスに異常通知のメールが飛んできます。

    ちなみに、/var/www/html/にindex.htmlが存在しない場合、HTTPがWarningを吐き続けてそれはもう欝陶しい事になりますのでご注意下さい。

    NagiosでEucalyptus

    今回の目的はEucalyptusの状況を監視することですので、さらに続きが。

    eucalyptus.linux4u.jp/wiki/index.php?EucalyptusMonitoring_v1.6

    を読むと、

    >NagiosとGanglia用のサンプルスクリプトを用意しています。Nagiosでサンプルスクリプトを使うことによって、Eucalyptusのコンポーネントおよび、そのコンポーネントが動作するマシンの状態を監視することができます。Gangliaでは各種リソースの使用状況を監視することができます。
    >サンプルスクリプトの動作にはNagiosとGangliaが必要です。Debian/Ubuntuでは、まずNagiosをインストールしWebブラウザからモニタページを確認できるまでにします。その後、サンプルスクリプトを実行します(README.Monitoringファイルの内容に従って実行します)。Eucalyptus監視のためのルールが追加されます。その後Nagiosを再起動することでEucalyptusの基本的な監視ができるようになります。

    とありますので、まずはREADME.Monitoringを読たいところです。が、これを読むためにはEucalyptusのソースファイルを落としてこなければなりません。こちらのページの下の方からダウンロードしましょう。
    ファイル自体は、解凍したEucalyptusディレクトリ中の/extraディレクトリにあります(./eucalyptus-1.6.2/extras/)。中をみてみると、nagiosでEucalyptusを監視するためにはnagios.shを使用しろ、となっています。
    このnagios.sh(と、今後使うganglia.sh)も、README.Monitoringと同じディレクトリの中に入っています。

    スクリプトを使う前に少し修正を加えます。

    # vim nagios.sh
    # NAGIOS_PIPE="/var/lib/nagios3/rw/nagios.cmd"   #コメントアウト
    NAGIOS_PIPE="/var/nagios/rw/nagios.cmd"

    修正後、実際にシェルスクリプトを実行します。
    引数one two three four にはホスト名を入れてください。

    # ./nagios.sh -setup -nodes "two three four" -cc "one" -cloud one -walrus "one" > eucalyptus.cfg
    # cp eucalyptus.cfg /etc/nagios/objects/
    # vim /etc/nagios/nagios.cfg
    34行目に追記
    cfg_file=/etc/nagios/objects/eucalyptus.cfg
    # /etc/init.d/nagios restart

    実行後、生成されたファイルをeucalyptusのインストールディレクトリの指定の場所にコピーし、nagios.cfgにファイルの指定を追記します。
    そしてnagiosを再起動させると、動きませんでした。ログ(/var/log/nagios/nagios.log )を見ると必要なものが入っていないと怒られてます。

    プラグインその他まとめてすべてインストール

    # yum --enablerepo=dag install nagios*

    そして再びNagiosを再起動をかけると動きません。今度はコマンドがないと怒られます。
    コマンドを定義する必要があるので、エラーログを見ながらコマンドを追加していきます。

    以下、Errorログの例。

    Error: Service check command 'check_load' specified in service 'eucalyptus-nc' for host 'four' not defined anywhere!
    Error: Service check command 'check_load' specified in service 'eucalyptus-nc' for host 'four' not defined anywhere!
    Error: Service check command 'check_load' specified in service 'eucalyptus-cc' for host 'one' not defined anywhere!
    Error: Service check command 'check_load' specified in service 'eucalyptus-cloud' for host 'one' not defined anywhere!
    Error: Service check command 'check_load' specified in service 'eucalyptus-walrus' for host 'one' not defined anywhere!
    Error: Service check command 'check_load' specified in service 'eucalyptus-nc' for host 'three' not defined anywhere!
    Error: Service check command 'check_load' specified in service 'eucalyptus-nc' for host 'two' not defined anywhere!

    というわけで、エラーを解決するためにコマンドを追加します。
    コマンドの追加はcommands.cfgファイルに追記することで可能です。

    詳細なエラーを見る
    # nagios -v /etc/nagios/nagios.cfg
     
    # vim /etc/nagios/objects/commands.cfg
    define command{
    command_name    check_local_load
    command_line    /usr/lib/nagios/plugins/check_load -w $ARG1$ -c $ARG2$
    }
     
    define command{
    command_name    check_local_users
    command_line    /usr/lib/nagios/plugins/check_users -w $ARG1$ -c $ARG2$
    }
     
    define command{
    command_name    check_local_procs
    command_line    /usr/lib/nagios/plugins/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$
    }
     
    # 'check_ssh' command definition
    define command{
    command_name    check_ssh
    command_line    /usr/lib/nagios/plugins/check_ssh -t $ARG1$ $HOSTADDRESS$
    }
     
    # 'check_local_swap' command definition
    define command{
    command_name    check_local_swap
    command_line    /usr/lib/nagios/plugins/check_swap -w $ARG1$ -c $ARG2$
    }
     
     
    # vim /etc/nagios/objects/eucalyptus.cfg
    #check_command           check_load
    check_command           check_load!1,1,1!2,2,2
     
    nagiosを再起動
    # /etc/init.d/nagios start
    nagios は停止しています
    nagios を起動中:                                           [  OK  ]

    ということで起動しました。

    ここまで終わると、Services画面に情報が追加されているかと思います。
    基本的にログの情報を見て、コマンドが足りていなかったり引数が足りていなかったりという情報を読取り、対応をする、の繰り返しで対処することになるかと。
    また、[nagios -v /etc/nagios/nagios.cfg]を使うと、いちいちログを開かなくて良いので楽です。

    ということでここまでで今回の内容は終わりです。
    次回はGangliaのインストールとEucalyptusの監視……ですが、まあ、README.Monitoringを読めば解決しちゃいます。
    それでは。

    おまけ

    Nagiosがエラーを検出した祭、異常通知を複数に送りたい場合は、contact.cfgファイルを編集します。

    # vim /etc/nagios/objects/contacts.cfg
    define contact{
            contact_name                    newcontact
            use                             generic-contact
            alias                           New Contact 
     
            email                           hogehoge@hogehogel.com
            }
     
     
    define contactgroup{
            contactgroup_name       admins
            alias                   Nagios Administrators
            members                 nagiosadmin, newcontact    #membersに追加したcontactのcontact_nameを追加
            }

    defineでcontactを新たに定義し、contactgroupのmembersに加えていくだけです。

    • eucalyptus
    はてなブックマーク - CentOSでEucalyptusを構築してNagiosとGangliaで監視する(1)
    このエントリーをはてなブックマークに追加

    はじめまして。Fusic 仁井です。

    今回、Eucalyptusの導入とNagiosとGanglia監視環境の構築を行ないましたのでその話をば。
    NagiosとGangliaはどちらも監視ツールですが、それぞれサービスの監視とプロセスの監視をしてくれます。
    どちらも表やグラフなどで状況を表示してくれますので視覚的にわかりやすく、また、設定によって複数サーバの監視も可能となっています。
    ちなみに、監視ツールと聞いて色々と思い浮かべる人もいるかとおもいますが、これらはEucalyptusが公式に対応しています。なのでEucalyptusを監視する場合、この組み合わせがよろしいのではないかと。

    今回はCentOSにEucalyptusをインストールするところまでを解説します。
    Eucalyptusについてはこちらの記事等に説明やコマンドがありますので、細かい部分についてはそちらを。
    OSが違いますがコマンドに違いはありません。

    まずは環境説明から。
    今回構築した環境の組み合わせは以下のようになります。

    192.168.24.203:監視用
    192.168.24.202:Eucalyptus CLC,CC
    192.168.24.201:Eucalyptus NC
    OSはすべてCentOS5.5を使用しています。

    さて、それでは構築手順を。

    Eucalyptusのインストール

    Eucalyptusのインストールについて、今回はリポジトリを追加してyumでやってしまいます。楽ですので。
    まずは、192.168.24.202のマシンにEucalyptusCLCとCCを入れます。

    # vi /etc/yum.repos.d/euca.repo
    [euca]
    name=Eucalyptus
    baseurl=http://www.eucalyptussoftware.com/downloads/repo/eucalyptus/1.6.2/yum/centos/
    enabled=1
    # export ARCH=x86_64
    # yum install eucalyptus-cloud.$ARCH eucalyptus-cc.$ARCH eucalyptus-walrus.$ARCH eucalyptus-sc.$ARCH --nogpgcheck

    ARCHの値は、32bit時には「i386」としてください

    CLC起動

    # /etc/init.d/eucalyptus-cloud start

    CC起動

    # /etc/init.d/eucalyptus-cc start

    NCのインストール
    次に、192.168.24.201のマシンにEucalyptusNCをインストールします。

    # export ARCH=x86_64
    # yum install eucalyptus-nc.$ARCH --nogpgcheck

    ARCHについては同上です。

    ちなみに注意点としまして、EucalyptusはXendが動いていないと動かないので、起動時にXenKernelを使うようにしておいてください。

    次に、Eucalyptusの環境的な設定をしていきます。これ以降の作業はすべて192.168.24.202で行ないます。
    クラスタの追加

    # /usr/sbin/euca_conf --register-walrus 192.168.24.202
    # /usr/sbin/euca_conf --register-cluster LOCALCL 192.168.24.202
    # /usr/sbin/euca_conf --register-sc LOCALCL 192.168.24.202

    確認してみます。

    # /usr/sbin/euca_conf --list-walruses
    registered walruses:
    walrus  192.168.24.202
    # /usr/sbin/euca_conf --list-clusters
    registered clusters:
    LOCALCL  192.168.24.202
    # /usr/sbin/euca_conf --list-scs
    registered storage controllers:
    LOCALCL  192.168.24.202

    ノードの追加

    # /usr/sbin/euca_conf -addnode 192.168.24.201

    また確認してみます。

    # /usr/sbin/euca_conf --list-nodes
    registered nodes:
    192.168.24.201  LOCALCL

    euca2oolsのインストール

    # wget http://www.eucalyptussoftware.com/downloads/repo/eucalyptus/1.6.2/yum/centos/i386/euca2ools-1.2-0.1.rc1.i386.rpm
    # rpm -Uvh euca2ools-1.2-0.1.rc1.i386.rpm

    あとはインスタンスを立ち上げればOKです。
    インスタンスの状態は以下のコマンドで確認できます。

    # euca-describe-instances 
    RESERVATION	r-4CCD07DE	admin	default
    INSTANCE	i-4D0D0940	emi-40321247	192.168.24.73	192.168.24.73	running 	mykey 	0 	m1.small 	2010-09-01T08:54:10.856Z 	LOCALCL 	eki-5DF61296 	eri-1B10156F
    RESERVATION	r-46D108E5	admin	default
    INSTANCE	i-403D074E	emi-40321247	192.168.24.89	192.168.24.89	running 	mykey 	0 	m1.small 	2010-09-01T02:27:01.583Z 	LOCALCL 	eki-5DF61296 	eri-1B10156F

    このように、INSTANCEのステータスがrunningに成っていたらOKです。これがすぐにterminatedになるようでしたら、前述の「Kernelの指定がきちんと出来ているか」等確認してみるのが良いかと。

    今回はここまでとなります。次回はNagiosのインストール〜設定、Eucalyptusの監視までを行ないます。