cf inspector

25
cf_inspector Shota Onishi (@shouta_dev)

Upload: shota-onishi

Post on 31-May-2015

186 views

Category:

Technology


6 download

TRANSCRIPT

Page 1: Cf inspector

cf_inspectorShota Onishi (@shouta_dev)

Page 2: Cf inspector

自己紹介• 大西正太 @shouta_dev

• (株)DTS 2005年頃からRailsのSaaSグループウェア開発

• Bizca 20000ID位 (OEM含)

• SaaS→PaaS→Cloudfoundryと興味辿る

• 2005-2008頃はRuby界隈に多少顔を出してた

• Railsの記事とか、イベントでスピーカーとか

• その後ロードバイクにドはまりしてお休みしてましたが、久しぶりにオープンソースな場所に顔をだしてます

• ことさらにビールが好きです

Page 3: Cf inspector

話す事• cf_inspectorというcloudfoundry内部の動

きを見る簡単なツール作ったので紹介します

• cf_inspector作った経緯

• 何ができるのか

• デモ

• 時間余ったら詳細

Page 4: Cf inspector

僕は知りたかったcloud foundryについて

Page 5: Cf inspector

ある日の事 ~AM10:00~

• Cloud Foundryおもしろそう!

•よくわからないけどとりあえずセットアップした。とりあえずvmc pushする。

•キタコレ!Railsアプリ動いてるっぽい

•中どうなってるんだろう?

Page 6: Cf inspector

ある日の事 ~PM12:00~

• とりあえずググってみる!

• ほぅ・・・きれいな作りだ・・・http://www.slideshare.net/mccrory-me/cloud-foundry-a-developers-perspective

Page 7: Cf inspector

ある日の事 ~PM15:00~

•でもあんな四角と矢印のポンチ絵見ても動いてるイメージなくて人ごとだよね

•例えばvmc pushすると中はどう動くんだろう

• Ruby/Railsでできてるらしい。ソース読んでみる!

Page 8: Cf inspector

ある日の事 ~PM17:00~

•ソースよんでる•vmcから追いかけてcloud controllerへ

• cloud controllerがNATSにpublish

• これ誰がsubscribeしてるんだ?

• => grep -r ... *.rb

• あぁ、Health Managerね・・・こいつがまたNATS経由で打ち返してるみたいだけど

• => grep -r ... *.rb

Page 9: Cf inspector

迷子になった

Page 10: Cf inspector

cloudfoundryの野郎!

•pub/sub使ってかっこいい分散構造!

•コンポーネントがお互いに協調してシステムになってる。

•でもソースで追いかけると迷子になりやすいよ!

Page 11: Cf inspector

そこでcf_inspectorですよ

Page 12: Cf inspector

cf_inspectorとは?•cloudfoundryの内部の動きをHTMLのレポートとして出力する

cf_inspector

cloudfoundry

HTML report

Page 13: Cf inspector

基本戦略•各コンポーネントのやりとりを勝手にログに取ってHTML出力する

NATSvmc cloud controll

Health Manag

ServiceGatewa

router

sqlite

Page 14: Cf inspector

setup• https://github.com/shouta-dev/

cf_inspector

• 普通にcloudfoundryをall-in-oneで入れる

• 今のところ手作業でセットアップ$ export CF_HOME=~/cloudfoundry$ cd ~$ wget https://raw.github.com/shouta-dev/cf_inspector/master/cf_inspector/vmc_inspect$ wget https://raw.github.com/shouta-dev/cf_inspector/master/cf_inspector/cf_inspector_ext.rb$ mv ./cf_inspector_ext.rb $CF_HOME/vcap/common/lib/vcap$ sudo echo "require 'vcap/cf_inspector_ext'" >> $CF_HOME/vcap/common/lib/vcap/common.rb$ $CF_HOME/vcap/bin/vcap restart

Page 15: Cf inspector

実行!• vmcコマンドの代わりにvmc_inspectコマンドを使う

$ ruby vmc_inspect info

VMware's Cloud Application PlatformFor support visit http://support.cloudfoundry.com

Target: http://xxx.vcap.me (v0.999)Client: v0.3.13

User: [email protected]: Memory (384.0M of 2.0G total) Services (1 of 16 total) Apps (3 of 20 total)

/tmp/vmc_info_20111220_110420.html has been generated.

$ ls /tmp/*.html/tmp/vmc_info_20111220_110420.html

$ ruby vmc_inspect list$ ruby vmc_inspect push...

Page 16: Cf inspector

出力結果•Web 0.1水準の華麗なビジュアル

Page 17: Cf inspector

demo

Page 18: Cf inspector

詳細

Page 19: Cf inspector

拡張方法• vmc_inspect実行の最初から終わりまで解析

情報をログファイル出力し、後からログをパースしてHTML出力している

• Rubyのクラス再オープンしてログ出力してる

• callerからバックトレースを解析してパスからどのコンポーネントがログ出力しているか識別してる

Page 20: Cf inspector

vmc•実行されたコマンドのパラメータ

• cloud controllerへのHTTPリクエストURL

•リクエストパラメータ

• RestClientを拡張している

Page 21: Cf inspector

cloud controller• HTTPリクエストパラメータ

•コントローラ名、アクション名

• cloud controller拡張しbefore filter追加

• RDB(現状sqliteのみ)へ発行するSQL

Page 22: Cf inspector

NATS

•publishしたメッセージ

• subscriberが受信したメッセージ

•NATSを拡張

Page 23: Cf inspector

Services

• Service GatewayがたてるsinatraのWebサーバへのリクエストパラメータ

• Service Gateway拡張(フィルタ追加)

Page 24: Cf inspector

課題

•なんかService Gatewayが無反応なきがするんですけど・・・(バグ?)

•HealthManagerが定期的にメッセージだしててノイズになってる

•分散環境でも見たいよね

Page 25: Cf inspector

使ってみて下さい