Slide 1

Slide 1 text

Consul KV Dashboard Monitoring Casual #7 @fujiwara

Slide 2

Slide 2 text

Chef, Serverspec, Deploy, etc... ֤ϗετͰ࣮ߦͨ݁͠ՌΛ֬ೝ͍ͨ͠΋ͷ͍Ζ͍Ζ • chef (--why-run) • serverspec • rsync -av ͷ log

Slide 3

Slide 3 text

IRCʹ௨஌͠Α͏ parallel, cap, ... ͷग़ྗ݁ՌΛ… ࣾ಺༻ nopaste-cli command $ cat foo.log | nopaste-cli -channel "hoge" -summary "foo done!" nopasteʹPOSTͱಉ࣌ʹIRCʹURL͕௨஌͞ΕΔ શ୆෼·ͱΊΔͱࣦࠞͬͯ͡ഊͨ͠ͷ͕෼͔ΓͮΒ͍ ؅ཧϗετ͔ΒpushͰͳ͍ܗଶ(consul event)Ͱ͸औಘͰ͖ͳ͍

Slide 4

Slide 4 text

֤ϗετ͔ΒͦΕͧΕIRC௨஌ ϗετ୆਺͕ൺֱతগ਺(ʙ10୆ఔ౓)ͳΒ໰୊ͳ͍ ࠓ࣌1ϗετͷੑೳ͕ߴ͍ͷͰɺͦ͜·Ͱ୆਺͸૿͑ͳ͍ ௨஌͕͏Δ͚͞Ε͹ɺࣦഊͨ͠΋ͷ͚ͩૹΕ͹ok

Slide 5

Slide 5 text

αʔϏεͷن໛֦େ ʙ50୆ͱ͔ ࣦഊ࣌ͷΈૹΔͱͯ͠΋IRCʹઇ่͕ى͖Δ Ͳ͔͜ͰҰཡͯ͠ݟ͍ͨʂ (ઌि·Ͱίί)

Slide 6

Slide 6 text

Consul KV Dashboard ͭͬͨ͘ github.com/fujiwara/consul-kv-dashboard

Slide 7

Slide 7 text

Consul KV Dashboard Consul KVS ΛσʔλετΞʹͨ͠ϦΞϧλΠϜμογϡϘʔυ Πϕϯτ಺༰Λ Consul REST API Ͱอଘ ͦΕΛ͍͍ײ͡ʹݟͤͯ͘ΕΔ wep application Go (API Server) + React.js (View) [Demo]

Slide 8

Slide 8 text

σʔλొ࿥ Consul REST APIͰ௚઀ૹΔ $ curl -X PUT -d "message" \ localhost:8500/v1/kv/dashboard/example/myhostname?flags=1422607461000

Slide 9

Slide 9 text

keyߏ଄ /v1/kv/dashboard/{category}/{nodename}? flags={timestamp * 1000 + status} • category: chef, serverspec, deploy... • nodename: ConsulͰࣝผ͍ͯ͠Δϊʔυ໊ • flags: ࣌ࠁͷunix time * 1000 + status • status: 0=success 1=warning 2=danger 3=info

Slide 10

Slide 10 text

ϦΞϧλΠϜߋ৽ͷ࣮ݱํ๏ ConsulͷϒϩοΩϯάΫΤϦΛ࢖͏ www.consul.io/docs/agent/http.html $ curl -i localhost:8500/v1/kv/dashboard/chef/myhost?recurese HTTP/1.1 200 OK Content-Type: application/json X-Consul-Index: 261975 [{"CreateIndex":261891,"ModifyIndex":261975,"LockIndex":0, "Key":"dashboard/chef/myhost","Flags":1422602855000,"Value":".....

Slide 11

Slide 11 text

ϒϩοΩϯάΫΤϦ Ϩεϙϯεϔομͷ X-Consul-Index Λ index ʹࢦఆ͢Δ $ curl -i localhost:8500/v1/kv/dashboard/chef/myhost?index=261975 indexΑΓ৽͍͠σʔλ͕ൃੜ͢Δ·ͰϨεϙϯε͕஗Ԇ ৽͍͠σʔλ͕ൃੜ͢ΔͱϨεϙϯε͕ฦΔ ͍ΘΏΔ Long pooling

Slide 12

Slide 12 text

consul-kv-dashboard ͕΍Δ͜ͱ HTML, CSS, JavaScriptΛ഑෍ • go-bindataͰ·ͱΊͨϑΝΠϧΛhttp.FileServerͰ഑৴͢Δ qiita.com/sfujiwara/items/b84cc2a7b326b04e0edb • όΠφϦҰݸͰ੩తϑΝΠϧ΋഑৴Ͱ͖Δ

Slide 13

Slide 13 text

consul-kv-dashboard ͕΍Δ͜ͱ Consul REST API ΁ͷ proxy • /api/... → localhost:8500/v1/kv/dashboard/... • ϨεϙϯεͷJSONΛΫϥΠΞϯτ͕ѻ͍΍͍͢Α͏ʹ੔ܗ • {"Flags":1422608524001} → {"timestamp":"2015-01-30 18:02:04 +0900","status":"warning"} View ͸ React.js

Slide 14

Slide 14 text

ࠓޙ શମͷstatus͕มԽͨ͠ΒτϦΨʔ(֎෦ίϚϯυ࣮ߦͱ͔