ようへいの日々精進XP

よかろうもん

Datadog の Monitors 定義を YAML で管理する Chihuahua を Gem でリリースした

f:id:inokara:20170311201901p:plain

なんで作ったのか

Datadog API Monitors の勉強と将来的には同様の機能を Barkdog に Merge してもらいたくて、自分でも実装を試してみたかった為。

Gem

詳細は

github.com

inokara.hateblo.jp

更新情報

概要

  • Monitors を Export する際の条件を再利用するようにした
  • 定義の更新、追加後に最新の定義を Export するようにした
  • バグの修正

Monitors を Export する際の条件を再利用するようにした

例えば、初回は以下のように Export したとする。

$ bundle exec chihuahua export --project demo --tags=host:vagrant-ubuntu-trusty-64
Export...
[{{#is_alert}}CRITICAL{{/is_alert}}{{#is_warning}}WARNING{{/is_warning}}] CPU load is very high on {{host.name}} を export しました.
Test4 [{{#is_alert}}CRITICAL{{/is_alert}}{{#is_warning}}WARNING{{/is_warning}}] CPU load is very high on {{host.name}} を export しました.
Test3 [{{#is_alert}}CRITICAL{{/is_alert}}{{#is_warning}}WARNING{{/is_warning}}] CPU load is very high on {{host.name}} を export しました.
Test 5 [{{#is_alert}}CRITICAL{{/is_alert}}{{#is_warning}}WARNING{{/is_warning}}] CPU load is very high on {{host.name}} を export しました.
Test 8 [{{#is_alert}}CRITICAL{{/is_alert}}{{#is_warning}}WARNING{{/is_warning}}] CPU load is very high on {{host.name}} を export しました.
Test 9 [{{#is_alert}}CRITICAL{{/is_alert}}{{#is_warning}}WARNING{{/is_warning}}] CPU load is very high on {{host.name}} を export しました.
Test 10 [{{#is_alert}}CRITICAL{{/is_alert}}{{#is_warning}}WARNING{{/is_warning}}] CPU load is very high on {{host.name}} を export しました.
7 件の Monitors 定義を出力しました.

二回目以降、同じ条件(--tags=host:vagrant-ubuntu-trusty-64)で Export したい場合には、以下のように実行出来る。

$ bundle exec chihuahua export --project demo

仕組みとしては、条件も Monitors 定義と同様に YAML ファイルに吐いているだけ。

$ tree -a monitors/demo/
monitors/demo/
├── .filter.yml
└── monitors.yml

0 directories, 2 files

定義の更新、追加後に最新の定義を Export するようにした

会社の Slack チャンネルで宣伝したら、S さんが早速使ってくれて、S さんより貰ったフィードバックを元に実装。

$ bundle exec chihuahua apply --project demo
Apply...
Update line.
Test 10 [{{#is_alert}}CRITICAL{{/is_alert}}{{#is_warning}}WARNING{{/is_warning}}] CPU load is very high on {{host.name}} を apply しました.
[{{#is_alert}}CRITICAL{{/is_alert}}{{#is_warning}}WARNING{{/is_warning}}] CPU load is very high on {{host.name}} を export しました.
Test4 [{{#is_alert}}CRITICAL{{/is_alert}}{{#is_warning}}WARNING{{/is_warning}}] CPU load is very high on {{host.name}} を export しました.
Test3 [{{#is_alert}}CRITICAL{{/is_alert}}{{#is_warning}}WARNING{{/is_warning}}] CPU load is very high on {{host.name}} を export しました.
Test 5 [{{#is_alert}}CRITICAL{{/is_alert}}{{#is_warning}}WARNING{{/is_warning}}] CPU load is very high on {{host.name}} を export しました.
Test 8 [{{#is_alert}}CRITICAL{{/is_alert}}{{#is_warning}}WARNING{{/is_warning}}] CPU load is very high on {{host.name}} を export しました.
Test 9 [{{#is_alert}}CRITICAL{{/is_alert}}{{#is_warning}}WARNING{{/is_warning}}] CPU load is very high on {{host.name}} を export しました.
Test 10 [{{#is_alert}}CRITICAL{{/is_alert}}{{#is_warning}}WARNING{{/is_warning}}] CPU load is very high on {{host.name}} を export しました.
7 件の Monitors 定義を出力しました.
done.

これで、更新した後、あらためて Export する手間が省けた。

バグの修正

こちらも社内からのフィードバック。

やっぱり、他の人に使って貰うというのはとても参考になるし、本当に有難かった。

今後の目標

  • テストを書く
  • コードを綺麗にする
  • Barkdog にマージして貰えるようにする