AWS CloudWatch APIをPHPから叩いてEC2のモニタリングをする

AWSのマネージドサービス使ってGUIでEC2インスタンスの各種リソース監視ができる。
一定のしきい値を設定し、アラートメールを投げたりすることもできるけど
もう少し複雑な条件で通知をしてほしかったので、CloudWatchのAPI叩いて自前で通知する仕組みを作ることにした。
今回はCloudWatchのAPI叩いて値を取得するところまでのメモ。

やること

  • AWS SDK for PHPのインストール
  • IAMで監視用ユーザーを作成
  • PHPからリクエストを飛ばす

AWS SDK for PHPのインストール

PHPからAWSの各サービスAPIを利用するためのSDKが公開されている。
AWS SDK for PHP — AWS SDK for PHP 2.7.16 documentation


今回はCloudWatchClientを利用するのでComposerを使ってインストールする。
Installation — AWS SDK for PHP 2.7.16 documentation

// Composerをインストールする
$ brew install compsoer

// composer.jsonを作成
{
    "require": {
        "aws/aws-sdk-php": "2.*"
    }
}

// インストール
$ composer install

IAMで監視用ユーザーを作成

CloudWatch APIを利用するにはアクセスキーとシークレットキーが必要。

AWSアカウントを持っている時点で全権限が付与されたキーは発行可能なものの
不必要な権限まで与えてしまうため、アンチパターンっぽい。

ちゃんと権限を絞ったユーザーを作成するIAMというサービスが提供されているため
そちらで監視用ユーザーを作成し、アクセスキーとシークレットキーを発行する。

AWS Management Console -> Services -> Administration & Security > IAM
で管理画面にアクセス可能。

ユーザー作成後にAttach User PolicyからCloudWatch Read Only Access権限を付与。
アクセスキーとシークレットキーを取得する。

PHPからリクエストを飛ばす

こちらの記事を参考にコードを書いた。

MetricNameに指定できるパラメータは以下のドキュメント参照。

CloudWatchClientのドキュメント
Class Aws\CloudWatch\CloudWatchClient | AWS SDK for PHP

の変更に柔軟に対応したいので
汎用的なバッチどうやって作ろうか検討中。

PHPのAPCとOPcache試してみた

ちょっと仕事でPHPのパフォーマンス改善の必要があったので
勉強がてらPHPAPCとOPcache試してみた。

APCのインストール

環境は

$ pecl install apc
Fatal error: Call to a member function getFilelist() on a non-object in /usr/local/Cellar/php55/5.5.10/lib/php/PEAR/Command/Install.php on line 742

インストールで怒られてこける

issueになってた
Can not install extension with pecl · Issue #1039 · Homebrew/homebrew-php · GitHub

$ touch $(brew --prefix php54)/lib/php/.lock && chmod 0644 $(brew --prefix php54)/lib/php/.lock

再度インストール

$ pecl install apc
$ php -m | grep apc
apc

どれくらい早くなるのか確認する
/etc/hostsを書き換えて
phpinfoを出力してみる

// 10並列で100リクエスト
$ ab -n 100 -c 10 http://apc.localhost/php_info.php

// apcなし
Time per request:       8.322 [ms] (mean)
Time per request:       0.832 [ms] (mean, across all concurrent requests)

// apcあり
Time per request:       8.026 [ms] (mean)
Time per request:       0.803 [ms] (mean, across all concurrent requests)

そこまで劇的に早くはならない。

OPcacheのインストール

ついでにPHP55に上げる。
PHP55からはデフォルトでOPcacheが入る。
APCは使わない流れっぽい。

APCより20%ほど早くなることもあるらしい。
PHP5.5 のコードキャッシュは APC から Zend OPcache へ - Shin x blog

$ brew install php55 --with-fpm
$ brew unlink php54
$ brew link php55

$ vi /usr/local/etc/php/5.5/php.ini
// 追記
zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20121212/opcache.so

opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1

fpmを再起動してOPcacheが読み込まれてるか確認

$ php -v

PHP 5.5.20 (cli) (built: Jan 11 2015 23:52:35) 
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
    with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2014, by Zend Technologies

ベンチマークとってみる

$ ab -n 100 -c 10 http://apc.localhost/php_info.php

Time per request:       5.825 [ms] (mean)
Time per request:       0.582 [ms] (mean, across all concurrent requests)

25%くらい早くなってる。

今回はphpinfoを出力しただけだったけど
php55とopcacheでけっこう早くなった。

これがwebアプリでフレームワークとか使ってると
ルーティングとかの共通処理が入ってるのでもっと早くなりそう。

