スキップしてメイン コンテンツに移動

投稿

10月, 2013の投稿を表示しています

ElasticSearch + fluentdでログ分散管理

前々回前回と、ElasticSearchについて勉強をしました。繰り返しになりますが、ElasticSearchの特徴は「RESTfulで全てがJSON」です。そうするとJSONデータであれば何でも食わせて全文検索が出来るわけですね。またCluster機能によって保持データを分散させることで可用性も確保出来ます。

高い可用性が必要で、全文検索したいもの...ログだ!

そこでfluentdです
fluentdはイベントログ収集のためのオープンソースソフトウェアで、インプットされたイベントログをJSONに変換してアウトプットします。「Log everything in JSON」です。開発元であるTreasure Data, Inc.の古橋氏のBlogに詳細があります。

ElasticSearchのCluster機能を試す

ElasticSearchとは、の修正
昨日僕はElasticSearchを「検索エンジン」と書きましたが、正確に言うと「全文検索エンジンであるLuceneを使用した、全文検索システム」です。

Luceneとは
Apache Software Foundationで開発されている全文検索エンジンで、Javaのクロスライブラリとして提供されています。

Solrとは
Apache Software Foundationで、Luceneのサブプロジェクトとして開発されている、全文検索システムです。Luceneを検索エンジンとして使用しており、もちろんJavaで書かれています。

ElasticSearchとSolrの比較
ものすごくざっくり言っちゃうと、ElasticSearchはRESTfulで全てがJSONです、ということ...なのかな。
ElasticSearchにあるclustering機能はSolr4で採用されたSolrCloud機能でカバーされたようだし、細かいことは色々あるんだろうけど、簡易的な使い方に絞って言えばRESTfulなのはとても便利だと思います。

本題
今回はElasticSearchのCluster機能を試してみたいと思います。

ElasticSearchとKuromojiで日本語全文検索してみる

北海道開発オフなどでご一緒させて頂いた方はご存知だと思いますが、元々インフラエンジニアとしてネットワーク機器の設定やサーバの構築ばかりしていた僕がプログラムを書くようになったのは、「形態素解析してマルコフ連鎖するTwitter botを作りたい!」というのがきっかけであり、日本語の分かち書きや全文検索というのは僕にとって興味深くそして好きな技術の一つです。

そこで今回はElasticSearchとそのプラグインであるelasticsearch-analysis-kuromojiについて調べてみました。

ElasticSearchとは
Apache v2ライセンスで公開されているオープンソースソフトウェアの検索エンジンです。特徴として
RESTfulなAPIが使えるInputもOutputもJSONスキーマフリーなので面倒臭い定義無しにデータを突っ込める 等があります。

AlternativesでRubyのバージョンを切り替える

現在最新のAmazon Linux AMI(Amazon Linux AMI 2013.09)に初期導入されているRubyは1.8.7だ。
$ ruby -v
ruby 1.8.7 (2013-06-27 patchlevel 374) [x86_64-linux] しかしRuby 1.8.7は引退しました。互換性の問題で1.8.7なのかな?まぁとにかく新しいRubyを使いたいなぁと思って調べていたら、AMIのRelease Notes
You can switch between Ruby 1.8 and 1.9 with one command って書いてあった。なのでやってみよう。

まずはyum全体を最新化する。
$ sudo yum check-update
$ sudo yum update 次にruby1.9をインストールする。
$ sudo yum install ruby19  そしてalternativesでrubyというコマンドの向き先を1.9に変更する。
$ sudo alternatives --set ruby /usr/bin/ruby1.9
$ ruby -v
ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-linux] 1.8に戻す場合。
$ sudo alternatives --set ruby /usr/bin/ruby1.8
$ ruby -v
ruby 1.8.7 (2013-06-27 patchlevel 374) [x86_64-linux] 対話的にも切替が出来る。
$ sudo update-alternatives --config ruby
There are 2 programs which provide 'ruby'.
  Selection    Command
-----------------------------------------------
*+ 1           /usr/bin/ruby1.8
   2           /usr/bin/ruby1.9
Enter to keep the current selection[+], or type selection number: 2  $ ruby -v
ruby 1.9.3…

パピーウォーカーとして過ごした日々について

2012年8月25日から2013年9月16日までの一年間、北海道盲導犬協会よりパピーウォーカーとして委託を受け、盲導犬候補犬の飼育を行った。

