$30 off During Our Annual Pro Sale. View Details »

Consul KV Dashboard

Consul KV Dashboard

monitoring casual #7

FUJIWARA Shunichiro

January 30, 2015
Tweet

More Decks by FUJIWARA Shunichiro

Other Decks in Programming

Transcript

  1. Consul KV Dashboard
    Monitoring Casual #7
    @fujiwara

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  9. 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

    View Slide

  10. ϦΞϧλΠϜߋ৽ͷ࣮ݱํ๏
    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":".....

    View Slide

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

    View Slide

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

    View Slide

  13. 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

    View Slide

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

    View Slide