zabbixでvmc statsの情報など監視 してオートスケール風に動かし        てみました。        DTS 大西
自己紹介• 大西正太 (株)DTS @shouta_dev• Rails歴7年位    – 自社サービス グループウェア (2006~)      • http://www.bizca.jp    – 受託開発色々      • 普通のRail...
今日の内容• ZabbixでCloudFoundryのインスタンスを試し  にオートスケールしてみました• 連携できるか見たかっただけでさほど突き詰  めてないですが、あまり突っ込まないでくだ  さい!             ×
オートスケール?• 負荷が高くなってきたら自動的にスケールア  ウトする機構• 突然の負荷上昇に自動対応• CloudFoundryには現状ない?• サーバ側の何らかのメトリクスが閾値を超え  たらスケールアウトを発動させる –   レスポンス...
Zabbix• オープンソースの監視ソフト• Itemを監視しTrigger条件を満  たしたらActionを実行すると  いう構造   Item          Trigger   Action
今回やること• vmc statsのItem種別を追加する  – エージェント拡張の機構を用いることでItemの種別を追加    できる• vmc instancesでスケールアウトするActionを追加する  – Actionはシェルコマンド...
vmc stats?•    vmc statsで該当アプリケーションのリソース状況を取得できる$ vmc stats xxx+----------+-------------+----------------+--------------+-...
vmc stats 用Item種別追加■API叩く簡単な自作スクリプト                                    ■Item種別の追加#vmc_stats.rb                            ...
Itemの作成•   普通のCPU監視などと同様に、画面    からcloudfoundry.vmc.statsを指定    してItemを作成•   Itemのグラフを定義するとグラフ表    示!※今回30秒毎の監視で指定
Trigger定義• Zabbix書式で閾値を定義
Action定義■スケールアウト自作スクリプト(徐々にスケールアウト)#vmc_instances.rbrequire cliopt = {  :target => api.cloudfoundry.com,  :email => ‘xxxx@...
負荷掛けてみる• Jmeterで負荷• CPUを消費するシンプルアプリ   – 負荷掛けるとTrigger検知されて画面に出るrequire sinatraget / do 100000000.times{}end
2500                                1500                                                                      3500        ...
実用するには?• vmc statsで返ってくるCPUの精度が怪しい?  •   平均値を返してるのか、使用率の上下が即時反映されない?• そもそもItemはCPUでいいのか?  – CPUはAPがボトルネックという切分にはなるけど…  – レ...
Upcoming SlideShare
Loading in...5
×

Zabbixでvmc statsの情報など監視

