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

投稿

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

盲導犬候補として巣立った三男(犬)が繁殖犬となって帰宅した

おかえり!


これまでのあらすじ: [-*煙猴*-]パピーウォーカーとして過ごした日々について

盲導犬候補として生まれ、1歳になるまで我が家で育てた三男(犬)。今度は盲導犬の親犬となる繁殖犬として、我が家に帰ってきました!

実は我が家で預かっている間に、盲導犬候補としてだけで無く、繁殖犬候補にもなっていました。そこで委託終了後、まずは盲導犬としての訓練を受けたのですが、繁殖犬候補であるため去勢していないことも関係し、落ち着きが無く落第。しかし無事繁殖犬となり、そして我が家は繁殖犬飼育ボランティアとなり、こうして帰ってきたわけです。

彼が我が家を出てって三ヶ月間。三日に一回は「元気かなぁ」「ちゃんと繁殖犬になれるのかなぁ」「戻ってこないのかなぁ」と言い続けて妻に「ウザい」と言われまくってたのですが、こうして再会出来て本当に良かった。何度も夢に見るくらい会いたかったのでマジ嬉しいです。

母犬の場合は子犬のお世話もする必要があるのですが、三男は父となるため、子犬のお世話は無し。ちょっと残念。でも子犬に会いにはいけるそうで、僕は既に初孫が待ち遠しい祖父の気分です。

今後は繁殖犬としての役割を終えるまで我が家で預かることになり、そしてその後は引退犬としてぜひ我が家にずっといて欲しいなぁと思います。

とにかく君にまた会えて僕は本当に嬉しいよ!

「カンバン・リーン・スタートダッシュ!」に参加してきた

・併せて読みたい:[-*煙猴*-]: 読了:[アジャイルサムライ]、[リーン開発の現場]

「リーン開発の現場」の訳者である藤原さんと監訳者である角谷さんがリーンやアジャイルについてお話頂けるイベント、「カンバン・リーン・スタートダッシュ!」に参加してきました!

リーン開発の現場 カンバンによる大規模プロジェクトの運営
Henrik Kniberg,角谷 信太郎,市谷 聡啓,藤原 大

オーム社
売り上げランキング : 14347

Amazonで詳しく見る by AZlink
イベントの雰囲気については「2013/12/18 カンバン・リーン・スタートダッシュ! #agilesapporo - Togetterまとめ」をご参照下さい。

カンバン・リーン・スタートダッシュ! - 藤原大氏 「リーン開発の現場」はヘンリック氏の経験が書かれた本ですが、このセッションでは藤原氏が自らカンバンを導入し、試行錯誤した経緯についてお話頂きました。 冒頭で「理論では無く経験だ」というヘンリック氏の言葉が引用されましたが、まさにその言葉の実践としてのセッションだったと思います。書籍と同様に、こうやってみた、こんな結果が出た或は出なかった、だからこうした、という実体験に基づくお話はとても貴重であり、そして楽しいものでした。事例はあくまで事例であって答えではありませんが、試行錯誤の過程や他の人の経験則はとても勉強になります。 僕の感覚的には、カンバンはマネージメントというよりもコミュニケーション改善手法の一つのようにと思えました。
ぼくらはeXtreme Programmingのかけら - 角谷信太郎氏 「リーン開発の現場」がどういう経緯で発刊されたのかというお話を軸に、アジャイルという考え方が日本の中でどう浸透していったのか、そしてそのベースであるXPについて改めて振り返る、というお話でした。 「プラクティスという言葉はあくまで『習慣』なので日本での用法に違和感がある」と仰っていて、確かに僕自身その言葉を「方式」や「手法」のような意味で使っていたなーと再認識しました。 Uncle Bob Martinの「Extreme Programming, a Reflection | 8th Light」というBlog記事について「XPの考え方や手法は現在では別の名前になるなどして使われ続けている」というお話があ…

悪のカリスマに学ぶ「人に好かれる六原則」 - [ジョジョの奇妙な冒険 Advent Calendar 2013]

