cf inspector

Post on 31-May-2015

188 Views

Category:

Technology

6 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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: xxx@example.comUsage: 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が定期的にメッセージだしててノイズになってる

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

使ってみて下さい

top related