3,433

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
3,433
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
13
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Zabbixでvmc statsの情報など監視

  1. 1. zabbixでvmc statsの情報など監視 してオートスケール風に動かし てみました。 DTS 大西
  2. 2. 自己紹介• 大西正太 (株)DTS @shouta_dev• Rails歴7年位 – 自社サービス グループウェア (2006~) • http://www.bizca.jp – 受託開発色々 • 普通のRails • Heroku上アプリ(6 dyno)• 自転車が大好き!• お酒が大好き!• 岩ガキが大好き!• 生肉が大好き!
  3. 3. 今日の内容• ZabbixでCloudFoundryのインスタンスを試し にオートスケールしてみました• 連携できるか見たかっただけでさほど突き詰 めてないですが、あまり突っ込まないでくだ さい! ×
  4. 4. オートスケール?• 負荷が高くなってきたら自動的にスケールア ウトする機構• 突然の負荷上昇に自動対応• CloudFoundryには現状ない?• サーバ側の何らかのメトリクスが閾値を超え たらスケールアウトを発動させる – レスポンスタイム – CPU、メモリ – プロセス数 – スコアボードなど
  5. 5. Zabbix• オープンソースの監視ソフト• Itemを監視しTrigger条件を満 たしたらActionを実行すると いう構造 Item Trigger Action
  6. 6. 今回やること• vmc statsのItem種別を追加する – エージェント拡張の機構を用いることでItemの種別を追加 できる• vmc instancesでスケールアウトするActionを追加する – Actionはシェルコマンドを定義できる 監視対象 メール Trigger 通知 CPU Item 条件 Action メモリItem スケール vmc stats Trigger アウト Item 条件 Action
  7. 7. vmc stats?• vmc statsで該当アプリケーションのリソース状況を取得できる$ vmc stats xxx+----------+-------------+----------------+--------------+----------------+| Instance | CPU (Cores) | Memory (limit) | Disk (limit) | Uptime |+----------+-------------+----------------+--------------+----------------+|0 | 0.0% (4) | 23.1M (128M) | 56.0K (2G) | 0d:18h:53m:10s ||1 | 0.0% (4) | 18.0M (128M) | 52.0K (2G) | 0d:17h:42m:5s |+----------+-------------+----------------+--------------+----------------+• vmcコマンドはCloudControllerのWebAPIを叩いてJSONで結果受け取り[{:state=>:RUNNING, :stats=>{:name=>“xxx", :host=>"172.30.49.137", :port=>40538, :uris=>[“xxx.cloudfoundry.co m"], :uptime=>71329.371288281, :mem_quota=>134217728, :disk_quota=>2147483648, :fds_quota=>256, :cores =>4, :usage=>{:time=>"2012-08-23 02:40:58 +0000", :cpu=>0.0, :mem=>23660.0, :disk=>57344}}, :instance=>0}, {:state=>:RUNNING, :stats=>{:name=>"s houtahello", :host=>"172.30.50.23", :port=>28052, :uris=>["shoutahello.cloudfoundry.com"], :uptime=>67064. 368383474, :mem_quota=>134217728, :disk_quota=>2147483648, :fds_quota=>256, :cores=>4, :usage=>{:time= >"2012-08-23 02:40:57 +0000", :cpu=>0.0, :mem=>18428.0, :disk=>53248}}, :instance=>1}]
  8. 8. vmc stats 用Item種別追加■API叩く簡単な自作スクリプト ■Item種別の追加#vmc_stats.rb #/etc/zabbix/zabbix-agentd.confに追記するrequire cliopt = { :target => api.cloudfoundry.com, UserParameter=cloudfoundry.vmc.stats,ruby :email => xxxx@example.com, /home/zabbix/vmc_stats.rb :password => xxxx, :appname => xxxx}client = VMC::Client.new(opt[:target], nil)token = client.login(opt[:email], opt[:password])stats = client.app_stats(opt[:appname]) ※vmcコマンド直接ではなくvmc内部のsum = 0.0 クラスを利用stats.each do |stat| →コマンドはログイン情報をファイルに sum += stat[:stats][:usage][:cpu].to_f 保持するため、複数のcloudfoundryアカend ウントで監視したい場合などに動きがおaverage = sum / stats.length かしくなりそうだと考えたため#標準出力に数値を出力puts average
  9. 9. Itemの作成• 普通のCPU監視などと同様に、画面 からcloudfoundry.vmc.statsを指定 してItemを作成• Itemのグラフを定義するとグラフ表 示!※今回30秒毎の監視で指定
  10. 10. Trigger定義• Zabbix書式で閾値を定義
  11. 11. Action定義■スケールアウト自作スクリプト(徐々にスケールアウト)#vmc_instances.rbrequire cliopt = { :target => api.cloudfoundry.com, :email => ‘xxxx@example.com, :password => ‘xxxx, :appname => ‘xxxx}client = VMC::Client.new(opt[:target], nil)token = client.login(opt[:email], opt[:password])app = client.app_info(opt[:appname])current_instances_num = app[:instances]cmd = VMC::Cli::Command::Apps.newcmd.client(client)if current_instances_num <= 5 cmd.instances(opt[:appname], "+1")end
  12. 12. 負荷掛けてみる• Jmeterで負荷• CPUを消費するシンプルアプリ – 負荷掛けるとTrigger検知されて画面に出るrequire sinatraget / do 100000000.times{}end
  13. 13. 2500 1500 3500 500 2000 1000 3000 4000 0 1 43 85 127 169 211 253 295 337 379 421 463 505 善している 547 589 631 673 スケールアウト 715 757 799 841 883 925 9671009 10511093 1135 1177 段になっている 1219 1261 1303 134513871429 1471 1513 155515971639 1681 オートスケールしてる 1 5 2 10 Jmeter • スケールアウトが自動実行されて性能改 スレッド数リクエスト数
  14. 14. 実用するには?• vmc statsで返ってくるCPUの精度が怪しい? • 平均値を返してるのか、使用率の上下が即時反映されない?• そもそもItemはCPUでいいのか? – CPUはAPがボトルネックという切分にはなるけど… – レスポンスタイムとか • ZabbixのWeb監視で実現可能 – 同時処理中のインスタンス数とか • そもそも取れる?Routerとか持ってない? • varzの情報にもないっぽい? – 複合条件 • ZabbixのTriggerで定義可能• 歯止めの対応 – 連続で高負荷検知の場合スケールアウトとか • ZabbixのTriggerで定義可能• スケールインの対応 • ZabbixのTriggerで定義可能
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×