EC2 CloudWatchをグラフ化

Amazon EC2上のサーバーにMRTGをインストールしようかどうか迷っていたら、CloudWatchというサービスがあるのに気がついてしまいました。(おそっ)

このサービスはEC2インスタンスのCPU負荷やディスクIO、ネットワーク使用量などをXMLなどのデータで返してくれるコマンドで、かなり柔軟に様々なデータを提供してくれるので、さっそくこのAPIツールで得られた結果を元にグラフを作成するパッケージを作成しました。

デモページはこちら

CloudWatch APIを使用するために、あらかじめJDKのセットアップが必要だったりして、セットアップは若干めんどくさいのですが、MRTGを構築するよりははるかに簡単だと思います。

ダウンロード

ダウンロードはこちらからどうぞ。

動作環境

ライセンス

  • 本パッケージそのものはMITライセンスとしますが、システムの動作にはAmazon社のCloudWatch API及びGoogle社のChart APIが必要です。
    従って、それらの利用規約を遵守願います。

ちなみに。。。

このパッケージ内のgchart.class.jsは、XMLデータをGoogle Chart API用のURLに変換する、自分でいうのも何ですがナイスなJavaScriptです。

単品で配布できるほどの汎用性はないのですが、それでもほとんどのGoogle Chart APIの機能はカバーできていますので、ご興味のある方は試してやってください。

寄付大歓迎

気に入っていただいた方からの、ご褒美をお待ちしています。

EC2コマンド KeyPair作成〜インスタンス起動

毎回Google先生に聞いているのでよく使うものの個人的な覚え書き

KeyPairの新規作成

ec2-add-keypair KEY-PAIR | sed -e "1d" > KEY-PAIR.key

KeyPairの削除

ec2-delete-keypair KEY-PAIR

KeyPairの一覧

ec2-describe-keypairs

インスタンスの起動

ec2-run-instances AMI -k KEY-PAIR

インスタンスのリスト

ec2-describe-instances

インスタンスのコンソールを出力

ec2-get-console-output -r INSTANCE

インスタンスをCloudWatchで監視

ec2-monitor-instances INSTANCE

EC2上にCentOS5.3をインストールする

AmazonでCentOSのサーバーを構築する際に、今まではRightScaleさんが作ったイメージを利用していたのですが、やっぱりちょっと気持ちが悪いので、以下のサイトを参考にして自力で構築した。

基本的には上記の手順を踏めば問題なくインストールできたが、ec2-get-console-outputコマンドでコンソールを確認すると以下のようなエラーが出ているのを発見した。

これらのエラーはEC2だけでなくXen上にCentOSを構築する際にも発生するらしい。

エラーその1

 ***************************************************************
  ***************************************************************
  ** WARNING: Currently emulating unsupported memory accesses  **
  **          in /lib/tls glibc libraries. The emulation is    **
  **          slow. To ensure full performance you should      **
  **          install a 'xen-friendly' (nosegneg) version of   **
  **          the library, or disable tls support by executing **
  **          the following as root:                           **
  **          mv /lib/tls /lib/tls.disabled                    **
  ** Offending process: init (pid=1)                           **
  ***************************************************************
  ***************************************************************

エラーその2

INIT: Id "2" respawning too fast: disabled for 5 minutes
INIT: Id "3" respawning too fast: disabled for 5 minutes
INIT: Id "4" respawning too fast: disabled for 5 minutes
INIT: Id "5" respawning too fast: disabled for 5 minutes
INIT: Id "6" respawning too fast: disabled for 5 minutes

エラーその1への対策

このエラーを要約するとインストールされたglibcがXenに対応していないので対応したものに変えてということらしい。(今回はEC2ですが。。。)

あいにく日本語での対処方法はほとんど見つからなかったが、以下のサイトを参考にしてglibcのソースパッケージを再構築することで、メッセージが出なくなった。

administration:xen:howto:glibc [MathWiki]

作業内容は以下の通り。

  1. CentOSのリポジトリから同じバージョンのglibcのソースパッケージを入手。
    (今回は、glibc-2.5-34.src.rpm)
  2. ダウンロードしたパッケージをインストールする。
    (依存関係があればそれらもインストール)
  3. 上記のサイトに記載されている「CentOS Xen glibc RPM HOWTO」通りにglibc.specを修正
  4. rpmbuild -ba glibc.specを実行してRPMパッケージを再構築
  5. できあがったRPMパッケージを全てインストール

以上でエラーが出なくなった。

エラーその2への対策

このエラーについては正直言って意味が分からないのですが、そういものらしいというレベルの理解でよさそうなので。。。(笑)

対策内容は以下の通り。

/etc/inittabの46行目から50行目をコメントアウトする。

変更後(44行目〜50行目を抜粋)

 # Run gettys in standard runlevels
 1:2345:respawn:/sbin/mingetty tty1
 #2:2345:respawn:/sbin/mingetty tty2
 #3:2345:respawn:/sbin/mingetty tty3
 #4:2345:respawn:/sbin/mingetty tty4
 #5:2345:respawn:/sbin/mingetty tty5
 #6:2345:respawn:/sbin/mingetty tty6

他にも。。。

Ec2上でCentOSを構築してもそのままでは停止したときに消えてしまうのでS3にバックアップする必要がある。

S3にバックアップするには、ec2-ami-toolsのインストール及びカーネルモジュールの修正が必要だった。

詳細は割愛しますが、以下のURLを参考にして対処した。

http://developer.amazonwebservices.com/connect/entry.jspa?externalID=798

あーめんどくさかった。。。

EC2でClient.InvalidSecurity: Request has expired

決算やら何やらで忙しくって、気がついたら1ヶ月以上このブログの存在を忘れてました。

AmazonのEC2のコマンドラインツールで、以下のようなエラーが出まくって何もできない事態が発生。

Client.InvalidSecurity: Request has expired

原因をネットで調べたらサーバーの時計が狂っているのが原因だった。

ちゃんちゃん。

cronに以下のような記述を登録して解決。

0 * * * * /usr/sbin/ntpdate ntp.jst.mfeed.ad.jp > /dev/null 2>&1

AmazonのEC2からhotmailにメールが送れない

SPFレコードを設定したにもかかわらず、phpからのメールが送れないので、ちょっとイライラしながらエラーメールを確認すると、以下のようなメッセージが届いていた。

Diagnostic-Code: smtp; 550 DY-001 Mail rejected by Windows Live Hotmail for
    policy reasons. We generally do not accept email from dynamic IP's as they
    are not typically used to deliver unauthenticated SMTP e-mail to an
    Internet mail server. http://www.spamhaus.org maintains lists of dynamic
    and residential IP addresses. If you are not an email/network admin please
    contact your E-mail/Internet Service Provider for help. Email/network
    admins, please visit http://postmaster.live.com for email delivery
    information and support

要は、spamhausに動的IPとして登録されているので拒否するとのことらしい。

というわけで、登録解除申請を行ったらあっさり解除された。
2時間ほどたってから再度テストすると無事に送信成功。

それにしても、spamhausには、このリスト(PBL)は「ブラックリストじゃない」って、でっかく書いてあるじゃん!

Microsoftさん、そんなの拒否リストに使用しないで!!

参考までにSPFレコードは以下のような感じ。

v=spf1 +ip4:xxx.xxx.xxx.xxx ~all

逆引きアドレスは設定していませんので、「xxxx.compute-1.amazonaws.com」のままですが、それでもメールは送信できるようです。

Linux,PHPなどを利用したシステム開発はシータネットワークス