合わせてAPCuも試してみたい。

2014年お買い物ランキング

2014年のお買い物でよかったものベスト5くらい書きます。

5位 ナタデココ

近所のスーパーより安く買える
以前買ったヨーグルトメーカーでヨーグルト量産して
近所のスーパーで買った業務用サイズのフルーツ缶と混ぜて食うと最高。

個人的にヨーグルト風邪予防説は信じていて、今年もヨーグルト毎日食いまくってたら
1回も風邪ひかずにすんだので、今後も信じていきます。


4位 ホワイトボードのノート

会社で使ってる。
開発中のタスクリストをサクッと作って、1つずつチェックしていったり
仕様とか、実装方針を図に書いて説明したい時に重宝する。あと落書きして遊ぶ。
付属のほっそーいペンは一瞬でなくなるので、100均の細ペン大量に買っとくとよい。

CANSAY NUboard A4判

CANSAY NUboard A4判


3位 SHフィギュアーツ 仮面ライダー斬月

会社の誕生日プレゼントでいただきました。ガチでうれしかったです。
斬月は鎧武放送開始前から「こいつ絶対強い」って確信していて
その期待値を裏切らぬ11話での無双っぷりで完全に好きになった。
主任が斬撃入れるときの「ハッ!」の声もかっこよくていい。
こうなるとプレバン限定の斬月・真も欲しくなるけどプレミアついてて迷う。


2位 新宿ミラノ座 LAST SHOW マトリックス

新宿ミラノ座閉館に合わせてのイベント
たしかマトリックスは小3か小4の時に公開されて
当時ストーリーなんて理解できないまま、ただただアクションのかっこよさに惹かれてた。
24になって見なおしてもやっぱりアクションがむっちゃよかった。

ミラノ座は古い映画館っていう認識で、初めて行ったら
シアター入り口のドアから音漏れしまくってて
遮音性とか無視してとりあえず爆音で映画流すっていう根性がとても気に入りました。
特にビルの1階で金属探知機通り抜けたあとの銃撃戦は
映画館ならではの大画面&爆音で、最高にクールそして迫力MAXなシーンでした。
映画館で見られてよかった。
http://www.tokyucinemas.net/news/last-show/


1位 神保町シアター ゴジラ映画総進撃

東京に引越してきた直後から始まったイベント
特に良かったのは

の3作で、1984は近所のTSUTAYAに置いてなくてやっと見られたのがよかった。

平成ゴジラ平成ガメラをビデオが擦り切れるくらい見て育った自分にとってはたまらないイベントでした。
メカゴジラとスペースゴジラは家のテレビで見るのと全然違って迫力あったのが最高でした。
メカゴジラが殴られてコックピットが揺れてるシーンで、震度2か3くらいの地震がきて
映画館も揺れたのが4D感あってとてもよかった。スペースゴジラはもっと評価されていいと思う。
向かいの餃子の定食屋がうまかったです。



東京は映画系のイベントが多いので
今年は映画の印象が強い。
来年は映画とかの受動的に鑑賞するものではなく
もっと能動的に体験できることにお金使ってみたい。

井の頭公園に行った

今日は休日出勤の代休をもらったので吉祥寺に行っていた。

駅前はイメージしてたのより街中な感じでマルイやPARCOがあって驚いた。

なんかグーグルマップを見てると公園が近くにあったので寄ってみると井の頭公園だった。
名前だけ聞いたことあるなーと思いながら少し散策してた。

でっかい池を中心に林がぐるっと囲んでいて、その林の中を散歩できる。

池のそば特有の若干モヤというか霧がかかった感じで
そこに木漏れ日が差し込んできれいだった。

そばには動物園もあって、けっこう楽しい。
僕は水生昆虫を見てひとりキャッキャしていた。昔タガメを飼っていたことがあるのだ。


普段六本木にいると人とビルしかない無機質な街に慣れてしまっていて
なかなか散歩してても気が休まることがない。

今日行った井の頭公園は、都会とは打って変わって時間がゆっくり流れている感じで
滞在時間は数時間なのだが、丸一日いたような感覚がしている。


なんとなく鴨川でダラダラしていた時もこんな感じだったなぁと今になって思い出した。


三鷹の森ジブリ美術館まで600m
みたいな看板がたくさんあるのもよかった。2回目いつ行こうか迷っている。
できれば、めいとこねこバスの上映期間に行ってみたい。

近所にはいい感じのランチが出てくるお店もあったので
また休みの日に行って散策したい。押忍。

グアムでゴジラ見てきた

途中からネタバレあり。