これはジョジョの奇妙な冒険 Advent Calendar 2013の参加エントリです。
真の失敗とは開拓の心を忘れ困難に挑戦する事に無縁のところにいる者たちの事を言うので、僕は勇気を出してこのAdvent Calendarというレースに参加します。

「ジョジョの奇妙な冒険」という作品の魅力は様々ですが、その大きな一つが「悪」であることは万人が否定しえないものでしょう。そしてそんな魅力的な「悪」の中で、カリスマと呼ばれるべきは誰か?そう、もちろんディオ・ブランドーです。

ある時は殺人鬼や過去の英雄を含めた吸血鬼軍団を従え、そしてまたある時はスタンド使いを集めた組織を作り、死してなお聖人...いや魔人となりて世界中に影響を与え続ける。そんな彼がどのように人々に敬愛され、盲信者たちを作り上げたのか。

そのカリスマ性を、デール・カーネギーの名著「人を動かす」から考えたいと思います。

人を動かす 新装版
posted with AZlink at 2013.12.18 デール カーネギー,Dale Carnegie,山口 博
創元社
売り上げランキング: 125 Amazon.co.jp で詳細を見る

読了:[アジャイルサムライ]、[リーン開発の現場]

有り余る余暇(有給休暇)を使って買ったまま読んで無かった本の消化をした。
アジャイルサムライ−達人開発者への道−
Jonathan Rasmusson,西村 直人,角谷 信太郎,近藤 修平,角掛 拓未

オーム社
売り上げランキング : 3827

Amazonで詳しく見る by AZlink
今更ながらアジャイルソフトウェア開発について一から学びたいと考えたとき、何を読んだら良いのかと何人かの人に聞いたが、皆「アジャイルサムライ」を挙げた。そして読み終わったときその理由が良く分かった。「アジャイル」の考え方から進め方、手法まで、広く理解出来る。かといって入門書のように概要だけで終わることなく、本質に繋がる言葉できちんとまとめられている。一度だけでなく、手元に置いて何度も読み返すようなタイプの本。僕のようにソフトウェア開発に携わった経験の少ない人にも分かりやすい、良い本だった。
僕個人としては第四章であるプロジェクト運営に関する章が一番身近で読んでいて面白かった。また第五章のアジャイルソフトウェア開発のプラクティスについてもキーワードとしてしか認識していなかった部分なので、例を挙げた記述によってざっくりとだけど理解出来たように思う。

リーン開発の現場 カンバンによる大規模プロジェクトの運営
Henrik Kniberg,角谷 信太郎,市谷 聡啓,藤原 大

オーム社
売り上げランキング : 19318

Amazonで詳しく見る by AZlink リーンソフトウェア開発を実際の開発現場に適用したときの具体例を中心に、どのような手法を用いたのか(その中心がカンバン)、そしてどんな結果が出たのか、もしくは出なかったのか、がとても分かりやすく語られた本。「アジャイルサムライ」で考え方を学んだ後に読んだから、とてもしっくり入ることが出来た。 特に「この方法は『このプロジェクトでは』うまく良い結果が出なかった」というストーリーが真摯に語られているのはとても価値があることだと思う。まさに「事例としての物語」であり、同じようにアジャイルやリーンといった考え方を自分たちのプロジェクトに適用したいと考えたときに、そのプロジェクトにあった形で改善を行えば良いのだ、という指針になるものだから。 特に第一章は引き込まれることが多く、結局一日で読了したが、これも何度か読み返したいと思う。

と、いうことで明日は「

[小ネタ]cfn-initでsudoする方法

fluentdのインストールスクリプトはスクリプト内でsudoコマンドを使用しているが、これをcfn-initで実行しようとすると以下のエラーが出る。
sudo: sorry, you must have a tty to run sudo これは/etc/sudoersに
Defaults requiretty という記載があり、tty以外からのsudoコマンドの使用が制限されているため。

