13
3

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でデータを送信してみる - ETL編

Last updated at Posted at 2025-07-03

New Relicはシステムのパフォーマンスやリソースの他にも様々なデータを取り込むことができます。例えばビジネスデータを取り込むことによって、システムがビジネスに与える影響や貢献を可視化することもできます。
本記事では外部のデータをインフォマティカ社のIntelligent Data Management Cloudを利用して取り込んでみます。

はじめに

New RelicはAPM AgentやInfrastructure Agentからテレメトリーデータを送信するほかに、データインジェストAPIでカスタムイベントとしてデータを受け取ることができます。

インフォマティカ社のIntelligent Data Management Cloud (IDMC) はSaaSアプリケーションやデータベース、データクラウドなどのデータをバッチあるいはリアルタイムで連携することができます。

この記事ではIDMCのバッチ連携(ETL)を利用して、New Relicにカスタムイベントを送信してみます。

IDMCのAPI連携を利用したカスタムイベントの送信はこちらの記事を参考にしてください。

New RelicのデータインジェストAPI

New Relicではメトリック、イベント、ログ、トレースをレポートすることのできるデータインジェストAPIをご利用いただけます。これらのAPIを利用することによってサードパーティのアプリケーションなどのデータを取り込むことができます。本記事ではイベントAPIを使用してカスタムイベントを送信してみます。

イベントAPIでは次のようなJSON形式のペイロードを受け取ります。
イベント名はeventTypeで指定します。timestampを指定すると任意の時刻をタイムスタンプに指定することができます。その他はイベントの属性および値に使用されます。

[
  {
    "eventType": "Purchase",
    "account": 3,
    "amount": 259.54
  },
  {
    "eventType": "Purchase",
    "account": 5,
    "amount": 12309,
    "product": "Item",
    "timestamp": 1736557200
  }
]

なお、データインジェストAPIを利用するにはライセンスキーが必要となりますので、事前に作成・確認してください。

Informatica Intelligent Cloud Management

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

本記事ではバッチ連携(ETL)が可能なIDMCのCloud Data Integration (CDI) を利用してみます。
IDMCのデータ連携の方式については次の記事をご確認ください。

作成してみよう

今回はIDMCのCDIを利用して、データの取得元(ソース)はSnowflake、送信式(ターゲット)をNew RelicのインジェストAPIにしてみます。

  • ソース: Snowflake Data Cloud コネクタ
  • ターゲット: REST v2 コネクタ

image.png

REST v2コネクタはビジネスサービスを作成しミッドストリームのトランスフォーメーションとして使用することが好ましいのですが、本記事では解説をシンプルにするためターゲットトランスフォーメーションで使用しています。

なお、本記事ではコネクタの作成方法などは触れませんので、インフォマティカ社のサイトなどを参考に実装してください。

Swaggerファイルの作成

CDIのREST v2コネクタでは Swagger specification 2.0 および OpenAPI 3.0.x をサポートしており、APIの構造をJSON形式で事前に作成しておきます。SwaggerファイルはCDIのUIなどを利用して作成してください。

