7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

New RelicでInformaticaのIDMCコストを可視化してみよう

Last updated at Posted at 2025-08-06

SaaSの利用料などを可視化してチームで共有したいことはありませんか? New Relicはシステムのパフォーマンスやエラーなどのテレメトリデータのほかにも様々なデータを取り込むことができます。例えばコストデータを取り込むことによって無駄なく適切に利用しているかチームや会社全体で把握することができます。
本記事ではインフォマティカ社のIntelligent Data Management Cloudをのコスト情報を取り込んでみます。

はじめに

New RelicはAPM AgentやInfrastructure Agentからテレメトリーデータを送信するほかに、New Relic Flexでホスト上のコマンドやファイル、HTTPアクセスを介して任意のデータをNew Relicに送信することができます。

この記事ではNew Relic Flexを使用して、インフォマティカのコスト情報をNew Relicにカスタムイベントとして送信してみます。

Informatica Intelligent Cloud Management

インフォマティカ社のInformatica Intelligent Cloud Management (IDMC) はアプリケーション・データベース・ファイルなどのデータをバッチあるいはリアルタイムで連携できるクラウド型のプラットフォーム (iPaaS: Integration Platform as a Service) です。

IDMCの価格モデルのひとつとして使用量に応じて価格設定されるIPU(Informatica Pricing Units)があります。

IPUの使用状況はRESTAPIのMetering dataを使用して取得することができます。Metering dataでは対象となる期間や取得単位(プロジェクトフォルダやアセットなど)を指定してメータリングデータのエクスポートジョブ要求を送信、ジョブのステータスを確認してデータが含まれるZIPファイルをダウンロードします。ZIPファイルにはCSVデータが含まれます。

必要なソフトウェアのインストール

New Relic FlexはNew Relic Infrastructure Agentがインストールされたホストで利用できます。こちらの記事を参考にインストールしてください。

APIの実行、後続のAPIに受け渡すパラメータの取得、ZIPファイルの展開に必要な次のソフトウェアをインストールしてください。

  • curl
  • jq
  • zip

IPUの使用状況を取得するシェルスクリプトの作成

サンプルのシェルスクリプトを用意しました。こちらをベースにみなさんの環境に合わせてカスタマイズしてください。作成したスクリプトはNew Relic Flexの定義ファイルと同じディレクトリ /etc/newrelic-infra/integrations.d に配置してください。

あくまでもサンプルとして自己責任でご利用ください。エラー処理は一切していませんし、効率の良くない書き方があるかもしれません。

ファイル名を idmc_metering.sh に変更してください。

スクリプトの説明

パラメータの定義 ご利用の環境にあわせて設定してください。
パラメータ 説明
REGION xxxx クラウド・プロバイダリージョン(e.g. dm2-us)
USERNAME xxxx APIを実行するユーザーのユーザー名
PASSWORD xxxx APIを実行するユーザーのパスワード
DOWNLOADPATH /<PATH>/idmc_metering.zip ZIPファイルの保存先
LOGFILEPATH /<PATH>/idmc_metering.log ログの出力先
MAX_RETRIES 10 ジョブのステータスを確認するためのリトライ回数
SLEEP_SECONDS 60 次のリトライを行うまでの待機時間(秒)

PASSWORD をスクリプト内で定義していますが、実環境では環境変数などを利用しセキュリティに注意してください。

対象期間の取得 IPUの使用状況は1日ごとに生成されますので、このシェルスクリプトが実行される直近1日のデータを対象として期間を指定します。
ENDTIME=$(date -u +%Y-%m-%dT%H:%M:%SZ)
STARTTIME=$(date -u -d "$ENDTIME 1 day ago" +%Y-%m-%dT%H:%M:%SZ)
IDMCにログイン REST APIでIDMCにログインします。
RES_LOGIN=$(curl -X POST -H 'Content-Type: application/json' -s \
  "https://$REGION.informaticacloud.com/saas/public/core/v3/login" \
  -d '{"username" : "'"$USERNAME"'", "password" : "'"$PASSWORD"'"}')
ベースURL,セッションIDを抽出 後続のAPIの実行に必要なベースURLとセッションIDを取得します。
BASEAPIURL=$(echo "$RES_LOGIN" | jq -r ".products[].baseApiUrl")
SESSIONID=$(echo "$RES_LOGIN" | jq -r ".userInfo.sessionId")
メータリングデータのエクスポートジョブ要求 IPUを取得するためのAPIを実行します。IPUが取得できるようになるまで時間がかかりますので、このあとの処理でステータスを確認しリトライを行います。
RES_EXPORT=$(curl -X POST -H 'Content-Type: application/json' -H "INFA-SESSION-ID: $SESSIONID" -s \
  "$BASEAPIURL/public/core/v3/license/metering/ExportMeteringData" \
  -d '{
    "startDate" : "'"$STARTTIME"'",
    "endDate" : "'"$ENDTIME"'",
    "jobType" : "PROJECT_FOLDER",
    "combinedMeterUsage" : "TRUE",
    "allLinkedOrgs" : "TRUE"
  }')

