Slide 1

Slide 1 text

Mackerel ! - Current Status - 2014-09-24 Hatena Co., Ltd. @stanaka

Slide 2

Slide 2 text

Mackerel https://mackerel.io/

Slide 3

Slide 3 text

ΞδΣϯμ • Mackerel Overview & Update • Mackerel ਖ਼ࣜԽͱࠓޙͷ༧ఆ

Slide 4

Slide 4 text

1 Mackerel Overview & Update

Slide 5

Slide 5 text

Mackerelʢ೔ຊޠͰḉʣ • αʔό؅ཧπʔϧ as a Service • લ਎: ͸ͯͳͷࣾ಺πʔϧ

Slide 6

Slide 6 text

Mackerelͷಛ௃ • ؆୯ηοτΞοϓ • 1୆Ͱ΋਺ඦ୆Ͱ΋ศརʹ • ༷ʑͳ࣌ܥྻσʔλΛՄࢹԽɾ؂ࢹ • ֤छπʔϧͱͷڧྗͳ࿈ܞ

Slide 7

Slide 7 text

ΞʔΩςΫνϟ

Slide 8

Slide 8 text

Mackerelͷಛ௃ • ؆୯ηοτΞοϓ • 1୆Ͱ΋਺ඦ୆Ͱ΋ศརʹ • ༷ʑͳ࣌ܥྻσʔλΛՄࢹԽɾ؂ࢹ • ֤छπʔϧͱͷڧྗͳ࿈ܞ

Slide 9

Slide 9 text

• Go Ͱॻ͔ΕͨެࣜΤʔδΣϯτ • Linux αϙʔτ (CentOS 5/6, Debian 6/7) • ϗετεϖοΫͱϝτϦοΫΛऩू mackerelio/mackerel-agent mackerel-agent

Slide 10

Slide 10 text

agent: Πϯετʔϧ mackerel.io/my/instruction-agent • yum/apt ϦϙδτϦ͔Β • tarball • go get

Slide 11

Slide 11 text

Mackerelͷಛ௃ • ؆୯ηοτΞοϓ • 1୆Ͱ΋਺ඦ୆Ͱ΋ศརʹ • ༷ʑͳ࣌ܥྻσʔλΛՄࢹԽɾ؂ࢹ • ֤छπʔϧͱͷڧྗͳ࿈ܞ

Slide 12

Slide 12 text

αʔϏεͱϩʔϧ • αʔϏε • ͞·͟·ͳϗετ͕ڠௐ • Hatena-Bookmark, Hatena-Blog, … • ϗετ܈Λ໾ׂͰ·ͱΊΔ = ϩʔϧ • app, db, … IFMQKBNBDLFSFMJPFOUSZIPXUPDSFBUFTFSWJDFTBOESPMFT

Slide 13

Slide 13 text

αʔϏε - ϩʔϧ • Hatena-Blog • app • host01, host02, … • db • memcached • Hatena-Bookmark • app • crawler

Slide 14

Slide 14 text

agent: ϩʔϧઃఆ • ઃఆ͔ΒαʔϏεɾϩʔϧΛࢦఆ • ଘࡏ͠ͳ͔ͬͨΒ࡞੒͢Δ • cookbook-mackerel-agent Ͱ΋ར༻ #  mackerel-­‐agent.conf   roles  =  [  “Mackerel:db”,  …  ]

Slide 15

Slide 15 text

ChefͰηοτΞοϓ͢Δ • cookbook-mackerel-agent • mackerelio/cookbook-mackerel-agent #  APIΩʔΛઃఆ   node.default['mackerel-­‐agent']['apikey']  =     #  αʔϏεɾϩʔϧΛࢦఆ   node.default['mackerel-­‐agent']['conf']['roles']  =  ["My-­‐Service:app",   “Another-­‐Service:db"]   #  ϓϥάΠϯΛࢦఆ   node.default['mackerel-­‐agent']['conf']['plugin.metrics.vmstat']  =  {      'command'  =>  'ruby  /etc/sensu/plugins/system/vmstat-­‐metrics.rb',   }   ! include_recipe  'mackerel-­‐agent'

Slide 16

Slide 16 text

ϗετͷϥΠϑαΠΫϧ • εςʔλεͰঢ়ଶΛ؅ཧ standby working maintenance retired ηοτΞοϓ poweroff ؂ࢹର৅ ௨஌ର৅

Slide 17

Slide 17 text

ϥΠϑαΠΫϧͱϫʔΫϑϩʔ • ϗετΛ৽ن࡞੒ • ຊ൪౤ೖɾLB૊ࠐΈ • ো֐ରԠɺ໰୊෼ੳ • ୀ໾४උ • ୀ໾ standby working maintenance retired poweroff

Slide 18

Slide 18 text

