かまたま日記3

プログラミングメイン、たまに日常

Datadog LogsをCLIでtailするツールを作った

github.com

モチベーションとしては、Datadog LogsのWebコンソールはメッセージの全文が長いと全部表示されなかったり普通のtailと違って時間の降順に並んだりで微妙に見づらかったりするので、CLItail -fコマンド感覚で見れて雑にgrepとかしたいと思って作りました。

インストール

Releases からバイナリをダウンロードしてパスを通してください。
あと多分 go get -u github.com/kamatama41/taildog でもインストールできると思います。

使い方

まず、DD_API_KEYDD_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:必要に応じで拡張はできるそうです