# ジョブID, ステータスを抽出
JOBID=$(echo "$RES_EXPORT" | jq -r ".jobId")
STATUS=$(echo "$RES_EXPORT" | jq -r ".status")

このサンプルスクリプトでは jobTypePROJECT_FOLDER を指定し、プロジェクト別およびフォルダ別にエクスポートします。

メータリングデータのダウンロード エクスポートジョブのステータスが SUCCESS になるまでリトライします。SUCCESS になったらZIPファイルのダウンロードと展開を行います。展開されたCSVをもとにNew Relicへデータが送信されます。
for i in $(seq 1 $MAX_RETRIES)
do
  if [ $STATUS = "SUCCESS" ]; then
    # ダウンロード
    RES_DOWNLOAD=$(curl -X GET -H 'Content-Type: application/json' -H "INFA-SESSION-ID: $SESSIONID" -o "$DOWNLOADPATH" -s \
      "$BASEAPIURL/public/core/v3/license/metering/ExportMeteringData/$JOBID/download")
    # ダウンロード後に展開
    unzip -p $DOWNLOADPATH
    break
  else
    # $SLEEP_SECONDS 秒待機してからステータス確認
    sleep $SLEEP_SECONDS
    RES_GETTING=$(curl -X GET -H 'Content-Type: application/json' -H "INFA-SESSION-ID: $SESSIONID" -s \
      "$BASEAPIURL/public/core/v3/license/metering/ExportMeteringData/$JOBID")
    STATUS=$(echo "$RES_GETTING" | jq -r ".status")
  fi
done
IDMCからログアウト REST APIでIDMCからログアウトします。
RES_LOGOUT=$(curl -X POST -H 'Content-Type: application/json' -H "INFA-SESSION-ID: $SESSIONID" -s \
  "$BASEAPIURL/api/v2/user/logout")

New Relic Flexの設定

こちらもサンプルの定義ファイル(yaml)を用意しましたので必要に応じてカスタマイズしてください。定義ファイルは /etc/newrelic-infra/integrations.d に配置してください。

ファイル名を idmc_metering.yml に変更してください。

定義ファイルの説明

メイン セクション IPUの使用状況は1日ごとに生成されますので、New Relic Flexでの実行も24時間ごとにしています。
integrations:
  - name: nri-flex
    interval: 24h
    timeout: 15m
コマンド セクション 作成したシェルスクリプトを実行します。
  • CSVの先頭にカラム名があるので、row_startで2行目以降を取得します。
  • IPUの使用状況が生成された日時をNew Relicのタイムスタンプにするためtimestamp_conversionrename_keysを設定しています。
    config:
      name: Informatica
      apis:
        - event_type: IDMC_Metering
          commands:
            - run: /etc/newrelic-infra/integrations.d/idmc_metering.sh
              split: horizontal
              split_by: ","
              row_start: 1
              set_header: [date, project, folder, orgId, orgType, ipu]
              timeout: 600000
          timestamp_conversion:
            date: TIMESTAMP
          rename_keys:
            date: timestamp

データを確認してみよう

New Relic Flexが実行されるとIPUの使用状況ががインジェストされます。
Data Explorerを利用するとデータを簡単に確認できます。

IPUの使用状況は毎日00時00分(UTC)のタイムスタンプとして生成されます。NRQLのSINCE句を 24 hour ago とするなどしデータを確認してください。

image.png


New Relic Flexを利用することにより様々な取り込むことができます。この記事ではインフォマティカ社のIntelligent Data Management Cloudのコスト情報を例にしましたが、他のアプリケーションでもAPIやファイルなどでコスト情報を公開していれば取り込むこともできます。

テレメトリデータに加え、コストやビジネスデータを取り込んで活用することによりオブザーバビリティの成熟度向上にお役立てください!

その他

New Relicでは、新しい機能やその活用方法について、QiitaやXで発信しています!
無料でアカウント作成も可能なのでぜひお試しください!

New Relic株式会社のX(旧Twitter)Qiita OrganizationOrganizationでは、
新機能を含む活用方法を公開していますので、ぜひフォローをお願いします。

無料のアカウントで試してみよう!
New Relic フリープランで始めるオブザーバビリティ!

image.png

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?