「じゃあ、cfn-initはいったいどんな環境で実行されているんだろう?」と思って、
"commands" : {
  "env" : {
    "command" : "env > /tmp/cfn-init.env"
  }
} こんな感じでCloudFormationのStackを作ってみた。
結果は以下の通り。
$ cat /tmp/cfn-init.env TERM=linux
PATH=/sbin:/usr/sbin:/bin:/usr/bin
_=/bin/env
runlevel=3
RUNLEVEL=3
LANGSH_SOURCED=1
PWD=/
LANG=en_US.UTF-8
previous=N
PREVLEVEL=N
CONSOLETYPE=serial
SHLVL=5
UPSTART_INSTANCE=
UPSTART_EVENTS=runlevel
UPSTART_JOB=rc  serialでした。

これを回避してsudoを使えるようにするためには、以下のようにUserDataで/etc/sudoersに「Defaults !requiretty」をいう設定を追加する。
"UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [
  "#! /bin/bash -v\n",
"echo \"Defaults !requiretty\" >> /etc/sudoers\n",
  (以下略) こうすると/etc/sudoersには「Defaults requiretty」と「Defaults !requ…

pathogen + vim-jsonで快適JSON生活 on vim

休暇を使ってちまちまとAWS CloudFormationのTemplateを書いてるんだけど、JSONのSyntaxハイライトがされていないと大変見づらい。


そこでvimのJSON Syntaxハイライトをしてくれるplugin「vim-json」を入れた。

pathogenのセットアップ

vim-jsonは「Pathogen-friendly.」だそうなので、まずはpathogenをセットアップする。

pathogenは
通常だと.vim以下の各ディレクトリからpluginファイルを読み取るが、.vim/bundle/プラグインディレクトリからもpluginファイルを読み取ってくれる ためのplugin。これを使うことで各pluginがディレクトリ毎に管理されすっきりするのと、githubで公開されているpluginはgit cloneで丸ごとコピーしてしまうことで簡易にセットアップが可能になる。

pathogenのセットアップは以下の通り。必要なディレクトリを作成し、curlを使ってpathogen.vimを作成する。
$ mkdir -p ~/.vim/autoload ~/.vim/bundle 
$ curl 'www.vim.org/scripts/download_script.php?src_id=19375'  > ~/.vim/autoload/pathogen.vim pathogenを有効にするために.vimrcを修正する。
$ vi ~/.vimrc
# 以下行を追加
call pathogen#infect() vim-jsonのセットアップ

上述の通り、git cloneでごそっと持ってくる。
$ cd ~/.vim/bundle
$ git clone https://github.com/elzr/vim-json.git これだけ。試しに~/.vim/bundle/vim-json/json-test.json, jsonp-test.jsonpを開くと、ちゃんとSyntaxハイライトされている。

CloudFormationのTemplate用にファイルタイプを追加する
この状態だとJSONとして定義されたファイル名しかJSON Syntaxハイライトされないが、CloudFormationのTemplate…

僕と砂川誠選手 - [コンサドーレ札幌 Advent Calendar 2013] #adventar #consadole

※この記事はコンサドーレ札幌 Advent Calendar 2013の参加記事です。


さて、Advent Calenderに参加するに当たって、年に4,5回ホームゲームを見に行く程度のちょいサポである僕が何を書けるだろう...とひとしきり考えたんだけど、特に思いつかなかったので、砂川誠選手について書きたいと思います。

俺達の砂川誠」こと砂川選手、背番号8のMF。市立船橋を経て1996年に柏レイソルに入団後、2003年よりコンサドーレに在籍しています。

元々僕が砂川選手を応援するようになったのは、僕の母が市立船橋時代からの砂川選手の大ファンで、一緒にコンサドーレのゲームを見に行くといつも砂川選手を応援しているからです。
また36歳と僕よりも年上の大ベテランなのにまだまだ現役で頑張ってる姿は素直にすごいと思います。2009年くらいまではイケメン風の長髪でしたがその後現在の短髪となり、より男前になりましたね。

