Slide 1

Slide 1 text

Monitorel Web API for server resource graph Kyoto.pm 5 Tech Talk

Slide 2

Slide 2 text

HatenaJEZ@VVLJ Twitter!Z@VVL CPAN:66,* ͸ͯͳΞϧόΠλʔ !γεςϜϓϥοτϑΥʔϜ෦ ೥ʹ͓͍ͯ৽͘͠ 1FSMΛษڧ͠Α͏ͱ͢Δ ෺޷͖ͳϫΧϞϊ

Slide 3

Slide 3 text

Perl CPAN WebService::Qiita RRDTool::Rawish Plack::Middleware::GitStatus Net::Signalet vim-plugin unite-perl-module.vim perl-local-lib-path.vim

Slide 4

Slide 4 text

ἤΒΕΔKyoto.pm

Slide 5

Slide 5 text

ࠓ೔ͷ͓࿩ αʔόϦιʔεՄࢹԽ ͭͬͨ͘΍ͭ ( Monitorel ) αʔόϦιʔεΛάϥϑԽ͢ΔͨΊͷAPI

Slide 6

Slide 6 text

αʔόϦιʔε ҎԼͷΑ͏ʹ࣌ؒมԽ͢Δ΋ͷΛɹɹɹɹɹ αʔόϦιʔεͱ͢Δ OS͔ΒͱΕΔ΍ͭ(load averageͱ͔CPU usage) ϛυϧ΢ΣΞ͔ΒͱΕΔ΍ͭ( MySQLͩͱ Connections, Qcache_hits, Slow queries) 1ݸ1ݸͷ஋ΛϝτϦΫεͱ͢Δ ࣌ؒมԽ͠ͳ͍΋ͷΛϗετ৘ใͱ͢Δ IPΞυϨε, MACΞυϨε, ϚγϯεϖοΫͳͲ

Slide 7

Slide 7 text

αʔόϦιʔεՄࢹԽ Munin Cacti Zabbix Ganglia collectd etc...

Slide 8

Slide 8 text

Muninʢྫʣ

Slide 9

Slide 9 text

ࣾ಺޲͚ʹΧελϚΠζͨ͠Γ͢Δ ίʔυʹखΛೖΕΔͷ͕೉͍͠ɹ ʢ○○ݴޠͱ͔͞ΘΕͳ͍ʣɹɹɹɹɹ ʢόʔδϣϯΞοϓʹ௥ै͢Δͷ͕ ೉͍͠ʣ

Slide 10

Slide 10 text

ϑϧεΫϥον? http:/ /anond.hatelabo.jp/20120313004820

Slide 11

Slide 11 text

αʔόϦιʔε؅ཧπʔϧߏ੒ཁૉ Server Server αʔόϦιʔε Λ؅ཧ͢ΔԿ͔ Web UI ϗετ৘ใ؅ཧ ͷͨΊͷDB Server Server ϗετͷIPΞυϨε, MACΞυϨε, ϚγϯεϖοΫ, ϥοΫ൪߸ Graph image ϝτϦΫε

Slide 12

Slide 12 text

UIΛ࢖͍΍͍ͨ͘͢͠ ϗετͷσʔλͷ࣋ͪํΛม͍͑ͨ ͚ͩͳͷʹ ϝτϦΫεͷऔಘɾอଘɾάϥϑԽͱ͔ ͷγεςϜ·Ͱ࡞Δͷ͸ͪΐͬͱ...

Slide 13

Slide 13 text

αʔόϦιʔε؅ཧ͚ͩ΍ͬͯ͘ΕΔɹ ൚༻తͳπʔϧ ͕͋Ε͹͍͍ͷͰ͸

Slide 14

Slide 14 text

Monitorel Proof of Concept

Slide 15

Slide 15 text

Architecture Server Server Server ɾ ɾ ɾ Monitorel Web UI HTTP request Graph image SNMP, HTTP, Telnet... DB (Hosts)

Slide 16

Slide 16 text

Architecture Server Server Server ɾ ɾ ɾ Monitorel API Job Queue Web UI DB (Hosts) HTTP request Graph image Round Robin Database Graph image SNMP, HTTP, Telnet... rrd graph cron enqueue hosts list HTTP or SQL request enqueue job update metrics Monitorel

Slide 17

Slide 17 text

ࢥ૝ αʔόϦιʔεऔಘɾอଘɾάϥϑԽ͚ͩ΍Δ Web UIͱMonitorel͸HTTPͰ͠Ό΂Δ Web UIͷ࣮૷ݴޠ͸ͳΜͰ΋Α͍ Web UIʹ͸ؔ༩͠ͳ͍ ϗετ৘ใͷ࣋ͪํʹ͸ؔ༩͠ͳ͍ ϗετ৘ใΛ؅ཧ͢ΔDB͸Ϣʔβ͕ͭ͘Δ

Slide 18

Slide 18 text

