読者です 読者をやめる 読者になる 読者になる

vague memory

うろ覚えを無くしていこうともがき苦しむ人の備忘録

Datadog (dogコマンド) 導入編

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

f:id:htnosm:20170314205801p:plain

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

f:id:htnosm:20170314205802p:plain

$ 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編

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