slackboard
• A slack proxy server in Go
• https://github.com/cubicdaiya/slackboard
• ߏϓϩάϥϜ
• slackboardʙSlackϓϩΩγαʔόʙ
• slackboard-cliʙΫϥΠΞϯτ for slackboardʙ
• slackboard-logʙΫϥΠΞϯτ like cronlogʙ
"1* "QBDIFNPE@QIQ
θϩμϯλΠϜσϓϩΠ
"1* "QBDIFNPE@QIQ
ChatOps with Slack
yes
EFQMPZCPU
OHJOY
OHY@EZOBNJD@VQTUSFBN
OHJOY
OHY@EZOBNJD@VQTUSFBN
OHJOY
OHY@EZOBNJD@VQTUSFBN
"1* "QBDIFNPE@QIQ
※rsync
※ rsync ——rsync-path=mercari_app_rsync(↓)
#!/bin/sh
mercari_app_ctl down # deactivate server on nginx upstream
rsync $* # deploy
mercari_app_ctl up # activate server on nginx upstream
Slide 47
Slide 47 text
"1* "QBDIFNPE@QIQ
θϩμϯλΠϜσϓϩΠ
"1* "QBDIFNPE@QIQ
ChatOps with Slack
yes
EFQMPZCPU
OHJOY
OHY@EZOBNJD@VQTUSFBN
OHJOY
OHY@EZOBNJD@VQTUSFBN
OHJOY
OHY@EZOBNJD@VQTUSFBN
"1* "QBDIFNPE@QIQ
※rsync
※ rsync ——rsync-path=mercari_app_rsync(↓)
#!/bin/sh
mercari_app_ctl down # deactivate server on nginx upstream
rsync $* # deploy
mercari_app_ctl up # activate server on nginx upstream
Slide 48
Slide 48 text
θϩμϯλΠϜσϓϩΠ
"1* "QBDIFNPE@QIQ
ChatOps with Slack
yes
EFQMPZCPU
OHJOY
OHY@EZOBNJD@VQTUSFBN
OHJOY
OHY@EZOBNJD@VQTUSFBN
OHJOY
OHY@EZOBNJD@VQTUSFBN
"1* "QBDIFNPE@QIQ
※ rsync ——rsync-path=mercari_app_rsync(↓)
#!/bin/sh
mercari_app_ctl down # deactivate server on nginx upstream
rsync $* # deploy
mercari_app_ctl up # activate server on nginx upstream
down
"1* "QBDIFNPE@QIQ
Slide 49
Slide 49 text
"1* "QBDIFNPE@QIQ
θϩμϯλΠϜσϓϩΠ
"1* "QBDIFNPE@QIQ
ChatOps with Slack
yes
EFQMPZCPU
OHJOY
OHY@EZOBNJD@VQTUSFBN
OHJOY
OHY@EZOBNJD@VQTUSFBN
OHJOY
OHY@EZOBNJD@VQTUSFBN
"1* "QBDIFNPE@QIQ
rsync
※ rsync ——rsync-path=mercari_app_rsync(↓)
#!/bin/sh
mercari_app_ctl down # deactivate server on nginx upstream
rsync $* # deploy
mercari_app_ctl up # activate server on nginx upstream
Slide 50
Slide 50 text
θϩμϯλΠϜσϓϩΠ
"1* "QBDIFNPE@QIQ
ChatOps with Slack
yes
EFQMPZCPU
OHJOY
OHY@EZOBNJD@VQTUSFBN
OHJOY
OHY@EZOBNJD@VQTUSFBN
OHJOY
OHY@EZOBNJD@VQTUSFBN
"1* "QBDIFNPE@QIQ
※ rsync ——rsync-path=mercari_app_rsync(↓)
#!/bin/sh
mercari_app_ctl down # deactivate server on nginx upstream
rsync $* # deploy
mercari_app_ctl up # activate server on nginx upstream
up
"1* "QBDIFNPE@QIQ
Slide 51
Slide 51 text
"1* "QBDIFNPE@QIQ
θϩμϯλΠϜσϓϩΠ
"1* "QBDIFNPE@QIQ
ChatOps with Slack
yes
EFQMPZCPU
OHJOY
OHY@EZOBNJD@VQTUSFBN
OHJOY
OHY@EZOBNJD@VQTUSFBN
OHJOY
OHY@EZOBNJD@VQTUSFBN
"1* "QBDIFNPE@QIQ
※rsync
※ rsync ——rsync-path=mercari_app_rsync(↓)
#!/bin/sh
mercari_app_ctl down # deactivate server on nginx upstream
rsync $* # deploy
mercari_app_ctl up # activate server on nginx upstream
Slide 52
Slide 52 text
θϩμϯλΠϜσϓϩΠ
"1* "QBDIFNPE@QIQ
ChatOps with Slack
yes
EFQMPZCPU
OHJOY
OHY@EZOBNJD@VQTUSFBN
OHJOY
OHY@EZOBNJD@VQTUSFBN
OHJOY
OHY@EZOBNJD@VQTUSFBN
※ rsync ——rsync-path=mercari_app_rsync(↓)
#!/bin/sh
mercari_app_ctl down # deactivate server on nginx upstream
rsync $* # deploy
mercari_app_ctl up # activate server on nginx upstream
down
"1* "QBDIFNPE@QIQ
"1* "QBDIFNPE@QIQ
Slide 53
Slide 53 text
"1* "QBDIFNPE@QIQ
θϩμϯλΠϜσϓϩΠ
"1* "QBDIFNPE@QIQ
ChatOps with Slack
yes
EFQMPZCPU
OHJOY
OHY@EZOBNJD@VQTUSFBN
OHJOY
OHY@EZOBNJD@VQTUSFBN
OHJOY
OHY@EZOBNJD@VQTUSFBN
"1* "QBDIFNPE@QIQ
rsync
※ rsync ——rsync-path=mercari_app_rsync(↓)
#!/bin/sh
mercari_app_ctl down # deactivate server on nginx upstream
rsync $* # deploy
mercari_app_ctl up # activate server on nginx upstream
Slide 54
Slide 54 text
θϩμϯλΠϜσϓϩΠ
"1* "QBDIFNPE@QIQ
ChatOps with Slack
yes
EFQMPZCPU
OHJOY
OHY@EZOBNJD@VQTUSFBN
OHJOY
OHY@EZOBNJD@VQTUSFBN
OHJOY
OHY@EZOBNJD@VQTUSFBN
※ rsync ——rsync-path=mercari_app_rsync(↓)
#!/bin/sh
mercari_app_ctl down # deactivate server on nginx upstream
rsync $* # deploy
mercari_app_ctl up # activate server on nginx upstream
up
"1* "QBDIFNPE@QIQ
"1* "QBDIFNPE@QIQ
Slide 55
Slide 55 text
"1* "QBDIFNPE@QIQ
θϩμϯλΠϜσϓϩΠ
"1* "QBDIFNPE@QIQ
ChatOps with Slack
yes
OHJOY
OHY@EZOBNJD@VQTUSFBN
OHJOY
OHY@EZOBNJD@VQTUSFBN
OHJOY
OHY@EZOBNJD@VQTUSFBN
"1* "QBDIFNPE@QIQ
※rsync
※ rsync ——rsync-path=mercari_app_rsync(↓)
#!/bin/sh
mercari_app_ctl down # deactivate server on nginx upstream
rsync $* # deploy
mercari_app_ctl up # activate server on nginx upstream
EFQMPZCPU
Slide 56
Slide 56 text
θϩμϯλΠϜσϓϩΠ
ChatOps with Slack
yes
EFQMPZCPU
OHJOY
OHY@EZOBNJD@VQTUSFBN
OHJOY
OHY@EZOBNJD@VQTUSFBN
OHJOY
OHY@EZOBNJD@VQTUSFBN
※ rsync ——rsync-path=mercari_app_rsync(↓)
#!/bin/sh
mercari_app_ctl down # deactivate server on nginx upstream
rsync $* # deploy
mercari_app_ctl up # activate server on nginx upstream
down
"1* "QBDIFNPE@QIQ
"1* "QBDIFNPE@QIQ
"1* "QBDIFNPE@QIQ
Slide 57
Slide 57 text
"1* "QBDIFNPE@QIQ
θϩμϯλΠϜσϓϩΠ
"1* "QBDIFNPE@QIQ
ChatOps with Slack
yes
OHJOY
OHY@EZOBNJD@VQTUSFBN
OHJOY
OHY@EZOBNJD@VQTUSFBN
OHJOY
OHY@EZOBNJD@VQTUSFBN
"1* "QBDIFNPE@QIQ
rsync
※ rsync ——rsync-path=mercari_app_rsync(↓)
#!/bin/sh
mercari_app_ctl down # deactivate server on nginx upstream
rsync $* # deploy
mercari_app_ctl up # activate server on nginx upstream
EFQMPZCPU
Slide 58
Slide 58 text
θϩμϯλΠϜσϓϩΠ
ChatOps with Slack
yes
EFQMPZCPU
OHJOY
OHY@EZOBNJD@VQTUSFBN
OHJOY
OHY@EZOBNJD@VQTUSFBN
OHJOY
OHY@EZOBNJD@VQTUSFBN
※ rsync ——rsync-path=mercari_app_rsync(↓)
#!/bin/sh
mercari_app_ctl down # deactivate server on nginx upstream
rsync $* # deploy
mercari_app_ctl up # activate server on nginx upstream
up
"1* "QBDIFNPE@QIQ
"1* "QBDIFNPE@QIQ
"1* "QBDIFNPE@QIQ
Slide 59
Slide 59 text
ϓογϡ௨ج൫
Slide 60
Slide 60 text
1લ
Slide 61
Slide 61 text
લ
Slide 62
Slide 62 text
ݱࡏ
Slide 63
Slide 63 text
Gaurun
• A general push notification server in Go
• https://github.com/mercari/gaurun
• APNSGCMͷϓογϡ௨ϦΫΤετΛϓϩΩγ
• Q4M+php-Parallel-Preforkͩͱੑೳग़ͳ͔ͬͨͷͰ
ϑϧεΫϥονͰॻ͍ͨ
• ଞͷδϣϒϫʔΧʔͷҰ෦GoͰϦϥΠτத
Mercari\DataTrack
• Various purpose logging framework for PHP
• αʔόαΠυͰى͜ΔΠϕϯτΛॊೈʹϩΪϯά
• ϝʔϧɺϓογϡͷૹ৴
• A/Bςετ
• Πϕϯτͷܦա
• Pascal(ޙड़)ͱૄʹ࿈ܞ
Slide 68
Slide 68 text
/PSJLSB
ϩάσʔλసૹ
ఆظతͳΠϕϯτͷऔಘ
3ඵຖ
type norikra
norikra norikra-server:26571
target_string access_log
type norikra
norikra localhost:26571
method sweep
target target_name
tag query_name
tag_prefix norikra.query
interval 3s
SQLΛొ
/**
* access.log͔ΒHTTPεςʔλείʔυͷׂ߹(1ؒ)Λूܭ
*/
SELECT
COUNT(1, status like "5%")/COUNT(1)*100 AS rate_5xx,
COUNT(1, status like "4%")/COUNT(1)*100 AS rate_4xx,
COUNT(1, status like "3%")/COUNT(1)*100 AS rate_3xx,
COUNT(1, status like "2%")/COUNT(1)*100 AS rate_2xx
FROM access_log.win:time_batch(1 min)
NorikraʹΑΔϩάετϦʔϛϯάॲཧ