モチベーションとしては、Datadog LogsのWebコンソールはメッセージの全文が長いと全部表示されなかったり普通のtailと違って時間の降順に並んだりで微妙に見づらかったりするので、CLIでtail -f
コマンド感覚で見れて雑にgrepとかしたいと思って作りました。
インストール
Releases からバイナリをダウンロードしてパスを通してください。
あと多分 go get -u github.com/kamatama41/taildog
でもインストールできると思います。
使い方
まず、DD_API_KEY
と DD_APP_KEY
(application key) の2つの環境変数を設定する必要があります。DatadogのWebコンソールから取得してきてください。
全ログを追跡する
$ taildog
クエリで絞り込む
$ taildog -q "service:my-app"
一定期間のログを表示する (追跡はしない、 max 1000行)
$ taildog -q "service:my-app" --from 2019-07-10T11:00:00Z --to 2019-07-10T11:00:05Z
出力のフォーマットを変える
Goのtemplateのスタイルで記述します。使用できる項目はDatadogのLog Query APIのレスポンスのcontent
の内容に準拠します。 デフォルトは "{{.Timestamp}} {{.Host}} {{.Service}} {{.Message}}"
です。
$ taildog -q "service:my-app" -f "{{.Timestamp}} {{.Message}}"
注意
- 実際にログがインジェストされてからAPIで見れるようになるまで、微妙にタイムラグ (5~30秒くらい) があります。
- Log Query APIは300回/時間/組織のレートリミットがあるので*1、複数人で長時間使うとエラーになる可能性があります。
- 上記の理由からデフォルトで15秒おきにポーリングするようにしていて、そこまでリアルタイム性は高くないです。
よかったら使ってみてください〜!
*1:必要に応じで拡張はできるそうです