Architecture Server Server Server ɾ ɾ ɾ Monitorel API Job Queue Web UI DB (Servers) HTTP request Graph image Round Robin Database Graph image SNMP, HTTP, Telnet... rrd graph cron enqueue hosts list HTTP or SQL enqueue job update metrics Interface

Slide 19

Slide 19 text

Monitorel *OUFSGBDF Web UI - Monitorel API HTTPͰૄ݁߹ʹ͢Δ Applicationͷ࣮૷ݴޠ͸RubyͰ΋ͳΜͰ΋Α͍ cron enqueue - Job Queue DB(Hosts)Ͱ؅ཧ͞Ε͍ͯΔϗετ਺෼ͷɹ δϣϒΛQueueʹ౤͛Δ ఆظతʹcronͰ࣮ߦ HTTPͰδϣϒΛinsertͰ͖ΔΑ͏ʹ͍ͨ͠

Slide 20

Slide 20 text

Architecture Server Server Server ɾ ɾ ɾ Monitorel Web API Job Queue Web UI DB (Hosts) HTTP request Graph image Round Robin Database Graph image SNMP, HTTP, Telnet... rrd graph cron enqueue hosts list HTTP or SQL enqueue job update metrics

Slide 21

Slide 21 text

Web API άϥϑͷϦΫΤετΛड͚෇͚ͯάϥϑը૾Λฦ͢ ͚ͩ ϦΫΤετύϥϝʔλʢͲͷϗετͷͲͷϝτϦ Ϋε͔, ظؒͳͲʣΛύʔε͢Δ Round Robin Databaseʹ໰͍߹Θͤͯάϥϑը૾ Խ

Slide 22

Slide 22 text

Architecture Server Server Server ɾ ɾ ɾ Web API Job Queue Web UI DB (Servers) HTTP request Graph image Round Robin Database Graph image SNMP, HTTP, Telnet... rrd graph cron enqueue hosts list HTTP or SQL enqueue job update metrics

Slide 23

Slide 23 text

Job Queue ͳͥJob Queue ͔ ඞͣ͠΋Job QueueͰ͋Δඞཁ͸ͳ͍ αʔόʹର͢ΔωοτϫʔΫI/O଴͕ͪൃੜ͢Δ ͨΊɼඇಉظͰ΍Γ͍ͨ Job QueueΛ࢖ͬͨେྔͷλεΫ؅ཧͷϊ΢ϋ΢ ͕͋Δ ϚϧνϓϩηεͰৗற͢ΔσΟεύονϟͱҰॹʹ ࢖͏ Parallel::PreforkͰ֤ϓϩηε͕ͦΕͧΕJobΛσΟ εύον SFGIUUQCMPHQPSHFOUSZ

Slide 24

Slide 24 text

Agent JobͷҰ෦ ϦϞʔταʔό͔ΒϝτϦΫεΛͱͬͯ͘Δ΍ͭ ରԠϛυϧ΢ΣΞɼϓϩτίϧ Apache, Nginx, MySQL, Munin, Latency, Plack, Perlbal, Redis, SNMP, TheSchwartz ϓϥΨϒϧ Monitorel::Worker::Agent::Something SNMP΍HTTP, TelnetͰϝτϦΫεऔಘ

Slide 25

Slide 25 text

Architecture Server Server Server ɾ ɾ ɾ Web API Job Queue Web UI DB (Servers) HTTP request Graph image Round Robin Database Graph image SNMP, HTTP, Telnet... rrd graph cron enqueue hosts list HTTP or SQL enqueue job update metrics

Slide 26

Slide 26 text

RRDtool

Slide 27

Slide 27 text

RRDTool RRD (Round Robin Database) ࣌ܥྻσʔλΛ֨ೲ͢ΔͨΊͷσʔλϑΥʔϚοτ อଘظؒΛݻఆͯ͠ݹ͍஋͸ࣺ͍ͯͯ͘ RRDtool RRDͷ࣮૷ʢσϑΝΫτελϯμʔυʣ RRDͷ࡞੒ɾߋ৽ɾࢀরػೳͱάϥϑԽػೳΛ΋ͭ I/O͕΍ͨΒ଎͍(Β͍͠) େ఍ͷαʔό؅ཧπʔϧͰ࢖ΘΕ͍ͯΔ

Slide 28

Slide 28 text

CPAN Modules Web API Amon2 RRDTool Wrapper RRDTool::Rawish Job Queue TheSchwartz or Qudo, Parallel::Prefork Agent IO::Socket::INET, Net::SNMP, Net::Telnet

Slide 29

Slide 29 text

Demo

Slide 30

Slide 30 text

TODO RRDtool͔Βͷ୤٫ʢRedisʣ ը૾Ͱ͸ͳ͘ϝτϦΫεΛJSONͰฦͯ͠JS Ͱάϥϑඳը AgentʹJVM, Solr, MongoDB, LVS,..., ͳͲ௥Ճ

Slide 31

Slide 31 text

Monitorel (POC) IUUQTHJUIVCDPNZVVLJ.POJUPSFM