ここに記録を残そうと思う。

パピーウォーカーについて
盲導犬候補犬の委託を受け飼育を行うボランティアである。盲導犬協会は全国各地に公益財団法人や社会福祉法人といった形であり、北海道の場合は「公益財団法人北海道盲導犬協会」になる。ちなみに場所は札幌市中央区、豊平川沿い。
パピーウォーカーになる条件は多くなく、室内で犬が飼えること、自家用車があること、長時間留守にしないこと、等。基本的に赤ちゃん犬なので長時間目を離すことは出来ないし屋外で飼うことも出来ない、自家用車はパピーを連れて盲導犬協会に来て研修を受ける必要があるため。
金銭的な負担もほぼ無く、餌代とおもちゃなどのみ。病気や怪我の場合は領収書を取得して盲導犬協会に提出することになる。なお、わんこの食費は一ヶ月で大体5000円くらい。家族での外食を1回控えると充分賄える。

AWSを低いレイヤーから調べてみよう

AWSを低いレイヤーから調べてみようのコーナー!
今日はSNSとSQSの通信についてパケットキャプチャしてみました!

SNS
IAM roles for EC2でPowerUsersに設定したEC2から、AWS command line toolsでaws sns publishしたものをtcpdumpでキャプチャしてWiresharkに食わせました。

AWS::ELBのHealth Checkについてのメモ

ELBのHealth Checkについて調べたのでメモ。


Ping Protocol
サーバの生存監視(ヘルスチェック)に使うプロトコルを指定します。HTTP、TCP、HTTPS、SSLから選択します。
HTTP、HTTPSの場合はPing Pathを設定することが出来ます。

■Ping Port
ヘルスチェックに使うポートを指定します。例えばHTTPなら80、HTTPSなら443などです(もちろん任意で指定可能です)

■Ping Path
Ping ProtocolをHTTP又はHTTPSとした場合に指定可能です。ヘルスチェックで該当PathがGET出来無いと異常と判断します。

■Response Timeout
ヘルスチェックのタイムアウト時間を秒で指定します。指定した秒だけ応答が無ければ異常と判断します。デフォルトだと5秒です。

■Health Check Interval
ヘルスチェックの間隔を分単位で指定します。デフォルトの0.5minutesは30秒です。