社員旅行でグアムに連れて行っていただけたので
これはチャンス!と
日本では7/25まで見られないゴジラを一足早く見てきた。

f:id:takanamito:20140602155955j:plain

そもそも初海外だったので
めっちゃびびりながらチケット買った。
しかし3Dなのに8ドルで見れたのはマジでよいと思った。

せっかくなのでアメリカンサイズのポップコーン頼むかって感じになって
Big Popcorn & Big Juice
みたいなメニュー頼もうとしたら

バケツくらいのサイズのポップコーンと
僕の肘から先くらいあるコーラが出てくるとわかって
慌ててSmallに切り替えたりと
なかなかアメリカンな体験が楽しめてよかった。

※ちなみにSmallでも、日本のLargeくらいあって
余裕で半分以上残った。3.5ドル。

f:id:takanamito:20140602160353j:plain

めっちゃ人気とか聞いてたけど
客席は超ガラガラで、自由席だったけどいい席座れた。

アメリカも日本と同じく
本編が始まる前に予告編を延々と見せられる形式は一緒で
だいたい10分くらい予告編見せられた。


当たり前の話だけど
英語音声 + 字幕なし
なので、英語学習がセンター試験で止まっている僕は
けっこう必死でついていかないといけない。

まあでも見たかったのは怪獣プロレスなので、正直聞き取れなくてもいけた。
それにそんなにストーリー複雑じゃないので、だいたい内容もわかった。





こっからネタバレ

肝心の内容はめっちゃ渋くて
どっかで書かれてたけど、ちょっと平成ガメラ一作目っぽさを感じた。

とにかくゴジラ登場までが長い。

でも空港で飛行機連鎖爆発ドンドンドンからの
カメラ横に振ったら、ゴジラの足がズンってくるとこはすんげーテンション上がる感じだった。

戦闘描写はもっとたっぷり見せて欲しかった感じある。
主にゴジラ劣勢な場面が多くて、なんかあんま怪獣王な印象なかった。

ただ何よりのサプライズはしっかり熱線撃ってくれたところ。
日本では背びれだけが光る感じだったけど、今回は尻尾の方からどんどん光ってて
かっこよさが今っぽくなってた。


あと、渡辺謙がちゃんと「ゴジラ」って発音してたのがめっちゃよかった。

とりあえずまた日本で公開されたらIMAXで見ることになりそうです。

キャプテンアメリカとスパイダーマンがよかった

ネタバレあります。

キャプテンアメリカ ウインターソルジャーとアメイジングスパイダーマン2見た。
キャプテンアメリカは2回見に行った。

両方とも1の100倍くらいおもしろい。

特にキャプテンアメリカはあの尺で飽きさせず
かついろんな要素つめこみまくって

さらにファルコンの最高すぎる空中戦見せてくれたり
キャプテンの体術存分に披露したりで満腹感がすごい。

僕は派手で巧い戦闘が見られればそれでOKな感じの人なので
各戦闘に「これだよ!!」っていうポイントがある点が特に最高。

今まで何かよくわからんかっこいい感じの人だったフューリーが
車で襲われた時に、サポートAIっぽいやつに反撃しろって言われてるのを制して
焦らして焦らしてからの「Now!!!!!」でぶっ放すとことか

ファルコンの空中戦では、ほんとまだかまだかと待っていた
大量のミサイル引き連れて、びゅんびゅん飛び回るとこ見れたりして最高
↑これがないとテンション下がる

あとストーリーとかのいいところはだいたいじぐそう氏が代弁してくれている。
Nikki: キャプテン・アメリカ ウィンター・ソルジャー(ネタバレ有り感想)

お隣の美人さんと、全身やけどしてボロボロっぽいラムロウが
今後どう関わってくるのかが気になる。
ぜひ次回のアベンジャーズにはファルコンを出してください。

あとアメリカの退役軍人ってみんなあんな強いんですか。
現役バリバリの超絶エリート特殊部隊相手に体術で時間稼ぐとか無理ある気が。








スパイダーマンもよくって
戦闘に加えて若者の悩む感じとかすごいイケててよかった。

最後のスパイダーマン復活のシーンはちょっと泣きそうになってしまったくらいよくって
だるそうに立ち上がって、メガホンでしゃべるとことか超イケてた。

例のごとく、ストーリーとかのいいところはじぐそう氏が代弁してくれている。
Nikki: アメイジング・スパイダーマン2がすげえよかった

なんか旧3部作からけっこうその感じはしてたけど
作りとか見せ方がイケててナウい感じがする映画な気がする。

主人公がソーシャルネットワークの彼になってたりして
現代っ子のイケてる感じとかがさらに増長されてる。音楽とか感情の見せ方とか。