Mackerelͷಛ௃ • ؆୯ηοτΞοϓ • 1୆Ͱ΋਺ඦ୆Ͱ΋ศརʹ • ༷ʑͳ࣌ܥྻσʔλΛՄࢹԽɾ؂ࢹ • ֤छπʔϧͱͷڧྗͳ࿈ܞ

Slide 19

Slide 19 text

agent: ϝτϦοΫऩू • ϗετͷϦιʔεͷ࣌ࠁ͝ͱͷ਺஋ • ඪ४: loadavg5, cpu.*, memory.*, interface.*, disk.* • ΧελϜ: ֤छϛυϧ΢ΣΞରԠϓϥάΠϯ • αʔϏεϝτϦοΫ • Ԡ౴࣌ؒɾΤϥʔ཰ɾΞΫςΟϒϢʔβʔ਺

Slide 20

Slide 20 text

ϩʔϧຖͷάϥϑͰՄࢹԽ

Slide 21

Slide 21 text

ΩϟύγςΟϓϥϯχϯάʹ

Slide 22

Slide 22 text

ΦʔτεέʔϧରԠ • αʔό͕ॖୀͯ͠΋άϥϑ͸࢒Δ

Slide 23

Slide 23 text

agent: ΧελϜϝτϦοΫ • plugin.metrics.*.command Λهड़ # mackerel-agent.conf [plugin.metrics.my-super-metric] command = “/path/to/my-super-metric.sh” IFMQKBNBDLFSFMJPFOUSZBEWBODFEDVTUPNNFUSJDT

Slide 24

Slide 24 text

agent: ΧελϜϝτϦοΫ • Sensu ϓϥάΠϯޓ׵ͷग़ྗ
 ʢλϒ۠੾Γʣ % ~/.mackerel-agent/plugins/chrome-tabs-count.sh! browser.tabs.count 9 1403153173! browser.tabs.works 7 1403153173

Slide 25

Slide 25 text

ΧελϜϝτϦοΫͷऔಘ • mackerel-agent-plugins • MackerelͷެࣜϓϥάΠϯू •        mackerelio/mackerel-­‐agent-­‐plugins   • ࠷৽(0.4.0): apache2, memcached, mysql, nginx, plack, postgres, redis • ࣍ϦϦʔε: haproxy, jvm, squid, varnish

Slide 26

Slide 26 text

αʔϏεϝτϦοΫͷ౤ߘ • fluent-plugin-mackerel • tksmd/fluent-plugin-mackerel • ྫ: NginxͷΞΫηεϩά͔Βεςʔλείʔυ
 ͝ͱʹΧ΢ϯτ IFMQKBNBDLFSFMJPFOUSZBEWBODFEqVFOUE

Slide 27

Slide 27 text

ྫ: NginxͷΞΫηεϩά͔Β
 εςʔλείʔυ͝ͱʹΧ΢ϯτ #1 • tail plugin #  LTSVܗࣜͷϩάϑΝΠϧΛಡΈࠐΉ        type  tail      format  ltsv      time_format  %d/%b/%Y:%H:%M:%S  %z      path  /var/log/nginx/access.log      pos_file  /var/log/nginx/access_log.pos      tag  access.nginx  

Slide 28

Slide 28 text

ྫ: NginxͷΞΫηεϩά͔Β
 εςʔλείʔυ͝ͱʹΧ΢ϯτ #2 • fluent-plugin-datacounter #  fluent-­‐plugin-­‐datacounterͰεςʔλείʔυผʹूܭ͢Δ        type  datacounter      count_interval  1m      count_key  status      aggregate  all      tag  nginx.status      pattern1  2xx  ^2\d\d$      pattern2  3xx  ^3\d\d$      pattern3  4xx  ^4\d\d$      pattern4  5xx  ^5\d\d$  

Slide 29

Slide 29 text

ྫ: NginxͷΞΫηεϩά͔Β
 εςʔλείʔυ͝ͱʹΧ΢ϯτ #3 • fluent-plugin-mackerel #  fluent-­‐plugin-­‐mackerelʹΑΓαʔϏεϝτϦοΫΛ౤ߘ͢Δ        type  mackerel      api_key  <౤ߘઌΦʔΨχθʔγϣϯͷAPIΩʔ>      service  <౤ߘઌαʔϏε໊>      metrics_name  access_num.${out_key}      out_keys  2xx_count,3xx_count,4xx_count,5xx_count  

Slide 30

Slide 30 text

CloudWatch → Mackerel • fluent-plugin-cloudwatch • fluent-plugin-mackerel

Slide 31

Slide 31 text

؂ࢹ(Monitor) • ࢮ׆؂ࢹ • ϝτϦοΫ؂ࢹ • Ұఆ࣌ؒɺᮢ஋Λӽ͑ΔͱΞϥʔτ • ݱঢ়͸શϗετ(working, standby)Λର৅ IFMQKBNBDLFSFMJPFOUSZIPXUPBMFSUT

