Datadog

Datadog APIでInfrastructure List相当のホスト一覧を取得する

Datadogでホストの一覧を取得する場合、公式で載っているのは大体以下です。

これで取得すると、以下のような形式になります。(prettifyしています)

公式にあるホスト一覧の取得方法
curl -XGET "https://app.datadoghq.com/api/v1/search?api_key=${API_KEY}&application_key=${APP_KEY}&q=hosts:"

通常ではmetricshostsがどちらも表示されるので、q=hosts:でホストだけに絞っています。

取得結果
{
  "results": {
    "hosts": [
      "host1",
      "host2",
      "...",
    ]
  }
}

取れることは取れるのですが、本当にホストの一覧しか取れていません。もっと、ホストに紐づくタグとか…というか、画面でいうInfrastructure List(下記のイメージ)相当のものは取れないのかと思ったら、公式FAQに書いてありました。

infrastructure list

Query the Infrastructure List via the API

infrastructurelist相当のホスト一覧取得
curl -XGET "https://app.datadoghq.com/reports/v2/overview?api_key=${API_KEY}&application_key=${APP_KEY}"
取得結果
{
  "rows": [
    {
      "display_name": "host1",
      "name": "host1",
      "tags_by_source": {
        "Datadog": [
          "default"
        ],
        "Users": [
          "env:prod"
        ]
      },
      "up": true,
      "host_name": "host1",
      "has_metrics": false,
      "id": 335160838,
      "last_seen": 1517730959
    }
  ...
  ],
  "window": "3h:30m",
  "row_type": "host",
  "display_hostname_dropdown": false
}

なにげにv2のAPIなんですね。
これってFAQというより普通にAPIドキュメントに書いて欲しい気がしますが、何はともあれ欲しい情報が取れそうです。

追記

2018/2/7現在、Query the Infrastructure List via the API
の紹介にパラメータとして with_source というものがありますが、正しくは with_sources です。なので、もしこのパラメータを使いたければ &with_sources=true と指定する必要があります。公式に問い合わせているので、おそらくドキュメントが修正されると思います。