発端
ダッシュボードの棚卸しをするために、アカウントをまたがってすべてのダッシュボードを一覧化したかったんですが、CSV でダウンロードしたり NRQL の情報引き出し先エンティティがわからなかったため、 NerdGraph を使って解決しました。
本記事は、一覧化までの記録です。
NerdGraph で NewRelic のダッシュボードを一覧化
ググって最初に検索に引っかかったのは actor.dashboard
の方でしたが、ここには liveUrls
という属性しかぶら下がっていませんでした。
actor.entity(guid: String)
で GUID を指定したところ目的の情報が出力できたので、この一覧を取るには・・・ということで actor.entitySearch にたどり着きました。
GraphQL クエリはこんな感じ。
nr_dashboards.graphql
{
actor {
entitySearch(queryBuilder: {
type: DASHBOARD
}) {
results(cursor: "<nextCursor値>") {
nextCursor
entities {
... on DashboardEntityOutline {
name
dashboardParentGuid
permalink
account {
name
}
}
}
}
}
}
}
dashboardParentGuid
が null になっているのがダッシュボード本体、 not null がダッシュボードのページを表します。
200 件を超えるとページングが発生するので、 2 ページ目以降はレスポンスで返ってきた nextCursor
を指定する必要があります。
TSV への加工
GraphQL のレスポンス (JSON) を以下のワンライナーで加工してスプレッドシートに貼り付けました。
$ jq -r '.data.actor.entitySearch.results.entities[] | [.name, .account.name, .dashboardParentGuid, .permalink] | @tsv' result.json