Top Banner
30days Albumの裏側 ~監視・インフラCI事情~ Monitoring Casual #7 http://www.zusaar.com/event/9807003 OKUMURA Takahiro
45

30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

Jul 16, 2015

Download

Internet

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

30days Albumの裏側!~監視・インフラCI事情~

Monitoring Casual #7 http://www.zusaar.com/event/9807003

!

OKUMURA Takahiro

Page 2: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

OKUMURA Takahiro!

@hfm @tacahilo!

2013年ペパボ新卒入社の2年目インフラエンジニア

dvorak-jp配列の愛用者です

Page 3: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual
Page 4: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual
Page 5: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual
Page 6: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual
Page 7: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

容量 603,966.837GBぐらい

オブジェクト数 1,858,383,772!レプリカ含むと1.x倍

Page 8: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

30days Albumの裏側インフラ

Page 9: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

30days Albumの裏側見てる人たち

@hfm

@tnmt

@lamanotrama

@pbmasaki

インフラ

Page 10: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

監視普通の

Page 11: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

nagios

Page 12: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

munin

Page 13: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

最初は普通の白いmunin 2.0でした!(daysのスクショが無かったので別サービスので代用)

Page 14: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

kibanaみたいな色にしたい。

Page 15: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

  *'``・* 。   |     `*。 ,。∩      *  system perlの + (´・ω・`) *。+゚  モジュールを `*。 ヽ、  つ *゚*   ごにょごにょ~  `・+。*・' ゚⊃ +゚  ☆   ∪~ 。*゚   `・+。*・ ゚

Page 16: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

これはもうmunin3.0といってもいいんではないだろうか。

Page 17: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

遠くの街が戦火に包まれているようなグラフだ。

地獄のグラフ

燃えてるのうちのサーバやで

関係者の声

Page 18: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

変更の一部--- /usr/lib/perl5/vendor_perl/5.8.8/Munin/Master/GraphOld.pm.orig 2014-03-29 09:26:42.000000000 +0900 +++ /usr/lib/perl5/vendor_perl/5.8.8/Munin/Master/GraphOld.pm 2014-06-09 21:23:19.000000000 +0900 @@ -1677,15 +1677,15 @@ } else { # At least 1.3 @options = ( - '--font', 'DEFAULT:0:DejaVuSans,DejaVu Sans,DejaVu LGC Sans,Bitstream Vera Sans', - '--font', 'LEGEND:7:DejaVuSansMono,DejaVu Sans Mono,DejaVu LGC Sans Mono,Bitstream Vera Sans Mono,monospace', - # Colors coordinated with CSS. - '--color', 'BACK#F0F0F0', # Area around the graph - '--color', 'FRAME#F0F0F0', # Line around legend spot - '--color', 'CANVAS#FFFFFF', # Graph background, max contrast - '--color', 'FONT#666666', # Some kind of gray - '--color', 'AXIS#CFD6F8', # And axis like html boxes - '--color', 'ARROW#CFD6F8', # And arrow, ditto. + '--font', 'DEFAULT:0:Helvetica Neue,DejaVuSans,DejaVu Sans,DejaVu LGC Sans,Bitstream Vera Sans', + '--font', 'LEGEND:7:Helvetica Neue,DejaVuSansMono,DejaVu Sans Mono,DejaVu LGC Sans Mono,Bitstream Vera Sans Mono,monospace', + '--color', 'FONT#EEEEEE', + '--color', 'ARROW#3D3D3D', + '--color', 'AXIS#3D3D3D', + '--color', 'BACK#1F1F1F', + '--color', 'CANVAS#1F1F1F', + '--color', 'SHADEA#1F1F1F', + '--color', 'SHADEB#1F1F1F', ); }

Page 19: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

変更の一部--- /usr/lib/perl5/vendor_perl/5.8.8/Munin/Master/GraphOld.pm.orig 2014-03-29 09:26:42.000000000 +0900 +++ /usr/lib/perl5/vendor_perl/5.8.8/Munin/Master/GraphOld.pm 2014-06-09 21:23:19.000000000 +0900 @@ -1677,15 +1677,15 @@ } else { # At least 1.3 @options = ( - '--font', 'DEFAULT:0:DejaVuSans,DejaVu Sans,DejaVu LGC Sans,Bitstream Vera Sans', - '--font', 'LEGEND:7:DejaVuSansMono,DejaVu Sans Mono,DejaVu LGC Sans Mono,Bitstream Vera Sans Mono,monospace', - # Colors coordinated with CSS. - '--color', 'BACK#F0F0F0', # Area around the graph - '--color', 'FRAME#F0F0F0', # Line around legend spot - '--color', 'CANVAS#FFFFFF', # Graph background, max contrast - '--color', 'FONT#666666', # Some kind of gray - '--color', 'AXIS#CFD6F8', # And axis like html boxes - '--color', 'ARROW#CFD6F8', # And arrow, ditto. + '--font', 'DEFAULT:0:Helvetica Neue,DejaVuSans,DejaVu Sans,DejaVu LGC Sans,Bitstream Vera Sans', + '--font', 'LEGEND:7:Helvetica Neue,DejaVuSansMono,DejaVu Sans Mono,DejaVu LGC Sans Mono,Bitstream Vera Sans Mono,monospace', + '--color', 'FONT#EEEEEE', + '--color', 'ARROW#3D3D3D', + '--color', 'AXIS#3D3D3D', + '--color', 'BACK#1F1F1F', + '--color', 'CANVAS#1F1F1F', + '--color', 'SHADEA#1F1F1F', + '--color', 'SHADEB#1F1F1F', ); }

他にも /etc/munin/static/style.css とかhtmlも変更入ってるんですが,全部追い切れず

Page 20: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

変更の一部--- /usr/lib/perl5/vendor_perl/5.8.8/Munin/Master/GraphOld.pm.orig 2014-03-29 09:26:42.000000000 +0900 +++ /usr/lib/perl5/vendor_perl/5.8.8/Munin/Master/GraphOld.pm 2014-06-09 21:23:19.000000000 +0900 @@ -1677,15 +1677,15 @@ } else { # At least 1.3 @options = ( - '--font', 'DEFAULT:0:DejaVuSans,DejaVu Sans,DejaVu LGC Sans,Bitstream Vera Sans', - '--font', 'LEGEND:7:DejaVuSansMono,DejaVu Sans Mono,DejaVu LGC Sans Mono,Bitstream Vera Sans Mono,monospace', - # Colors coordinated with CSS. - '--color', 'BACK#F0F0F0', # Area around the graph - '--color', 'FRAME#F0F0F0', # Line around legend spot - '--color', 'CANVAS#FFFFFF', # Graph background, max contrast - '--color', 'FONT#666666', # Some kind of gray - '--color', 'AXIS#CFD6F8', # And axis like html boxes - '--color', 'ARROW#CFD6F8', # And arrow, ditto. + '--font', 'DEFAULT:0:Helvetica Neue,DejaVuSans,DejaVu Sans,DejaVu LGC Sans,Bitstream Vera Sans', + '--font', 'LEGEND:7:Helvetica Neue,DejaVuSansMono,DejaVu Sans Mono,DejaVu LGC Sans Mono,Bitstream Vera Sans Mono,monospace', + '--color', 'FONT#EEEEEE', + '--color', 'ARROW#3D3D3D', + '--color', 'AXIS#3D3D3D', + '--color', 'BACK#1F1F1F', + '--color', 'CANVAS#1F1F1F', + '--color', 'SHADEA#1F1F1F', + '--color', 'SHADEB#1F1F1F', ); }

まあもし壊れても白いmuninに戻せるし別にいいか…

Page 21: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

consulとかsensuは?

• nagiosで十分安定稼働している実績があるし,これで十分

• consul-alertはカッコいいけど,オンプレでサーバ増減の少ない環境だと旨味が少ない

Page 22: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

consulとかsensuは?

• sensu (というかRabbit MQ) はハマるからしんどい

• sensu-puppetがイマイチ (触った頃はあまり成熟してなかった)

• トラブルの原因は大抵Rabbit MQやRedisで,sensuの構成要素に対する学習コストが高いのでは?という印象

Page 23: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

インフラCIごめんなさい!

未完成!

Page 24: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

UkigumoServerspec Docker

Page 25: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

なぜインフラCI?たぶん普通の理由

Page 26: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

daysのインフラに変更があると…1. Vagrant (&VirtualBox) でVMを起動

2. Puppet で provisioning

3. Serverspecでテスト

4. PullRequestでレビュー

5. 本番環境へDeploy

Page 27: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

時間かかる1. Vagrant (&VirtualBox) でVMを起動

2. Puppet で provisioning

3. Serverspecでテスト

4. PullRequestでレビュー

5. 本番環境へDeploy

←重い!

←めんどくさい!

←めんどくさい!

←しょうがない!

←しょうがない

Page 28: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

時間かかる1. Vagrant (&VirtualBox) でVMを起動

2. Puppet で provisioning

3. Serverspecでテスト

4. PullRequestでレビュー

5. 本番環境へDeploy

←重い!

←めんどくさい!

←めんどくさい!

←しょうがない!

←しょうがない

ここをなんとかしたい=> CIしよう

Page 29: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

なぜDocker?

Page 30: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

最初はVirtualBoxも検討しました

• Vagrant & VirtualBoxを使ってるなら,CI環境もそれに合わせたい

• 社内にはMaglicaというInternal Cloud (VM) 環境がある

• VM上にCI環境を構築したい,が…

Page 31: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

【資料】Maglica

http://www.slideshare.net/mizzy/maglica-techkayac https://github.com/mizzy/maglica

Page 32: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

インフラCIをする上での課題母艦!

(Maglica)

VM VM VM •••

VM上でVirtualBoxを起動できない!! (VT-xが動かないとかエラーが出る)=> Vagrant & VirtualBox なCIはキツそう

Page 33: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

そうだDockerを使おう

• VM on VMは厳しい(vagrant-kvmとかあるけど…)

• Dockerはいくつかサービスが動かないけど,妥協点としては上々

Page 34: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

なぜUkigumo?

Page 35: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

なぜUkigumo?

• Jenkinsを愛せなかった

• Dockerさえ動けばいいのでJenkinsのような分厚さは不要

• (Ukigumoちゃん可愛い)

Page 36: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

UkigumoでCIする• CIサービス自体への依存を極力減らす

• Jenkinsの環境変数や,CIから与えられるパラメータを使わない

• シェルスクリプト1枚でCI出来るようにする

• UkigumoはTravis-CIみたいにyamlで実行内容を記述出来るけど,あくまでスクリプトを呼び出すだけに留める

Page 37: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

ざっくりインフラCIフロー

UkigumoServerspec Docker

Page 38: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

push

Page 39: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

web hook

Page 40: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

pull

Page 41: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

Puppet provision & Serverspec

Container

Page 42: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

push

web hook & pull

Puppet provision & Serverspec

Container

Page 43: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

未完成?

• 環境自体は完成,Ukigumoちゃんは動いてる

• しかしDockerの設定にハマって,十分なCIが出来ていない

• コンテナ内でeth1 (lan) を付けるのがしんどかったり起動しないサービスのためにprovisioningの条件分岐を考えたり…

Page 44: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

今後の展開予定1. まずDockerの設定でハマりまくってるのでなんとかする

2. Infratasterで振る舞いテストも導入する

3. CI作った環境の作り方をGitHubとかで公開する

• UkigumoちゃんをItamaeでポンと作れるようにしました

Page 45: 30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

ご清聴ありがとうございました色々間に合ってなくてすいません…