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 コネクタ
- QUERY_HISTORYビューを取得します
- ターゲット: REST v2 コネクタ
REST v2コネクタはビジネスサービスを作成しミッドストリームのトランスフォーメーションとして使用することが好ましいのですが、本記事では解説をシンプルにするためターゲットトランスフォーメーションで使用しています。
なお、本記事ではコネクタの作成方法などは触れませんので、インフォマティカ社のサイトなどを参考に実装してください。
Swaggerファイルの作成
CDIのREST v2コネクタでは Swagger specification 2.0 および OpenAPI 3.0.x をサポートしており、APIの構造をJSON形式で事前に作成しておきます。SwaggerファイルはCDIのUIなどを利用して作成してください。
Swaggerファイル サンプル
{
"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"
- インジェストされるデータをリクエストボディで定義しています。
マッピングの作成
式トランスフォーメーション (EXP)
式トランスフォーメーションでは、次のパラメータをセットしています。
- EXP_AccountId
- New RelicのAccount IDを指定します
- EXP_ApiKey
- New RelicのINGEST - License Keyを指定します
- EXP_eventType
- イベント名を指定します
- EXP_timestamp
- インジェストデータのtimestampを指定します
- 私のSnowflake環境ではJSTタイムゾーンの日時を返していたので、UTCタイムゾーンの日時に変更しました
ターゲットトランスフォーメーション (NewRelic)
ターゲットトランスフォーメーションではREST v2コネクタを使用し、式トランスフォーメーションから伝播されるフィールドとのマッピングを行います。
入力フィールド | ターゲットフィールド |
---|---|
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を利用するとデータを簡単に確認できます。
New RelicのインジェストAPIを利用することにより様々な取り込むことができます。また、インフォマティカ社のIntelligent Data Management CloudはオンプレやSaaSアプリケーション、データベース、データクラウドなどのデータを簡単に抽出することができます。
これらのサービスを利用してシステムのパフォーマンスやリソースに加え、ビジネスデータを取り込んで活用することによりオブザーバビリティの成熟度向上にお役立てください!
その他
New Relicでは、新しい機能やその活用方法について、QiitaやXで発信しています!
無料でアカウント作成も可能なのでぜひお試しください!
New Relic株式会社のX(旧Twitter) や Qiita OrganizationOrganizationでは、
新機能を含む活用方法を公開していますので、ぜひフォローをお願いします。
無料のアカウントで試してみよう!
New Relic フリープランで始めるオブザーバビリティ!