予告で激刺さりしてた電気の人とのぎゅんぎゅん動く戦闘はIMAX3Dだと最高にかっこよくて
あれだけのためにもっかい見に行きたいくらい。

別れてからまだお互い好きなまま再会して
公園でルールを言い合うシーンはもう見てるこっちが恥ずかしくなるくらい
これ見よがしにイチャイチャしてくれててよかったです。
役者さんってああいうシーン撮ったあと、マジで好きになったりしないんすかね。

次回作はオクトパスとか出てくるフラグ全開だったり
ハリーの人があまりにもハマりすぎてて期待値が非常に高まっています。

旧3の最後の共闘はベタだけど、やっぱり最高にテンション上がった記憶があるので
今回もハリーと共闘してほしいなぁと思っております。

新卒向け部屋探しと引越し便利情報

京都→東京への引越し

春から東京に引越すために

  • 新居の契約
  • 引越し業者の手配

を済ませました。

これ知ってたらもうちょい捗ったのに
っていう情報をシェアさせていただきます。

新居の契約

会社が六本木にあるので、徒歩で通える範囲で探しました。

事前にFacebookでどの時期に探せばいいかわからんと投稿したところ
多数の友人から、年内に探すべきだと言われる。

新生活シーズンに合わせて年明け以降は、大家さん側が強気にでるため交渉しにくいとのこと。
12月中に上京し、部屋を探すことに。

以下、交渉ポイントをリストで。

  • 決める気満々で来店すると損する
    • 当たり前ですが、別の店でも探してるふりしないと足元みられる。今回やらかした。
  • 物件訪問した時にとりあえずケチつける
  • あんま気に入った物件ないフリして帰ろうとする
    • これで掘り出し物出てきたりするみたい
  • 金額交渉するなら家賃ではなく初期費用
    • ランニングコスト下げるの嫌がられるらしい
  • 家賃クレカで払えるとこだとポイントついてお得
  • ネットはグローバルIPきてるか聞く
    • これ今回確認してなくてすごく不安。自宅サーバーとか外から繋げないとやばい
  • いつ契約でどういう段取りなのかしっかりメールなどでログ残して確認
    • 今回お願いした賃貸業者さんめっちゃ仕事遅くてこの辺すごく不安だった。特に今回はフリーレントがついていたので、いつ契約で家賃発生開始なのかがすごく重要だったのにフワフワしてた。

引越し業者

先輩から8万くらいかかると聞いてビビってたので、全力で探した。
知り合いは1月中に引越して3万でいけたらしい。

  • ネットの一括見積もり出すとえらいことになる
    • 非常識な時間にやばいくらい電話かかってくる。しかも毎回違う番号から来る。

ググったらだいたいCMやってる引越し屋さんだった。おやすみモード!!!

f:id:takanamito:20140119195918j:plain

  • 複数社比べる
    • 普通に12万の見積もりとか出てくるので比較対象ないとえらい目にあう
  • ある程度ちゃんとやってるとこじゃないと危ない
    • この時期は普段引越しやってないとこが破格で参入してくるけど、最悪なとこもあるらしい
  • 知り合いに聞いて使ったことのある業者の情報教えてもらう
    • やっぱ安心
  • 訪問見積もりで伝えないといけない荷物の量確認して、電話見積もり依頼しまくる
  • 出揃った見積もり額比べて電話交渉
    • なんかだいたい出揃った相場の2/3くらいの金額にはなりそうな感じ。2月下旬からちょっと料金上がる。


賃貸業者の仕事遅かったり、向こう側のミスに対して怒るの苦手で今回めっちゃ苦労したけど
しっかり相手に「ちゃんとしないとやばい」と思わせないと、金額的にまあまあの被害になることもありえるので
部屋探しとてもしんどい。あまり引越ししたくない。
あと保証人の代わりに保証会社使うはずなのに、親の年収とか書かされてクソかと思った。

引越しもFacebookTwitterで経験者の情報なかったら普通に7万とかのオファーに承諾してしまうところだった。
相手も人間なので無茶な値引き要求はしたくないけど、ちゃんと交渉しないと
すごい額を損することがわかったので今後は頑張ろうと思う。

ていうか基本TwitterFacebookで情報収集してたと思う。
僕の知り合いはみな親身になって個別でメッセージくれたりしたので本当に感謝しています。ありがとうございました。

今回の引越しが本当にベストかと言われればまだ改善の余地はあると思うけど
この経験を生かして次回の引越しはより良いものにしたい。


あと他に便利情報あれば教えてください。