はじめに

Ruby と Datadog の勉強を兼ねて Datadog の コマンドライン API クライアントを作っている。(※コマンドライン API クライアントという言葉があるかどうか怪しい。)

github.com

Hachiko の名前は忠犬ハチ公から名前を頂戴したm(__)m。名前負けしてしまいそうな位に tiny な実装ですいません。今後もポチポチ(犬だけに)改修していくぞー。

尚、Datadog のコマンドラインツールとしては…

github.com

上記のツールが既に公開されているので改めて触ってみたいと思う。(ちゃんと運用等で使う場合には上記の hotdog を選択したい)

ということで Undocumented Hachiko

なんで作ったの?

  • なかなか Hello world 初級から脱却出来ない Ruby 力強化の為(Ruby の勉強の為)
  • Datadog API の勉強の為

Hachiko で何が出来るの?

Datadog API のエンドポイントを叩いてレスポンスを得ることが出来る。以上。

使い方については

README をご一読下さい。

尚、コマンドラインオプションの -e or --endpointAPI Reference に掲載されている各エンドポイント名に準ずるつもり。

サポートしているエンドポイントは

今のところは自分が使いそうな以下をサポート。

今後も追加していく予定。

レスポンス(コマンドの出力)は

  • API レスポンスをほぼそのまま出力するようにした(加工とかして出力するには技術不足な為)
  • API のレスポンスにステータスコードが含まれるのでステータスコードだけは出力しないようにした
  • 出力を加工したい場合には jq 等の外部ツールで…
$ bundle exec ruby bin/hachiko -e search -q hosts: | jq .
{
  "results": {
    "hosts": [
      "host01",
      "host02",
      "host03"
    ]
 }

中身的には

dogapi-rb をラッピングしているだけなので dogapi-rb の変更に伴って動かなくなってしまう等の問題が発生するかもしれない。(その時に治そう。)

github.com

とは言え、自分の実装がダメダメでも dogapi-rb が良きに計らってくれているようなので助かるワン。

ということで…

実装で気になる点

  • 引数のパラメータを全部インスタンス変数で扱うのって問題無いのか(問題ある場合、どのような問題があるのか)
  • 各種エラー処理が不十分すぎる
  • メトリクスの取得だけが dogapi-rb を使わずに rest-client を使って直接 API のエンドポイントをつついている

最後に

OptionParser 素敵ですが、どなたか Ruby の先生を紹介して頂けませんでしょうか…

元記事はこちら

Datadog のコマンドライン API クライアントを試行錯誤で作っている