そんな砂川選手、2010年には大きな事件がありました。腰痛による出場機会激減とチームの財政問題から、戦力外通告を受けました。



しかし主力選手がどんどんと他チームに移籍していきチーム編成もままならんという状況に陥り、砂川選手との再契約が発表されます。僕の母も大喜びでした!

そして2013年現在、今も砂川選手はコンサドーレ札幌で現役選手として活躍中です。2012年にはコンサドーレ史上初の在籍10年選手となり、2013年10月20日に行われたJ2第37節-山形戦で公式戦通算500試合出場を達成



最近のコンサドーレはユース上がりなど若い選手が元気ですが、砂川選手にはまだまだ頑張っていただき、コンサドーレ札幌を、そして北海道を元気にして頂きたいですね!


余談ですが、コンサドーレ札幌のWebサイトにはその年度年度の選手プロフィールが載ります(砂川選手:2011年2012年2013年)
砂川選手はなぜか毎年「憧れのサッカー選手」や「好きな食べ物」が変わるのですが、「好きな女性タレント」は一貫してジェシカ・アルバ。どんだけ好きなんだ。


ダーク・エンジェル シーズン1 (SEASONSコンパクト・ボックス) [DVD]
ジェシカ・アルバ,マイケル・ウェザリー

20世紀フォックス・ホーム・エンターテイメント・ジャパン
売り上げランキング : 23383

Amazonで詳し…

UQ WiMAXを契約した

退職に伴いモバイル回線を自前で調達する必要が出てきました。当初はXi契約しているGalaxy noteからテザリングで接続する方向で考えていたのですが、実際にテザリングしてみたところ1週間で7GB制限(※Xiデータプラン契約では当月利用データ料が7GBを超えると当月末まで通信速度が送受信最大128kbpsに制限される)が発生してしまいました。

128kbpsなんて全然早いじゃん...とテレホーダイ世代の僕は考えていたのですが、今のリッチなコンテンツにとって128kbpsは非常に細く、スマホ用のWebコンテンツでさえタイムアウトする始末。

これじゃ使い物にならんということで、UQ WiMAXと新規に契約しました。
購入したハードウェアはAtermWM3800R、契約したプランはUQ Flat 年間パスポート


UQ WiMAXを選択したのは以下の理由から。
・月額¥3,880と利用料金が安いこと。
・継続利用割引の縛りが1年と短期であること。
・速度制限が無いこと。
・モバイルルータが¥100と激安だったこと
最近はWiMAX 2+が話題になっているけれど、2年という継続利用縛りの長さから除外しました。 正直なところ僕の利用だと下り110Mbpsは必要無いですしね。

今このBlogもWiMAX経由で(裏でbrew動かしながら)繋いでいるけれど、速度的には問題なし。電波感度についてはこれから使い込んでどうなるかですけど、札幌近郊はエリア範囲なのでまぁほぼ大丈夫だろうと思ってます。後は地方での感度だけど、これは明日からの温泉旅行で試してみよう。

まずはこれでインターネット回線を確保したので一安心。


AWR-100TK ブラック 3G シムフリー WiFi ルーター SIM Free


AVOX
売り上げランキング : 1074

Amazonで詳しく見る by AZlink

エゾシカ丼を食らう - [道民部 Advent Calendar 2013] #adventar #doumin

※この記事は道民部 Advent Calendar 2013の参加記事です。

はじめに
今日は
「人生は短く有限なので、そこでしか味わえなかったり今でしか食べられないようなものは、積極的に食べたほうが人生楽しいよ」 という話をします。


エゾシカについて

