システムのレジリエンスを強化

New Relic には ”タグ” と呼ばれるものがあります。タグは監視対象のエンティティ、ダッシュボードやワークロードに追加される Key と Value のペアです。

このタグ情報を用いることで、例えば New Relic で監視しているホストのうち、どのホストが本番環境で稼働しているか、誰がシステムオーナーか、などの属性情報を付与することができます。このタグ情報をフィルター条件として抽出すれば、欲しい情報のみを的確に参照することが可能になります。

タグは New Relic 上の多くの構成要素に付与することが出来ますが、いくつか付与出来ないものがあります。その一例が New Relic アカウントになります。本稿では New Relic アカウントにタグとは異なるアプローチで属性情報を付与し、抽出する方法についてご紹介します。

lookup 機能を活用する

タグを使わずに属性情報を付与する方法として、lookup 機能を用いる方法があります。

lookup 機能を使用すると、CSV ファイルで定義したビジネスに関するデータを使用してログデータやその他の New Relic に保存されたデータを強化できます。この機能を利用するには、lookup table と呼ばれる CSV ファイルを作成し New Relic にアップロードします。これにより以下のようなことが実現できます。

  • New Relic に存在しないデータをクエリする
  • テレメトリデータを理解しやすくする
  • カスタムの方法でデータをグループ化する

詳しくはこちらのドキュメントをご参照ください。

New Relic アカウントに属性情報を付与してみる

lookup 機能の利用目的は様々あるかと思いますが、ここでは実装例を1つご紹介します。

New Relic の Organization(組織)内に複数の New Relic アカウントを作成し管理している管理者は、少なければ数個、多い場合は数百以上の New Relic アカウントを管理していると思います。このアカウントに属性情報を付与して任意の条件に該当するアカウントを抽出してみましょう。

実現したいこと 社内振替の請求対象となる New Relicアカウントを抽出し、先月1ヶ月のデータ流入量を調査する
ユースケース対象者 社内で複数の New Relic アカウントや費用振替管理をおこなう Organization 管理者

まずは、New Relic アカウントに付与すると便利な属性情報を検討します。ここでは以下の Key を付与することにします。

  • 課金対象(Billing)
  • 部署名(Department)
  • 環境情報(Environment)

これらの情報を New Relic アカウントID情報(Account)と組み合わせた形で CSV ファイルを作成します。以下にサンプルを掲載します。(アカウントID情報は皆さまの New Relic 環境下にあるアカウントIDに置き換えてください)

Account,Billing,Department,Environment
3xxxxx1,Y,Support,Prod
3xxxxx2,N,Marketing,Prod
3xxxxx3,N,Marketing,Dev

CSV ファイルが出来上がりましたら、New Relic の Logs -> Lookup tables に移動し、"Add a table" をクリックします。

Name 欄に任意の名前(ここでは mybillingdata)を入力後、さきほど作成した CSV ファイルをドラッグアンドドロップ等によりアップロードします。アップロード後、画面右下の Add をクリックするとアップロードが完了します。

アップロードしたデータが参照できるか、以下のように実行してみます。(mybillingdata はさきほどアップロードした際に付与した名称に置き換えてください)

lookup query

参照できる事が確認できましたら、本来の目的となるクエリを実行します。

今回は課金対象フラグが "Y" であるアカウントに対し、NrConsumption から参照したアカウントIDとデータ流入量に加え、lookup table から参照した部署名と環境情報も合わせて表示するクエリを実行します。

FROM NrConsumption JOIN (FROM lookup(mybillingdata) SELECT Account, Billing, Department, Environment)
ON consumingAccountId = Account SELECT latest(consumingAccountName) AS 'Account Name', sum(GigabytesIngested) AS 'Total GB' WHERE Billing = 'Y' 
SINCE last month UNTIL this month FACET consumingAccountId AS 'AccountID', Department, Environment LIMIT MAX
lookup join

ここではサブクエリ結合という方法を用いて、NrConsumption と mybillingdata の2つのデータセットと、2つをリンクする主キー(緑枠)を用いたクエリを実行します。サブクエリ結合の詳細につきましては、こちらのドキュメントも合わせてご参照ください。

このクエリにより、無事に課金対象アカウントを対象にした先月1ヶ月分のデータ流入量を確認することができました。

いかがでしたでしょうか。

タグが利用できない場合でも、lookup 機能を利用することで New Relic 内に保持していなかった情報も合わせてクエリすることが出来るようになりました。ぜひお試しください。