運用・監視もコード化する。開発者が監視まで考える方法論
TIME rest time current/total
TopicsPlaceHolder

運用・監視もコード化する。開発者が監視まで考える方法論

Recruit Technologies Open Lab #3

Jul 7th, 2016

Profile

songmu

インフラを意識してコードを書くということ

最近Goで作ったもの

ニッチなツールを作るのが趣味

make2help

rake -T の Makefile版

ghg

ghgでGitHub Releasesから適切な実行ファイルを統一的に取得する

Mackerel Logo

 

可視化

アラート

最大1ロール2554台!

100週連続リリース

100週連続リリース

Agenda

監視に対する抵抗感

モニタリングの重要性の向上

すべてのサービスで健全性と一般的な監視関連のメトリックを同じように出力することをおすすめします。(中略) どれを選んでも、標準化するようにしてください。

監視とは継続的なテストである

by Kazuho Oku

監視とはシステムに対する高速健康診断

一般的な健康診断

監視は難しくない

何を監視すれば良いのかを考える

監視のコード化

監視のコード化

監視プラグインフォーマットは大きく分けて2つ

チェック監視

チェック監視

Nagios/Sensu/Consul/Mackerelとかで使われている

メトリック監視

時系列データの

を空白区切りで出力する

% ./battery.pl
macbook.pmset.ib0       73      1467427252

Sensu/Graphite/Mackerel等で使われている

おもしろ事例

Macのバッテリーモニタリングプラグイン

pmset コマンドの実行結果をparseして整形出力してるだけ。

#!/usr/bin/env perl
use 5.014;
use warnings;

my $binfo = `pmset -g ps`; # <- ここで `pmset` コマンド実行
die "pmset failed: $!\n" if $!;
my ($battery) = $binfo =~ /\t([0-9.]+)%/ms;
die "failed retrieving current_battery: $binfo\n" unless defined $battery;
say join "\t", 'macbook.pmset.ib0', $battery, time; # <- 出力

プロダクションでの事例

自分で監視を入れて自分で問題を発見する

監視設計

h2oに対する要望

https://github.com/h2o/h2o/issues/430

server-status available on h2o 2.0.0 or later!

https://github.com/h2o/h2o/pull/848

yay!

敷居を下げる

監視のコード化まとめ

閾値設定をコード化する

mkr monitors

監視設定をリポジトリ管理してCIで自動反映

アラートに対するアクション

I ♥ Webhook

MackerelのWebhook関連のOSS

ご活用ください!

監視だけじゃないコード化

全てのホストに監視エージェントが入っている

以上

【急募】We are Hiring

hatena