Datadog のコマンドラインツール dog (dogshell) を使ってみようと思いましたが、あまり情報が無かったのでまとめてみます。

Datadog公式のツールで、ライブラリをインストールすることにより使用できるようになります。

目次

インストール

README を参考にインストールを行います。 今回は素に近い CentOS7 で試してます。必要パッケージは環境により変わると思います。

# cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)
# yum install python2-pip openssl-devel python-devel libffi-devel
・・・
Complete!
# pip -V
pip 8.1.2 from /usr/lib/python2.7/site-packages (python 2.7)
# pip install -U pip datadog
・・・
Successfully installed datadog-0.15.0 decorator-4.0.11 pip-9.0.1 requests-2.13.0 simplejson-3.10.0
# pip -V
pip 9.0.1 from /usr/lib/python2.7/site-packages (python 2.7)
# dog -v
dog 0.15.0

設定ファイル(.dogrc)の作成

コマンド実行時に .dogrc が存在しないと作成するように促されます。 コマンド実行時に使用する api key、application key を設定します。
– app.datadoghq.com/account/settings#api

$ dog comment post "PostTest"
/home/hoge/.dogrc does not exist. Would you like to create it? [Y/n] Y
What is your api key? (Get it here: https://app.datadoghq.com/account/settings#api) 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
What is your application key? (Generate one here: https://app.datadoghq.com/account/settings#api) XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Wrote /home/hoge/.dogrc
# 以下コマンド実行結果
id      9999999999999999999
url     /event/event?id=9999999999999999999
resource    /api/v1/comments/9999999999999999999
handle      hoge@example.com
message     u'PostTest'

実行後、 .dogrc ファイルが作成されます。

$ cat /home/hoge/.dogrc
[Connection]
apikey = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
appkey = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

オプション

dog -h でヘルプが出力されます。

optional arguments:

オプション ロングオプション 説明
-h –help ヘルプ出力
–config 設定ファイルのパス指定。デフォルト “~/.dogrc”
–api-key API key 指定
–application-key Application key 指定
–pretty 整形して出力
–raw 返–却されたJSONをそのまま出力
timeout タイムアウト(秒) デフォルト10
-v –version バージョン出力

出力オプション

デフォルト(指定無し)

$ dog comment show 9999999999999999999
id      9999999999999999999
url     /event/event?id=9999999999999999999
resource    /api/v1/events/9999999999999999999
message     u'PostTest'

raw

JSONで返却、date_happened(UNIXTIME)等の情報も出力されます。

$ dog --raw comment show 9999999999999999999
{"event": {"date_happened": 00000000, "alert_type": "user_update", "handle": "hoge@example.com", "title": null, "url": "/event/event?id= 9999999999999999999", "text": "PostTest", "tags": [], "device_name": null, "priority": "normal", "host": null, "resource": "/api/v1/events/9999999999999999999", "id": 9999999999999999999}}

pretty

TAB区切りと改行で項目が別れて出力されるようです。

$ dog --pretty comment show 9999999999999999999
id      9999999999999999999
url     /event/event?id=9999999999999999999
resource    /api/v1/events/9999999999999999999
message
    PostTest
  • 結果を cat -A で表示した例
id^I^I9999999999999999999$
url^I^I/event/event?id=9999999999999999999$
resource^I/api/v1/events/9999999999999999999$
message$
    PostTest$

番外(複数指定)

raw と pretty の両方を指定した場合は後勝ちでした。

# 後に pretty
$ dog --raw --pretty comment show 3778268868988899329
id      9999999999999999999
url     /event/event?id=9999999999999999999
resource    /api/v1/events/9999999999999999999
message
    PostTest
# 後に raw
$ dog --pretty --raw comment show 3778268868988899329
{"event": {"date_happened": 00000000, "alert_type": "user_update", "handle": "hoge@example.com", "title": null, "url": "/event/event?id= 9999999999999999999", "text": "PostTest", "tags": [], "device_name": null, "priority": "normal", "host": null, "resource": "/api/v1/events/9999999999999999999", "id": 9999999999999999999}}

Modes:

基本的には用意されているAPIを叩いているので、APIが用意されていない操作はできません。 現在は一部のAPIがサポートされている状況のようです。
API Reference

コマンド 説明
comment コメント操作
search 24時間以内の hosts,metrics の検索
metric メトリクス操作
tag タグ操作
event イベント操作
monitor モニター操作
timeboard タイムボード操作
screenboard スクリーンボード操作
host host の mute/unmute
downtime ダウンタイム設定操作
service_check カスタムステータスチェック送信

各コマンドを一通り使用してみたいと思います。

元記事はこちら

Datadog (dogコマンド) 導入編