ホストステータスの変更などのイベントを通知チャンネルに通知できるように
開発者と監視に纏わる話をケーススタディを交えながらお話します
監視とは継続的なテストである
~ 奥一穂
http://developer.cybozu.co.jp/archives/kazuho/2010/01/cronlog-52f2.html
監視とは本来システムに対する継続的なインテグレーションである
すべてのサービスで健全性と一般的な監視関連のメトリックを同じように出力することをおすすめします。(中略) どれを選んでも、標準化するようにしてください。
Nagios/Sensu/Consul/Mackerelとかで使われている
時系列データの
を空白区切りで出力する
% ./battery.pl
macbook.pmset.ib0 73 1467427252
Sensu/Graphite/Mackerel等で使われている
テスト駆動開発は、プログラミング中の不安をコントロールする手法だ
~「テスト駆動開発」まえがき
http://blog.nomadscafe.jp/2010/07/gearman-worker-process.html
以下のように監視エンドポイントを生やす事が可能
http.HandleFunc("/api/stats", stats_api.Handler)
% curl -s http://127.0.0.1:8080/api/stats
{
"time": 1511951792854050800,
"go_version": "go1.9.1",
"go_os": "linux",
"go_arch": "amd64",
"cpu_num": 1,
"goroutine_num": 548,
"gomaxprocs": 1,
"cgo_call_num": 1,
"memory_alloc": 19287544,
"memory_total_alloc": 16883888738024,
"memory_sys": 57522424,
"memory_lookups": 1181603172,
"memory_mallocs": 197996257029,
"memory_frees": 197996111866,
"memory_stack": 5210112,
"heap_alloc": 19287544,
"heap_sys": 45121536,
"heap_idle": 15785984,
"heap_inuse": 29335552,
"heap_released": 0,
"heap_objects": 145163,
"gc_next": 26308000,
"gc_last": 1511951770432061000,
"gc_num": 1422876,
"gc_per_second": 0.5930361979107467,
"gc_pause_per_second": 0.792662,
"gc_pause": [
0.090007,
0.030134,
0.031483,
0.030759,
0.039025,
0.096764,
0.053129,
0.031492,
0.053069,
0.034587,
0.034232,
0.022605,
0.027835,
0.022133,
0.049394,
0.042198,
0.025538,
0.029074,
0.049204
]
}
素朴なチェックスクリプトでベンチマーカーの突然死を監視
実行中のベンチマーカー数と、実行待ち状態のベンチマーカー数を監視