■Unhealty Threshold
ここで設定した回数だけヘルスチェックが失敗した場合、振り分け対象から除外します。デフォルトだと2回です。
Unhealty Thresholdが2回、Response Timeoutが5秒、Health Check Intervalが0.5minutesの場合、障害発生から切り離しまで最長30+5+30+5=70秒かかります。
[Check直後にFault]→30sec→[1st Check]→5sec→[1st Timeout]→30sec→[2nd Check]→5sec→[2nd Timeout]→[Cut Off!]■Healthy Threshold
振り分け対象外となったインスタンスが、ここで指定した回数だけヘルスチェックに成功したら、振り分け対象に戻します。デフォルトだと10回です。
Healthy Thresholdが10回、Health Check Intervalが0.5minutesの場合、障害復旧から切り戻しまで最長300秒掛かります。
[Check直後にRestore]→30sec→[1st Check]→30sec→[2nd Check]→30sec→[3rd Check]→30sec→[4th Check]→30sec→[5th Check…

AWSでOSSECを導入する

前回の調査に引き続き、クラウドにおける侵入検知の一つの方式として、AWSにOSSECを導入してみました。

AWSのSource/Dest. Checkについてのメモ

昨日「[AWS]VyattaでNATインスタンスを立ててみた」を試している中で、EC2のSource/Dest. Checkについて
「送受信するパケットの送信元あるいは送信先が自分であるかのチェック」と書いたんだけど、これって結局Promiscuous modeの設定なんじゃないか?と思い、

同一Subnet内に二つのEC2を建てる片方のEC2でtcpdumpするもう片方のEC2に通信するという実験をしてみたが、全く通信が引っかからなかった。
何でだろうと思って調べていたところ、Amazon Web Services: Overview of Security Processesという文章を見つけた。以下抜粋。 It is not possible for a virtual instance running in promiscuous mode to receive or "sniff" traffic that is intended for a different virtual instance. While customers can place their interfaces into promiscuous mode, the hypervisor will not deliver any traffic to them that is not addressed to them. This includes two virtual instances that are owned by the same customer, even if they are located on the same physical host. つまり EC2インスタンスでPromiscuous modeを有効にしても自分以外の通信を盗聴することは出来ない自分自身が所有する2つのEC2インスタンスを同一の物理ホスト上で動かしていても同様 ということですね。
AWSはXenをベースにカスタマイズしたハイパーバイザを採用しているそうで、XenはPromiscuous modeで動作可能(How to Configure a Promiscuous Virtual Machine in XenServer)なんだけど、クラウドプラットフォームサービスに特化したA…

[AWS]VyattaでNATインスタンスを立ててみた

きっかけはこの記事。

[Developers.IO]VYATTA USERS MEETING Autumn 2013(の前半)に参加しました

Vyattaは2年半前に触ったっきり情報を追ってなかったんだけど、AWSのような環境こそVyattaが活きるなぁと思い、AWSの中でNATインスタンスとして立ててみた。
なおAmazonのWebサイトにも記載してあるとおり、NATと言うよりPAT/NAPT/IP masqueradeの動作になる。

(1)準備
VPCの中にSubnetを2つ作り、1つをPublic、1つをPrivateとする。
VPCにInternet Gatewayを作成する。
PublicのRoute TableにVPC内の経路と、デフォルトゲートウェイとしてInternet Gatewayを設定する。
PrivateのRoute TableはVPC内の経路のみ持つ。

こんな感じ。

(2)Create Security Group for NAT Instance
今回はローカルネットワークからのHTTP/HTTPS通信を受け取り、外部に送信する。
なおInbound SSHをAnyにしてあるけど、本来はメンテナンスネットワークのIPアドレス帯をSourceに設定すべき。
Inbound - Local IP Network - 80(HTTP)
           - Local IP Network  - 443(HTTPS)
           - Any                    - 22(SSH)
Outbound - Any                 - 80(HTTP)
              - Any                 - 443(HTTPS)
(3)Launch NAT Instance
[Community AMIs]で「vyatta」で検索すると出てくる「Vyatta Core 6.6 R1 x86_64 rev1」を使う。なお本AMIは@j3tm0t0氏が作成しデプロイされたもので、ありがたく使わせて頂きます。なお当然ですがCommunity AMIは場合によっては悪意あるユーザーによってどんなバックドアが仕込まれてるかわかったもんじゃないので自己責任の利用となります。
Vyattaはオフィシ…

「妻は俺の嫁」を電子書籍にして出版してみた

Kindle paperwhite 3Gを買ったのと、Kindleダイレクト・パブリッシング(通称KDP)での出版が非常にお手軽になったという話を聞いたのをきっかけに、「僕もちょっと電子書籍作ってみたい」と思い、

「妻は俺の嫁」を電子書籍にして出版してみた。

妻は俺の嫁


smokeymonkey

Amazonで詳しく見る by AZlink
以下、これの作り方。

(1)原稿を作る
原稿はまずePubファイルで作成し、その後KDPで出版可能なMobi形式に変換することになる。
ePubエディタは抜群に知名度が高いSigilを使用した。なおSigilはGPLv3ライセンスで公開されておりgithubでソースが公開されている。このアプリケーションはマルチプラットフォーム対応になっており、Windows、Mac、Linuxで実行可能。素晴らしい。
ePubの実体はXHTML+XMLで構成されているため、ePubエディタ上もワープロソフトのように文章を入力しつつ、HTMLやCSSをガシガシ使って体裁を整えるイメージ。なお表紙だけは画像取り込みで行った。
メニューなども日本語化されているし、CSSで縦書き構成にも出来るし、とても簡単に作れるなぁという感想。デザイナーの人でいれば綺麗な製版が出来るのだと思う。

(2)原稿を確認する
ePubエディタで作成した原稿が実際にKindle上でどう見えるのかを確認するには、Amazon謹製のKindle Previewerが使用できる。このソフトウェアはビューワだけでなくKindleGenというMobi formatジェネレータが同梱されており、ePub形式のファイルを読み込むと自動的にMobi形式に変換して表示してくれる。
力入ってるなぁ。こういうツール類がオフィシャルに用意されてるのは強み。

(3)原稿を入稿する
前述のKindle Previewerで作成したMobi形式のファイルがそのまま入稿できる。なおePub形式でアップロードすると自動的にMobi形式に変換してくれるそうだが、今回はエラーになったため、ローカル環境でMobi形式に変換してからアップロードするほうが確実のようだ。

(4)ロイヤリティについて
今回は別に利益を得たいわけではないので適当に一番安いのを選んだんだけど、本当に利益を考えて出版するとなると、色々と面倒臭いことがあるよ…

Windows 7でVagrant + Sahara

今更感はあるけれど、Windows 7のノートPCにVagrantをセットアップしてみた。

(1)VirtualBoxをインストールする。
https://www.virtualbox.org/wiki/DownloadsからVirtualBox 4.2.18 for Windows hostsをダウンロードしインストール。


(2)Vagrantをインストールする。
http://downloads.vagrantup.com/からVagrant_1.3.4.msiをダウンロードしインストール。


(3)CentOSをインストールしたVagrantBoxを作成する。
> vagrant box add centos https://dl.dropbox.com/u/7225008/Vagrant/CentOS-6.3-x86_64-minimal.box > vagrant init centos > vagrant up Bringing machine 'default' up with 'virtualbox' provider... [default] Clearing any previously set forwarded ports... [default] Creating shared folders metadata... [default] Clearing any previously set network interfaces... [default] Preparing network interfaces based on configuration... [default] Forwarding ports... [default] -- 22 => 2222 (adapter 1) [default] Booting VM... [default] Waiting for machine to boot. This may take a few minutes... Timed out while waiting for the machine to boot. This means that Vagrant was unable to communicate with the gues…

Kindle Paperwhite 3G (2012年モデル)を買った

題記の通り。東京出張で丸一日空いたので朝から赤羽で飲んだくれて秋葉原のソフマップで触ったら良さそうでちょうどAmazonで旧モデル3000円オフ投売りだったのでポチった。

Kindle Paperwhite 3G (2012年モデル)


Amazon.co.jp
売り上げランキング : 43

Amazonで詳しく見る by AZlink 重量は思ったより軽く片手で持つのにちょうど良い。本を1冊2冊持ち歩くことを考えると確実にこっちのほうが軽い。
前面を覆うカバーもあるけど、カバーを付けちゃうと「手軽に取り出して電源を入れたら使える」という優位性が失われると思うので付けていない。またこのスクリーンはちょっとザラザラしてるんだけど、その触感がとても良いので、保護フィルムも付けていない。 手軽さこそが命の製品だと思うので、付属品一切無しのほうが使いやすいと思う。

e-linksディスプレイは「紙に印刷された活字に慣れてると気になるかなぁ」と思っていたんだけど、ほとんど気にならない。スリープから復帰してパスワード入力するあたりがちょっとモタつくけど、画面を開いちゃったあとはサクサクページもめくれるし快適。
難点があるとすれば、電子書籍自体のラインナップが(僕にとっては)満足できるほどじゃない、というのと、Kindle自体から購入するときの検索UIの使いづらさかなぁ。購入自体は「PCのWebブラウザから買ってMy Kindleに保存→Kindle端末に同期」という手が使えるから良いとして、主にSFばかり読む僕が読みたい本がそれほど多くないというのがちょっと寂しい。今後の充実に期待したいところ。
とりあえず恩田陸さんの「ドミノ」を買ってみた。しばらく読み倒してみようと思う。

ドミノ (角川文庫)
恩田 陸

KADOKAWA / 角川書店
売り上げランキング : 480

Amazonで詳しく見る by AZlink

AWS::ELBについてのメモ

先日、とある識者の方とお話しているときに、マルチAZ構成に組み込まれたELBが、複数のグローバルIPアドレスを所持していることを知りました。

以下、digの結果。

myelb-15XXXXXXXX.us-west-2.elb.amazonaws.com. 60 IN SOA ns-944.amazon.com. root.amazon.com. 1381560172 3600 900 7776000 60 myelb-15XXXXXXXX.us-west-2.elb.amazonaws.com. 600 IN NS ns-944.amazon.com.myelb-15XXXXXXXX.us-west-2.elb.amazonaws.com. 60 IN A 50.112.133.1XX myelb-15XXXXXXXX.us-west-2.elb.amazonaws.com. 60 IN A 54.200.96.1XX
ELB & CloudWatch & AutoScaling - AWSマイスターシリーズにも書いてありました。

・マルチAZを用いていると、2つ以上のIPアドレスを持つ(最大8個まで)

つまりELB自体はAZ上にあるイメージで、AZが丸ごと落ちたときのために、それぞれのAZの範囲内のグローバルIPアドレスを持っている、ということなんですね。なおELBは「トラフィックに併せて自動的にキャパシティを増減」し、同時に数も増減するため、このIPアドレス数は=構成するAZの数では無く、最低IPアドレス数が構成するAZの数になるようです。

このAレコードの返却についてはAWSのDNSサーバが自動的にラウンドロビンしてくれているとのこと。この辺がELBのFQDNのTTLとminimumが60秒になっている理由のようです。今時のブロードバンド(死語か...)だと大した負荷じゃないのでしょうが、「TTLを60秒にして良いのはサーバ移設かISP移設のときだけ」のような教育をされてきた僕みたいなおっさんはちょっとドキドキします。

という、メモ。



Amazon Web Services クラウドデザインパターン実装ガイド
大澤 文孝,玉川 憲,片山 暁雄,鈴木 宏康

日経BP社
売り上げランキング : 17216

Amazonで詳しく見る by AZlink

「妻は俺の嫁 4」をトゥギャってみた

妻は俺の嫁 4
■過去の経緯 ・妻は俺の嫁妻は俺の嫁 2妻は俺の嫁 3

Twitterという「媒体」に言葉を放つようになって7年が経ちました。その間に日々発生した妻との出来事ややり取りをちまちまとまとめていたのがコレです。 見出しに「愛妻家ってのは妻を愛してる人であって妻に愛されている人とは限らない」って書いたけど、僕は「愛妻家」という表現が好きじゃないです。夫が妻を愛しているのなんて当たり前じゃない。妻に愛されているなら素晴らしいことだと思う。僕?ま、まぁ...

さて、妻と出会って15年になるわけですが、恋人から夫婦に代わり、父母の立場になり、そして10年以上一緒に暮らしていると、良い意味で空気のようになります。あっても気にならないけど無いと死ぬ。だからやり取りも直接的な愛情表現が減っていく分、相手のツボを心得た返事が出来るようになり、毎日の会話がどんどん楽しくなるんですよね。それでも僕はめげずに愛してる愛してる言い続けてるんですけど! こうやって毎日の妻との生活が楽しいと思えるのはほぼ100%妻のおかげです。ありがとう妻様。
これはただのログでしか無いし、誰かにとって役立つようなものでは無いけれど、こんな夫婦もいるんだなぁくらいの気持ちで見守って頂けると幸甚です。



中国嫁日記 一
井上 純一

エンターブレイン

Amazonで詳しく見る by AZlink

CloudInitを使ってみた

Amazon Linuxで何気なくchkconfig --listしたら、見たこと無いやつがあった。

$ chkconfig --list cloud-init      0:off   1:off   2:on    3:on    4:on    5:on    6:off cloud-init-user-scripts 0:off   1:off   2:on    3:on    4:on    5:on    6:off
cloud-init?なんだそれ?

CloudInit→[cloud-init is the Ubuntu package that handles early initialization of a cloud instance.]とのことで、元々Ubuntuのパッケージだったそうなんだけど、要はEC2インスタンスの初期起動時のお決まりのセットアップをスクリプト化しちゃうものらしい。なるほど便利そう。

CloudInitのスクリプトは、EC2インスタンスをLaunchするときの以下の画面、User Data枠に記載する。


例えばこんな感じ。
パッケージ全部をyum upgradeして、指定したパッケージを追加で入れて、かつコマンド実行する。今回はAWS-SDKがセットアップされた状態にしたかった。

#cloud-config repo_upgrade: all packages: - ruby-devel - rubygems - gcc - make - libxml2-devel - libxslt-devel runcmd: - [gem, install, nokogiri] - [gem, install, aws-sdk] - [sed, -i, 's/en_US/ja_JP/', /etc/sysconfig/i18n] - [cp, /usr/share/zoneinfo/Asia/Tokyo, /etc/localtime]
EC2インスタンス起動後、ログを確認し、エラーが無いことを確認する。
# cat /var/log/cloud-init.log

どれどれ...
$ gem list --local *** LOCAL GEMS *** aws-sdk (1.20.0) json (1.8.0) mi…

AWS Command Line Interfaceを使ってみた

関連:初めてのAWSメモ(2):CloudWatchからSNS→SQS、AWS SDK for RubyでQueue取り出し
関連:AWS SDKを使ってSNSにCPU使用率を送りつける

前回はAWS SDK for rubyを使ってSNSとSQSを操作(SNSにメッセージを送り、SQSから取り出す)を行っていたけれど、2013年9月3日に正式リリースされたAWS Command Line Interfaceを使えばもっと簡単に出来るんじゃないか?と思い、やってみた。


(1)AWS Command Line InterfaceはPythonのeasy_installでインストールする。
$ sudo yum -y install python-setuptools
 →Amazon Linuxには最初から入ってました
$ sudo easy_install awscli

(2)configファイルを作成する。
$ mkdir ~/.aws/
$ chmod 700 =~/.aws/
$ vi ~/.aws/config
---
[default]
aws_access_key_id = アクセスキー
aws_secret_access_key = シークレットキー
region = リージョン
---
$ chmod 600 ~/.aws/config

(3)SNS TopicへPublishする。
$ aws sns publish --topic-arn arn:aws:sns:リージョン:1234567890:cpu-alert --message "`mpstat -P ALL`" --subject "alert"

(4)SQSからgetする。
$ aws sqs receive-message --queue-url https://sqs.リージョン.amazonaws.com/1234567890/alert

60秒おきにgetしたかったら while true; do コマンド; sleep 60; done とかしとけばいい。


簡単じゃないか...AWS SDKを使ってScriptに組み込むのとコマンドラインから操作するのは適材適所だろうけどけど、どっちも便利だなぁ。

Amazon Web Service…

AWS SDKを使ってSNSにCPU使用率を送りつける

初めてのAWSメモ(2):CloudWatchからSNS→SQS、AWS SDK for RubyでQueue取り出し」ではEC2のDetailed Monitringを使って「対象EC2のCPU使用率を1分に1回SNSに通知→SQSに分配→監視サーバからAWS SDKを使って取り出し」していたんだけど、普通にAWS-SDKを使って通知もしちゃえば良いことに気づき、Script書いてみた。

 (1)CPU使用率はmpstatを使って取得したいので、sysstatをinstallする。
 $ sudo yum -y install sysstat

 (2)通知スクリプト。mpstatで取得したCPU使用率をAWS-SDKを使ってSNSに送りつける。
  (※追記:IAM Roke for EC2を設定してればアクセスキーとシークレットキーはいらない)

#!/usr/bin/ruby require 'rubygems' require 'aws-sdk' access_key = 'アクセスキー' secret_key = 'シークレットキー' sns_endpoint = 'sns.xxxxx.amazonaws.com' topic_arn = 'arn:aws:sns:xxxxx:1234567890:cpu-alert' AWS.config(:access_key_id => access_key, :secret_access_key => secret_key, :sns_endpoint => sns_endpoint) topic = AWS::SNS::Topic.new(topic_arn) message = `mpstat -P ALL` while true topic.publish(message,'cpu usage.') sleep 60 end
(3)実行すると1分に1回mpstatの結果をSNSに送りつけるので、監視サーバ側でSQSから取り出せばOK。




Amazon Web Services クラウドデザインパターン実装ガイド
大澤 文孝,…

Amazon CloudWatch Monitoring Scripts for Linuxを使う

(0)ACMS for Linuxを使いたいEC2をIAM role for EC2 PowerUsersにしておく。
(1)インストールする。
$ wget http://ec2-downloads.s3.amazonaws.com/cloudwatch-samples/CloudWatchMonitoringScripts-v1.1.0.zip
$ unzip CloudWatchMonitoringScripts-v1.1.0.zip
$ rm CloudWatchMonitoringScripts-v1.1.0.zip
$ cd aws-scripts-mon
(2)getの動作確認。
$ ./mon-get-instance-stats.pl
---
Instance i-ABCDEFG statistics for the last 1 hour.

CPU Utilization
    Average: 0.27%, Minimum: 0.00%, Maximum: 3.39%

Memory Utilization
    Average: N/A, Minimum: N/A, Maximum: N/A

Swap Utilization
    Average: N/A, Minimum: N/A, Maximum: N/A
---
(3)putの動作確認。
$ ./mon-put-instance-data.pl --mem-util --verify --verbose
---
MemoryUtilization: 8.40000262952031 (Percent)
No credential methods are specified. Trying default IAM role.
Using IAM role
---
EC2 PowerUsersのRoleを使ってることが確認できた。
(4)実際にSendしてみる。
$ ./mon-put-instance-data.pl --mem-util --mem-used --mem-avail
(5)AWS consoleのCloudWatchから確認する。
 cronで回してCloudWatchのグラフで確認して...って感じかな。
 MRTG的な感じ。

初めてのAWSメモ(2):CloudWatchからSNS→SQS、AWS SDK for RubyでQueue取り出し

■やりたいこと

■参考にしたURL
AWS CloudWatch と Alarm を試してみる
SQSってなんじゃ?(AWSコンソールにSQS登場)
Rubyを使ってAmazon SNSとSQSを操作する:fanoutパターン
AWS SDK for RubyでSQSを操作する

■やったこと
1.SQSの設定
  SNSから通知するためのSQSを、先に作っておく。
  -- SQS NavigationからCreate new Queueをクリック
   -- 適当に名前付けてQueueを作っておく
   -- Detail画面からARNをメモしておく
   -- PermissionからAdd a Permissionで追加
    -- Allow Everybody Sendmessage(送信元をSNSに縛れるか?確認)

2.SNSの設定
(1)SNS NavigationからSNSのTopicを作る
  -- Create New Topic
   -- Nameを付与して作る
(2)作成したTopicに対してSubscriptionを設定する
  -- Create Subscription
   -- ProtocolはEmail、Endpointはメールアドレス
   -- 登録したメール宛に認証メールが来るので対応する
  -- もいっちょCreate Subscription
   -- ProtocolはAmazon SQS、Endpointは1.で作ったSQSのARN。
      (後で気づいたんだけど、Queue側からSubscribe Queue to SNS Topicで紐つけが出来た)
  -- TopicからPublish to this Topicでテストメッセージが送信可能。

3.CPU監視される側のEC2立ち上げ
(1)EC2からSNSにアクセスするために、IAM roleの設定を行う。
  なお、Launch済のEC2のIAM Roleを変更することは出来ないみたい。
  -- IAM Dashboard
   -- Roles -> Create New Role
    -- Amazon EC2に対しPower Usersを付与。
(2)IAM roleを設定したEC2を立ち上げる。
  -- EC2…

初めてのAWSメモ:VPCでELBでMultiAZのRDS

■やりたいこと

■参考にしたURL。
Amazon VPCを使ったミニマム構成のサーバ環境を構築する
Amazon RDSで仮想DBインスタンスを作成する
RDSインスタンスにMulti-AZの設定をする

■やったこと
1.Network周りの設定
(1)Amazon無料枠で申し込みする。
(2)AWS Management Consoleを起動。
(3)VPC DashboardからVPCを作る。
  -- Your VPCs
   -- Create VPC
    -- CIDR Block = 10.0.0.0/16
    -- Tenancy = Default
(4)SubnetからAZ1にPublic(10.0.1.0/25)とPrivate(10.0.1.128/25)を作る。
 またAZ2にPublic(10.0.2.0/25)とPrivate(10.0.2.128/25)を作る。
(5)Internet GatewaysからInternet Gatewayを作成する。
  -- Internet Gateways
   -- Create Internet Gateway
    -- Attach to VPC
     -- VPCをアタッチ
(6)Route Tablesを設定する。AZ1-PrivateとAZ2-PrivateはLocalのみのTableを使う。
 AZ1-PublicとAZ2-PublicはLocalとDefault Gateway(=Internet Gateway)を設定する。
  -- Route Tables
   -- Create Route Table
    -- 新しいRouteを作成し、Localと0.0.0.0/0を設定する。
  -- Subnets
   -- Public
    -- 新規に作成した0.0.0.0/0のRouteを持つRoute TableにReplaceする。
   -- Private
    -- 0.0.0.0/0のRouteを持たないRoute TableにReplaceする。

2.RDS(DBサーバ)の設定
(1)RDS Dashboardの
  -- Subnet Groups
   -- Create DB Subnet Group
    -- A…