皆さん、エゾシカをご存知ですか?道民には馴染みの深い動物ですが、道外の方にとってはちょっと遠い存在なのでは無いでしょうか。
エゾシカは北海道全域に生息するシカの仲間です。道東や道北に特に多く生息していたのですが、最近は北海道西部でもよく見かけるようになりました。
かつて乱獲や豪雪、土地開発による生息地減少などに伴い、一時は絶滅寸前にまで至りましたが、1980年代以降個体数が爆発的に増加し、現在は65万頭程度が生息していると言われています。個体数の増加に伴って農業被害や交通事故も増加傾向にあり、また自然植生の破壊などが懸念されています。 なお交通事故は割と良くある話で、僕の知人が高速道路でエゾシカを轢いて車のフロントが大破したことがありました。本人が無事で何よりでしたが、おっかない話です。
そんなわけでエゾシカとの共生、駆除したエゾシカの有効活用という観点から、エゾシカの食用利用が近年活発になっています。鹿肉は高タンパク低脂肪、かつ鉄分が豊富と、非常に栄養価が高い食品です。 以前から一部のレストランや物産館などで取り扱われていたのですが、近年ではコープさっぽろのような大手から産直生鮮市場、スーパーエースなど、身近なスーパーでも取り扱われるようになりました。一般社団法人エゾシカ協会のWebサイトでは協会推奨の鹿肉が買えるお店のリストが公開されています。
まぁここでは小難しい歴史的経緯の話とか動物愛護的観点での駆除の正当性なんかを話したいわけでは無く、せっかく近所で鹿肉売ってるんだから食ってみたぜ!という話をします。

2013年12月31日をもって退職します

2013年12月31日をもって、現在の会社を退職することになりました。
2001年より丸12年間、会社設立時からのメンバーとして、全エンジニアを統括するマネージャとして、そして一人のエンジニアとして、業務に従事させて頂きました。経営や、マネージメントや、リーダーの在り方や、エンジニアとしての働き方や、本当に多くのものを学ばせて頂きました。厚くお礼申し上げます。

こんなにもお世話になった会社を退職させて頂くことになったのは、一重に僕個人の危機感によるものです。

0.前提
僕は過去12年間、インフラエンジニアとして働いてきました。インフラというのはとても大きな括りのざっくりとした言葉ですが、地方におけるインフラエンジニアとしては有りがちな「環境何でも屋」に近い位置づけです。ネットワーク設計からネットワーク機器の設定・構築を中心として、ネットワークに関わるサーバやサービス、DB、フレームワーク、クライアントPCのセットアップまで、何でもやります。提案営業もやったし、運用や保守にも携わってきました。特化した技術が無い代わりに、何でも広く(浅く)対応出来る、というのが現在の僕の特性です。

1.僕の戦場が狭まっている
10年前の僕の仕事は、ネットワークを設計構築し、サーバを設計構築し、サービスを設計構築することでした。例えばWebシステムならApacheと関連するモジュールをセットアップするところまでが僕の仕事で、そしてアプリケーションを担当するエンジニアはその開発したアプリケーションをコンテンツフォルダに置くだけでした。環境は全てインフラ担当が、アプリケーション担当は開発をするだけ、そんな住み分けがありました。牧歌的な時代ですね。
しかし今ではアプリケーションエンジニアがWebサービスを立ち上げるのが当然のようになっているし、更にはフレームワークやDBのセットアップまで自分たちでやるようになっています。PaaSやIaaSのようなモデルが生まれたことで、クラウド上のネットワーク設計やロードバランサに至るまで、何でもアプリケーションエンジニアが自らするようになっています。
かつてハイレイヤーを戦場にしてきた人たちがどんどんと低いレイヤーにも攻め込んできている。そんな中で僕のようなローレイヤーエンジニアが、ずっとローレイヤーだけで戦っていけるんだろうか、いつかパイを食い潰され、僕が戦…

tmuxを使うことにした

最近はGNU screenよりもtmuxのほうがモダンらしいのでMacBookにtmuxを入れた。

