Cf inspector
-
Upload
shota-onishi -
Category
Technology
-
view
176 -
download
6
Transcript of Cf inspector
cf_inspectorShota Onishi (@shouta_dev)
自己紹介• 大西正太 @shouta_dev
• (株)DTS 2005年頃からRailsのSaaSグループウェア開発
• Bizca 20000ID位 (OEM含)
• SaaS→PaaS→Cloudfoundryと興味辿る
• 2005-2008頃はRuby界隈に多少顔を出してた
• Railsの記事とか、イベントでスピーカーとか
• その後ロードバイクにドはまりしてお休みしてましたが、久しぶりにオープンソースな場所に顔をだしてます
• ことさらにビールが好きです
話す事• cf_inspectorというcloudfoundry内部の動
きを見る簡単なツール作ったので紹介します
• cf_inspector作った経緯
• 何ができるのか
• デモ
• 時間余ったら詳細
僕は知りたかったcloud foundryについて
ある日の事 ~AM10:00~
• Cloud Foundryおもしろそう!
•よくわからないけどとりあえずセットアップした。とりあえずvmc pushする。
•キタコレ!Railsアプリ動いてるっぽい
•中どうなってるんだろう?
ある日の事 ~PM12:00~
• とりあえずググってみる!
• ほぅ・・・きれいな作りだ・・・http://www.slideshare.net/mccrory-me/cloud-foundry-a-developers-perspective
ある日の事 ~PM15:00~
•でもあんな四角と矢印のポンチ絵見ても動いてるイメージなくて人ごとだよね
•例えばvmc pushすると中はどう動くんだろう
• Ruby/Railsでできてるらしい。ソース読んでみる!
ある日の事 ~PM17:00~
•ソースよんでる•vmcから追いかけてcloud controllerへ
• cloud controllerがNATSにpublish
• これ誰がsubscribeしてるんだ?
• => grep -r ... *.rb
• あぁ、Health Managerね・・・こいつがまたNATS経由で打ち返してるみたいだけど
• => grep -r ... *.rb
迷子になった
cloudfoundryの野郎!
•pub/sub使ってかっこいい分散構造!
•コンポーネントがお互いに協調してシステムになってる。
•でもソースで追いかけると迷子になりやすいよ!
そこでcf_inspectorですよ
cf_inspectorとは?•cloudfoundryの内部の動きをHTMLのレポートとして出力する
cf_inspector
cloudfoundry
HTML report
基本戦略•各コンポーネントのやりとりを勝手にログに取ってHTML出力する
NATSvmc cloud controll
Health Manag
ServiceGatewa
router
sqlite
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
実行!• 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...
出力結果•Web 0.1水準の華麗なビジュアル
demo
詳細
拡張方法• vmc_inspect実行の最初から終わりまで解析
情報をログファイル出力し、後からログをパースしてHTML出力している
• Rubyのクラス再オープンしてログ出力してる
• callerからバックトレースを解析してパスからどのコンポーネントがログ出力しているか識別してる
vmc•実行されたコマンドのパラメータ
• cloud controllerへのHTTPリクエストURL
•リクエストパラメータ
• RestClientを拡張している
cloud controller• HTTPリクエストパラメータ
•コントローラ名、アクション名
• cloud controller拡張しbefore filter追加
• RDB(現状sqliteのみ)へ発行するSQL
NATS
•publishしたメッセージ
• subscriberが受信したメッセージ
•NATSを拡張
Services
• Service GatewayがたてるsinatraのWebサーバへのリクエストパラメータ
• Service Gateway拡張(フィルタ追加)
課題
•なんかService Gatewayが無反応なきがするんですけど・・・(バグ?)
•HealthManagerが定期的にメッセージだしててノイズになってる
•分散環境でも見たいよね
使ってみて下さい