dogwrapコマンドでDatadogへコマンドの実行結果を連携する
Pocket

監視でDatadogを使っているのだけど、プロセスダウンとかしきい値を跨いだ際の挙動についてはDatadog側で動作させることが可能なのだが、例えば既存のスクリプトをキックした際にヘルスチェックで引っかかった場合などにアラートを飛ばすなどの処理をしたい時がある。そんな場合には、Datadog側で用意しているコマンドツール『dogwrap』を使うと良いようだ。

『dogwrap』は、指定したコマンドを実行して、その出力結果をDatadogへ連携してくれるツールだ。
これで、既存のスクリプト実行時にエラーになった場合はDatadogに連携するようにすれば、既存のスクリプトを使いまわせるだろう。

1.インストール

まずはインストール。以下のコマンドを実行する。

yum install python-setuptools python-devel
easy_install dogapi

 

インストールが完了したら、『dogwrap』コマンドが使えるようになっている。

Sponsored Links

2.Datadogにアラートを飛ばす

さて、それでは実際にdogwrapからDatadogにアラートを飛ばしてみよう。
以下のようにコマンドを実行することで、Datadogにアラートが飛ぶはずである。

dogwrap -n "アラート名" -k DatadogAPIキー --submit_mode 送信する種類 "実行コマンド"

 

※DatadogAPIキーは、DatadogAgentインストール時に使用しているキーを用いる。
以下のコマンドで確認も可能だ。サブシェルで組み合わせてしまっても良いだろう。

awk '$1~/api_key/ {print $2}' /etc/dd-agent/datadog.conf

 

●例1)lsコマンドを実行して、その結果をDatadogに連携させる。

とりあえず、コマンドの実行結果を全てDatadogに連携させる。
この場合は、「–submit_mode」をallにすれば良いようだ。

dogwrap -n "TestAlert" -k $(awk '$1~/api_key/ {print $2}' /etc/dd-agent/datadog.conf) --submit_mode all "ls -la"

20160221_000005

 

Datadogの画面がこちら。

20160221_000004

 

●例2)コマンドの異常終了時のみDatadogに連携させる

コマンドの実行結果がエラーになった場合にDatadogに連携させる場合は、「–submit_mode」をerrorsにすればいい。
そうすると、正常終了時のアラートはDatadogには連携されないようになっている。

dogwrap -n "TestAlertError" -k $(awk '$1~/api_key/ {print $2}' /etc/dd-agent/datadog.conf) --submit_mode errors "ps -ef | grep [s]shd" # 正常終了時
dogwrap -n "TestAlertError" -k $(awk '$1~/api_key/ {print $2}' /etc/dd-agent/datadog.conf) --submit_mode errors "ps -ef | grep [s]shd1234" # エラー発生時

20160221_000007

[root@test-node dogapi]# dogwrap -n "TestAlertError" -k $(awk '$1~/api_key/ {print $2}' /etc/dd-agent/datadog.conf) --submit_mode errors "ps -ef | grep [s]shd"

root      1204     1  0  2月20 ?      00:00:00 /usr/sbin/sshd -D
root     10414  1204  0  2月20 ?      00:00:02 sshd: root@pts/0
[root@test-node dogapi]# dogwrap -n "TestAlertError" -k $(awk '$1~/api_key/ {print $2}' /etc/dd-agent/datadog.conf) --submit_mode errors "ps -ef | grep [s]shd1234"


[root@test-node dogapi]#

 

さて、Datadog側ではどうなっているかというと。。。

20160221_000008

 

確かに、エラーになった分だけが連携されている事が確認できる。
管理外のサーバでDatadog エージェントを導入出来ない環境に対し、疎通監視とかそういったことをさせる際にも使えそうだ。

 

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。