インストールはHomebrewでサクっと。
$ brew install tmux .tmux.confは以下のようにした。 # PrefixはC−t set-option -g prefix C-t # Default prefixをunbind unbind C-b # tmux.confの再読み込み bind r source-file ~/.tmux.conf \; display-message "Reloaded config done." # Esc遅延を1msに変更 set -sg escape-time 1 # ペイン分割を変更 unbind-key % unbind-key '"' bind-key - split-window -v bind-key | split-window -h # ペイン移動をvi likeに bind h select-pane -L bind j select-pane -D bind k select-pane -U bind l select-pane -R # ペインのサイズ変更 bind -r H resize-pane -L 5 bind -r J resize-pane -D 5 bind -r K resize-pane -U 5 bind -r L resize-pane -R 5 # コピーモードをvi likeに setw -g mode-keys vi ついでに、最近はdotfilesはgithubに置くのがモダンらしいので、僕も置いてみた。 smokeymonkey/dotfilesなお、なんか最近は「モダンな○×△」って言うのがモダンらしいので、あえて本文中にモダンって連呼してみた。ちょっとアホっぽい。

Ruby開発環境を作る on 初めてのMacBook

生まれて初めて触るMacBookに戸惑いつつ、開発環境についてFacebookで相談してみて、いろんな人のご意見を頂いた結果、 すぐに触れる環境としてOS Xの中でrbenv + ruby-build + gitの環境を作るミドルウェアのような環境丸ごと試したい場合はVagrant にしてみようと思っています。

まずはrbenv + ruby-build1 + gitの環境を構築してみました。

初めてMacを使ったWindowsユーザの俺がブチ切れた7つのこと

Windows95以来ずーっとWindowsユーザだった僕ですが、故あってMacBook Airを使うことになりました。


しかし、だがしかしだ。ここ数年ThinkPadかLet's Noteしか触ってなかった僕が初めてMacBook Airを触ったところ、もうわけわからん。イライラする。イライラする!そんなイライラの原因とその対策をまとめました。

後元々Macユーザの人にとって見れば標準こそ効率的で美しいんだと思いますが、これはあくまでWindowsユーザの僕にとってブチ切れるポイントなので、軽くスルーして下さい。


Using elasticfox-ec2tag on Windows

はじめに

今日はとても良い記事がありました。

AWS re:Invent と Immutable Infrastructure - 昼メシ物語
@mirakuiさんによるre:Inventの参加レポなのですが、
「サーバに名前をつけるという行為はもはや古い慣習であり、クラウドネイティブな思考を妨げる足かせになる」 という考え方はすごく良いと思いました。

で、この記事の中で紹介されていたelasticfox-ec2tagが興味深かったので使ってみました!

Amazon EBSをコマンドで操作する

第2回読書会 - Amazon Web Services クラウドデザインパターン実装ガイドは業務上の都合で参加出来ませんでした。無念。次回第3回読書会は11/25(月)開催なので、なんとしても参加したいと思います!

で、第2回では第2章を読んだということで、僕は独習しないといけません。そこで今日は今日はAmazon Elastic Compute Cloud ユーザーガイドの「Amazon Elastic Block Store(Amazon EBS)」章を読みました。

いつもAWS Management Consoleでやってる作業をAWS Command Line Interfaceでやってみる

今日はAWS Command Line Interface User Guide (Version 1.0.0)を読んで勉強したので、いつもAWS Management Consoleからやってる作業をCLIからやってみた。

仕事用カバンをバックパックにした - NIXON LANDLOCK II

かれこれ6年間、仕事用のカバンとしてトートバッグであるJetSetBagを使っていた。これはとてもたくさんモノが入るしインナーポケットもたくさんあるしととても重宝していたのだけれど、トートバッグの特性上片方の肩にだけ加重がかかることからすっかり身体が歪んでしまい、荷物を持たずに普通に立っていても左肩が右肩より下がっているという体型になってしまった。右肩に持ち直すという方法もあるのだけど、僕の右肩はインピジメント症候群になっているため荷重を加えたくない。

そんなわけで仕事用のカバンをバックパックにした。バックパックだと両肩に荷重を分散できるため身体への負担が少ないというのが選んだ理由。スーツだとトートバッグやショルダーバッグのほうが合うんだけど、もうそんなこと言ってられん。楽なの優先。

購入したのはNIXONLANDLOCK II BACKPACKというモデル。妻様に買って頂きました。ありがとう妻様。



