この記事について
NewRelicにおいて、各サブアカウントで利用しているInfrastructure agentバージョンを一括取得する方法について記載します。
背景
弊社ではNewRelicを利用して、多くのシステムを監視しています。
各システム毎にサブアカウントを払い出して、システム=サブアカウントという単位で分割して管理を行っています。
弊社で管理する親アカウントが1つあり、その子アカウントとして各システムごとのサブアカウントがぶら下がっているイメージです。
サブアカウントについてはこちらをご参照ください。
各サブアカウントにおいてInfrastructure agentを利用してEC2などのVMからメトリクスを収集しています。
このInfrastructure agent(以後エージェント)ですが、バージョンがリリースされてから2年間でEOLとなります。
https://docs.newrelic.com/docs/infrastructure/infrastructure-monitoring/get-started/infrastructure-agent-eol-policy/
気がついたらEOLになっているバージョンを利用しているということが起きかねません。
そのため、各サブアカウントにて利用しているエージェントのバージョンを一括取得して、EOLが近づいている(もしくは過ぎている)エージェントを利用しているサブアカウントがないかチェックできるようにしたいと思います。
NRQLを利用すればそれが可能であるため後述します。
取得方法
親アカウントのQueryBuilderからNRQLクエリを実行します。
実行するNRQLクエリは以下の通りです。
SELECT count(*) FROM NrDailyUsage FACET infrastructureAgentVersion, subAccountId, subAccountName WHERE infrastructureAgentVersion IS NOT NULL SINCE 1 day ago LIMIT MAX
NrDailyUsageイベントからメトリクスを取得します。
https://docs.newrelic.com/jp/attribute-dictionary/?event=NrDailyUsage
ちなみに「LIMIT MAX」を入れないと結果が10行しか出力されないので注意しましょう。
https://qiita.com/K5K/items/085357cfd660f20f4b59
NRQLクエリを実行した直後はcountで降順ソートされるため、「Infrastructure Agent Versionの」右にあるソートボタンをクリックして、エージェントのバージョンで昇順ソートします。