Sensu with golang

19
堀内 晨彦 (HORIUCHI Akihiko) @hico_horiuchi Sensu with Golang 2015.03.26(木) @Sensu Deep Talks #1

Transcript of Sensu with golang

Page 1: Sensu with golang

堀内 晨彦 (HORIUCHI Akihiko) @hico_horiuchi

Sensu with Golang 2015.03.26(木) @Sensu Deep Talks #1

Page 2: Sensu with golang

@hico_horiuchi

○ うどん大学 情報系 修士1年 ○  Emacs / Rails / Hubot / Ansible ○  http://bit.ly/hiconyan

普段はロードバランス・オートスケールの研究 研究室のインフラと掃除を担当

Sensu歴は半年 (ヤフーインターン~)

15/03/26 2

Page 3: Sensu with golang

Sensu構成図 @ 研究室

15/03/26 3

sensu-server + kibana

Nginx + Dokuwiki

GitLab

Ruby on Rails

Ubuntu + KVM

・ 物理サーバ (14台) ・ 仮想サーバ (9台) ・ スイッチ (3台) ・ 構成管理は Ansible Hubot

(hico-horiuchi/huboco)

Page 4: Sensu with golang

もくじ

15/03/26 4

ohgi (扇: Sensu command-line tool by golang) 1.

sensu-plugins-go (Sensu Plugins by Golang) 2.

Page 5: Sensu with golang

agent462/sensu-cli

●  Ruby製 Sensuコマンドラインツール

15/03/26 5

情報量が多く見辛い 動作が重い

Page 6: Sensu with golang

hico-horiuchi/ohgi

●  Go言語製 Sensuコマンドラインツール

○  Go言語の勉強も兼ねて ○ 開発は正月~,現在 v0.1.4

15/03/26 6

ロゴが 欲しい

Page 7: Sensu with golang

できること

●  Sensu API を一通り叩ける ○ ただし aggregates 以外 ○ コマンドは API の命名規則に準拠 ●  リスペクト ○ 色付け,シンプルな表形式の表示

15/03/26 7

$ ohgi events [client] [check]

Page 8: Sensu with golang

Why Golang?

● なぜGo言語で作ったか ○ コンパイルと実行が高速 ○ ライブラリが豊富 (spf13/cobra最強) ○ バイナリ1つで (ノ‾ー‾)ノポイッ

15/03/26 8

\ナウでヤングな言語だから/

Page 9: Sensu with golang

デモンストレーション

http://bit.ly/sensu-ohgi

15/03/26 9

Page 10: Sensu with golang

もくじ

15/03/26 10

ohgi (扇: Sensu command-line tool by golang) 1.

sensu-plugins-go (Sensu Plugins by Golang) 2.

Page 11: Sensu with golang

Sensuが重い

● 監視スクリプトのオーバーヘッド ○  community-plugins は 88% が Ruby ●  sensu-server (VM) はもっと重い ○ metrics の handler (クライアント数×項目数) ○  Elasticsearch + Kibana が同時稼動

15/03/26 11

Page 12: Sensu with golang

hico-horiuchi/sensu-plugins-go

●  SensuのPluginをGoで書く ○  check:os.Exit() で終了ステータス変更 ○ metrics:Scheme + Value + Unix ●  sensu/handler ライブラリ ○ 渡された event を構造体に格納 ○  simple-json で設定読込

15/03/26 12

Page 13: Sensu with golang

実装状況

●  check ○  CPU,メモリ,ディスク,HTTP ● metrics ○  CPU,メモリ,ディスク,通信量 ●  handler ○  Hubot,Elasticsearch

15/03/26 13

Page 14: Sensu with golang

くらべてみた

●  10回実行,time の user + system

圧倒的な速さ!

15/03/26 14

Ruby Golang CPU 0.79 s 0.06 s メモリ 0.15 s 0.07 s ディスク 0.77 s 0.06 s HTTP 1.51 s 0.41 s

Page 15: Sensu with golang

15/03/26 15

これが

CPU,メモリ,ディスク

Page 16: Sensu with golang

15/03/26 16

こうなる

CPU,メモリ,ディスク

Page 17: Sensu with golang

15/03/26 17

まとめ

● ohgi:Go言語製 Sensu CLI 高速でシンプル,分かりやすい

● sensu-plugins-go community-plugins より高速!

● Sensu + Golang もっと速く!便利に!

Page 18: Sensu with golang

15/03/26 18

これから

● ohgi:Go言語製 Sensu CLI 複数 Sensu 対応,v1.0.0へ!

● sensu-plugins-go community-plugins からの移植

● Sensu を他の研究室にも広める

Page 19: Sensu with golang

15/03/26 19

プルリクお待ちしてます!

hico-horiuchi/ohgi hico-horiuchi/sensu-plugins-go