Swaggerファイル サンプル
QUERY_HISTORY.json
{
  "swagger" : "2.0",
  "info" : {
    "description" : null,
    "version" : "1.0.0",
    "title" : null,
    "termsOfService" : null,
    "contact" : null,
    "license" : null
  },
  "host" : "insights-collector.newrelic.com",
  "basePath" : "/v1/accounts/{AccountId}",
  "schemes" : [ "https" ],
  "paths" : {
    "/events" : {
      "post" : {
        "tags" : [ "QUERY_HISTORY" ],
        "summary" : null,
        "description" : null,
        "operationId" : "QUERY_HISTORY",
        "produces" : [ "application/json" ],
        "consumes" : [ "application/json" ],
        "parameters" : [ {
          "name" : "body",
          "in" : "body",
          "description" : null,
          "required" : false,
          "schema" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/definitions/QUERY_HISTORY_Request##body"
            }
          }
        }, {
          "name" : "Api-Key",
          "in" : "header",
          "description" : null,
          "required" : false,
          "type" : "string"
        }, {
          "name" : "AccountId",
          "in" : "path",
          "description" : null,
          "required" : false,
          "type" : "string"
        } ],
        "responses" : {
          "200" : {
            "description" : "successful operation",
            "schema" : {
              "$ref" : "#/definitions/QUERY_HISTORY"
            }
          }
        }
      }
    }
  },
  "definitions" : {
    "QUERY_HISTORY" : {
      "properties" : {
        "success" : {
          "type" : "boolean"
        },
        "uuid" : {
          "type" : "string"
        }
      }
    },
    "QUERY_HISTORY_Request##body" : {
      "properties" : {
        "eventType" : {
          "type" : "string"
        },
        "QUERY_ID" : {
          "type" : "string"
        },
        "QUERY_TEXT" : {
          "type" : "string"
        },
        "EXECUTION_TIME" : {
          "type" : "number"
        },
        "WAREHOUSE_NAME" : {
          "type" : "string"
        },
        "USER_NAME" : {
          "type" : "string"
        },
        "EXECUTION_STATUS" : {
          "type" : "string"
        },
        "DATABASE_NAME" : {
          "type" : "string"
        },
        "SCHEMA_NAME" : {
          "type" : "string"
        },
        "ERROR_CODE" : {
          "type" : "string"
        },
        "ERROR_MESSAGE" : {
          "type" : "string"
        },
        "START_TIME" : {
          "type" : "string"
        },
        "END_TIME" : {
          "type" : "string"
        },
        "timestamp" : {
          "type" : "number"        }
      }
    },
    "QUERY_HISTORY_Request" : {
      "properties" : {
        "body" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/QUERY_HISTORY_Request##body"
          }
        }
      }
    }
  }
}

各要素の説明

  • 12行目: "basePath" : "/v1/accounts/{AccountId}"
    • インジェストAPIのパスです。
    • New RelicのAccount IDを動的に変更できるようパラメータ化しています。
  • 35行目: "name" : "Api-Key"
    • HTTPヘッダにセットされるAPIキーのパラメータです。
  • 41行目: "name" : "AccountId"
    • URIパスにセットされるNew Relic Accountのパラメータです。
  • 69行目以降: "QUERY_HISTORY_Request##body"
    • インジェストされるデータをリクエストボディで定義しています。

マッピングの作成

次のようなマッピングを作成してください。
image.png

式トランスフォーメーション (EXP)

式トランスフォーメーションでは、次のパラメータをセットしています。

image.png

  • EXP_AccountId
    • New RelicのAccount IDを指定します
  • EXP_ApiKey
    • New RelicのINGEST - License Keyを指定します
  • EXP_eventType
    • イベント名を指定します
  • EXP_timestamp
    • インジェストデータのtimestampを指定します
    • 私のSnowflake環境ではJSTタイムゾーンの日時を返していたので、UTCタイムゾーンの日時に変更しました

ターゲットトランスフォーメーション (NewRelic)

ターゲットトランスフォーメーションではREST v2コネクタを使用し、式トランスフォーメーションから伝播されるフィールドとのマッピングを行います。

image.png

入力フィールド ターゲットフィールド
EXP_AccountId root/AccountId
EXP_ApiKey root/Api-Key
EXP_EventType root/bodyArray/body/eventType
EXP_timestamp root/bodyArray/body/timestamp
その他 root/bodyArray/body/****

データを確認してみよう

CDIのマッピングを実行するとNew Relicにデータがインジェストされます。
Data Explorerを利用するとデータを簡単に確認できます。

image.png


New RelicのインジェストAPIを利用することにより様々な取り込むことができます。また、インフォマティカ社のIntelligent Data Management CloudはオンプレやSaaSアプリケーション、データベース、データクラウドなどのデータを簡単に抽出することができます。

これらのサービスを利用してシステムのパフォーマンスやリソースに加え、ビジネスデータを取り込んで活用することによりオブザーバビリティの成熟度向上にお役立てください!

その他

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

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

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

image.png

13
3
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
13
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?