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がサポートされている状況のようです。
コマンド | 説明 | リンク |
---|---|---|
comment | コメント操作 | Datadog (dogコマンド) comment編 |
search | 24時間以内の hosts,metrics の検索 | Datadog (dogコマンド) search編 |
metric | メトリクス操作 | Datadog (dogコマンド) metric編 |
tag | タグ操作 | Datadog (dogコマンド) tag編 |
event | イベント操作 | Datadog (dogコマンド) event編 |
monitor | モニター操作 | Datadog (dogコマンド) monitor編 |
timeboard | タイムボード操作 | Datadog (dogコマンド) timeboard編 |
screenboard | スクリーンボード操作 | Datadog (dogコマンド) screenboard編 |
host | host の mute/unmute | Datadog (dogコマンド) host編 |
downtime | ダウンタイム設定操作 | Datadog (dogコマンド) downtime編 |
service_check | カスタムステータスチェック送信 | Datadog (dogコマンド) service_check編 |
各コマンドを一通り使用してみたいと思います。