NIXONというブランド自体に深い思い入れは無かったんだけど、よく学生さんが持っているのを見ていて、サイズの大きさと黒に白のワンポイントというデザインが気に入ったので選択した。
ストリートブランドらしく細かいポケットみたいなのはほぼ無くて、インナーにメッシュポケットが一つあるだけ。でも容量はさすがに大きくお弁当や水筒を入れても余裕があるし、サイドにジッパーが付いていてそこから取り出しが出来るようになっている。電車で本を取り出すときはこの口が便利。 僕の用途だとノートPC+ノート+手帳+本+水筒+弁当がメインなので、他の細かいのはポーチに入れて突っ込んでおけば充分。
さっそく今日から通勤で使ってみたけれど、やっぱ肩にかかる負担が段違い。とても楽。少し肩が良くなるといいなぁ。



[ニクソン] NIXON LANDLOCK II NC19531253-00 1253 (WOODLAND CAMO)


NIXON(ニクソン)

Amazonで詳しく見る by AZlink

CloudFormation + Chef-soloで環境構築

世間はCloudTailだのWorkSpacesだのAppStreamだので盛り上がっている中、地道にCloudFormationと戦っているのが僕です。

今回はCloudFormationからChef-soloをキックして環境構築してみました。

参考文献はこちら。
CloudFormationのヘルパースクリプトcfn-initによるインスタンスの初期化 | Developers.IOAWS CloudFormation テンプレートリファレンス – AWS::CloudFormation::Init | Developers.IO

elasticsearch-headを使ってみる

今日はelasticsearch-headを使ってみました。

インストール
2台のEC2インスタンスを作成し、ElasticSearch + AWS Cloud Plugin for ElasticSearchでクラスタ構成にします。手順は「AWS Cloud Plugin for ElasticSearchを使う – AWSで始めるElasticSearch(3)」を参照して下さい。

elasticsearch-headはpluginコマンドでインストールします。
$ sudo /usr/share/elasticsearch/bin/plugin -install mobz/elasticsearch-head
-> Installing mobz/elasticsearch-head...
Trying https://github.com/mobz/elasticsearch-head/archive/master.zip...
Downloading .......................DONE
Installed mobz/elasticsearch-head into /usr/share/elasticsearch/plugins/head
Identified as a _site plugin, moving to _site structure ... インストール後、elasticsearchのサービスを再起動し、「http://IPアドレス:9200/_plugin/head/」にWebブラウザでアクセスすると、elasticsearch-headのWebUI画面が表示されます。

はじめてのCloudFormation

やろうやろうと思っていながら中々手が出ていなかったCloudFormation、ようやっと勉強始めました。

テンプレートを作る
まずはAWS-SDK for rubyがセットアップされたEC2を立ち上げるだけの簡単なtemplateを作成してみました。それぞれの項目の意味合いは以下の通り。
AWSTemplateFormatVersion ... テンプレートフォーマットのバージョン。AWS CloudFormation User Guideを見ると、現在は「2010-09-09」しか無いため、事実上固定値になっているようだ。Parameters ... ここに記載したパラメータは、スタック作成時指定出来るようになる。この例だと、「KeyName」というパラメータ名で鍵ファイルを指定出来る。またパラメータはRef関数にて参照可能({ "Ref" : "KeyName" })。Mappings ... マッピング定義。引数に対しての戻り値をリストで設定できる。マッピング定義はFn::FindInMap関数にて参照可能。例では{ "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "AMI" ]}の部分。CloudFormationが自動的に設定したリージョン名が入っている擬似パラメータであるAWS::RegionをRef関数にて取り出して、Fn::FindInMap関数に渡している。なお各リージョンで使われているAmazon Linux AMIのIDはAWSのWebサイトで確認できる。Resource ... 作成するリソースに対する定義。例ではセキュリティグループとEC2インスタンスを作成している。Outputs ... スタックを作成した結果で出力したい項目を定義する。CloudFormationのOutputsタブにて参照できる。

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…