Slide 32

Slide 32 text

؂ࢹ(Monitor)ͷࠓޙ ! • ϗετ • ϩʔϧ୯Ґͷ৚݅ઃఆ(Coming Soon!) • αʔϏε • αʔϏεϝτϦοΫʹର͢Δ؂ࢹ(Coming Soon!)

Slide 33

Slide 33 text

Mackerelͷಛ௃ • ؆୯ηοτΞοϓ • 1୆Ͱ΋਺ඦ୆Ͱ΋ศརʹ • ༷ʑͳ࣌ܥྻσʔλΛՄࢹԽɾ؂ࢹ • ֤छπʔϧͱͷڧྗͳ࿈ܞ

Slide 34

Slide 34 text

Ξϥʔτͷ௨஌(νϟϯωϧ) • ϝʔϧ௨஌ • Webhook

Slide 35

Slide 35 text

Webhook HuBot࿈ܞ • HuBotͰWebhookΛड͚औΓ௨஌ ! • mackerelio/hubot-mackerel-notifier IFMQKBNBDLFSFMJPFOUSZBEWBODFEIVCPU npm  install  hubot-­‐mackerel-­‐notifier  -­‐-­‐save

Slide 36

Slide 36 text

Slack΁ͷ௚઀ͷ௨஌ • Coming Soon!!

Slide 37

Slide 37 text

mackerel-client gem rubygems.org/gems/mackerel-client hosts  =  client.get_hosts(     :service  =>  'Hatena-­‐Blog',     :roles  =>  'proxy'   )   ! client.update_host_status     host_id,  'working'  

Slide 38

Slide 38 text

mkr: CLI Mackerel Client • mkr host info --service Hatena-Blog --role proxy! • mkr host status —host-id —status working

Slide 39

Slide 39 text

Capistrano ࿈ܞ • config/deployͷMackerel APIͱͷ࿈ ܞΛهड़ → ৄࡉ͸ϔϧϓ΁ #  bundle  exec  cap  deploy:echo      *  2014-­‐09-­‐23  21:36:28  executing  `deploy:echo'      *  executing  "echo  \"Integration  Test\""          servers:  ["127.0.0.1"]          [127.0.0.1]  executing  command    **  [out  ::  127.0.0.1]  Integration  Test          command  finished  in  435ms IFMQKBNBDLFSFMJPFOUSZBEWBODFEDBQJTUSBOPY

Slide 40

Slide 40 text

2 Mackerel ਖ਼ࣜԽͱࠓޙͷ༧ఆ

Slide 41

Slide 41 text

ਖ਼ࣜԽ • ϕʔλϦϦʔε (5/8) • ඼࣭޲্ɾ҆ఆԽ(υοΫϑʔσΟϯά) • ࢖͑ΔϨϕϧ΁ػೳ։ൃ • ਖ਼ࣜϦϦʔε (9/19)

Slide 42

Slide 42 text

Pricing • Standard • 2,000ԁ/ϗετɾ݄ • ϗετ୆਺ 20+ ͰϘϦϡʔϜσΟεΧ΢ϯτ • ແྉτϥΠΞϧ͋Γ • Free • 5୆·Ͱ • දࣔظؒ(24h)ɺαʔϏεϝτϦοΫ਺ɾ؂ࢹ਺ʹ੍ݶ

Slide 43

Slide 43 text

Pricing next • ݸਓ&খن໛Ϣʔβʔ޲͚ϓϥϯΛ ݕ౼த

Slide 44

Slide 44 text

Coming Soon!! • GitHubϩάΠϯ • Monitorର৅ͷৄࡉԽ(ϩʔϧ୯Ґ) • αʔϏεϝτϦοΫͷ؂ࢹ • ΧελϜϝτϦοΫϓϥάΠϯͷॆ࣮ • Slack࿈ܞͳͲɺ௨஌ઌॆ࣮

Slide 45

Slide 45 text

Next Development • Πϕϯτ(ΞϥʔτɾσϓϩΠͳͲ) • άϥϑ্ʹϓϩοτ σϓϩΠ

Slide 46

Slide 46 text

Next Development • άϥϑվળ • ߴ଎Խɾ֎෦ష෇ɾࣗಈϦϑϨογϡ • Ξϥʔτվળ • ௨஌ઌͷॆ࣮ɾ৚݅ͷΧελϚΠζ • μογϡϘʔυΧελϚΠζ • ೚ҙͷάϥϑΛషΓ෇͚ΒΕΔΑ͏ʹ

Slide 47

Slide 47 text

ϔϧϓ help-ja.mackerel.io

Slide 48

Slide 48 text

No content

Slide 49

Slide 49 text

No content

Slide 50

Slide 50 text

mackerel.io