New Relicのログ転送ソリューションではニーズを満たせない場合、Log API使用して、HTTPエンドポイント経由でログデータをNew Relicに直接送信できます。
HTTPエンドポイント
お使いのNew Relicアカウントに応じたエンドポイントを使用してください。
米国(US)エンドポイント:
https://log-api.newrelic.com/log/v1欧州連合(EU)エンドポイント:
https://log-api.eu.newrelic.com/log/v1FedRAMPエンドポイント:
https://gov-log-api.newrelic.com/log/v1HTTP設定
Log API経由でログデータをNew Relicアカウントに送信する方法:
を取得します。
JSONペイロードの制限と制限された文字を確認します。
Api-KeyまたはLicense-Keyがヘッダーまたはクエリパラメーターに含まれていることを確認します。ログのJSON例を参照してください。POSTリクエストでNew Relicアカウントの適切なHTTPエンドポイントにJSONメッセージを送信します。- US:
https://log-api.newrelic.com/log/v1 - EU:
https://log-api.eu.newrelic.com/log/v1 - FedRAMP:
https://gov-log-api.newrelic.com/log/v1
- US:
トラフィックを発生させて数分待ってから、アカウントでデータを確認します。
機能を有効にしてもデータが表示されない場合は、トラブルシューティング手順を参照してください。
HTTPヘッダー
HTTPヘッダーを作成する際は、以下のガイドラインに従ってください。
ヘッダー | サポートされている値 |
|---|---|
必須 |
|
Gzip圧縮されたJSON形式に対応しています。圧縮されたJSONを送信する場合は、Content-Type: application/jsonヘッダーとContent-Encoding: gzipヘッダーを含めてください。
認証
は、Log APIへのリクエストを認証するために使用され、送信されたログメッセージが書き込まれるNew Relicアカウントを決定します。これは、HTTPヘッダーまたは任意の文字列として渡す必要があります。
オプション1:HTTPヘッダーを使用して認証する
下記のとおり、カスタムHTTPヘッダーを追加してライセンスキーを渡してください。
ヘッダー | サポートされている値 |
|---|---|
| New Relic 。これをクエリパラメーター経由で送信することもできます。 |
オプション2:クエリ文字列パラメーターを使用して認証する(「ヘッダーレス」認証)
ライセンスキーは、URLのクエリ文字列パラメーターとして渡すこともできます。これは、カスタムHTTPリクエストヘッダーを使用できないクラウドベースのソースからログを送信する場合に便利です。
例: https://LOG_API_ENDPOINT/log/v1?Api-Key=YOUR_API_KEY_HERE
クエリパラメーター | 値 |
|---|---|
| 。HTTPヘッダー経由で送信することもできます。 |
JSONボディ
JSONメッセージは、略式の属性セットまたは詳細な属性セットのいずれかを使用して送信できます。
サポートされている属性タイプ
属性は、以下のいずれかのタイプになります。
JSONリクエスト内のタイプ | New Relicデータベースに保存されているタイプ |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
配列 | 配列は文字列に変換されてから保存されます。OpenTelemetryのログは、同種の配列をサポートしています。詳細については、OpenTelemetryの配列を参照してください。 |
上限値および文字の制限
注意
顧客向けアプリケーションのコード内からNew RelicのAPIを呼び出さないでください。パフォーマンスの問題が発生したり、レスポンスタイムが遅い場合にアプリケーションがブロックされたりする可能性があります。やむを得ずこの方法で処理する必要がある場合は、パフォーマンスの問題を回避するために、New RelicのAPIを非同期で呼び出してください。
Log APIに送信されるログの制限:
- ペイロードの合計サイズ:1MB(10^6 bytes) maximum per POST。圧縮の使用を強く推奨します。
- ペイロードはUTF-8としてエンコードする必要があります。
- イベントあたりの属性数:最大255個。
- 属性名の長さ:255文字。
- 属性値の長さ:最初の4,094文字は、
messageのように同じ名前のLogイベントフィールドとしてNRDBに格納されます。文字列の値が4,094文字を超える場合、長い文字列をブロブとして保存します。
特定の属性には、追加の制限があります。
accountId:これは予約した属性名です。この名前が含まれている場合は、取り込み中に破棄されます。appId:整数である必要があります。整数以外のデータ型を使用した場合、データは取り込まれますが、クエリを実行できなくなります。entity.guid、entity.name、およびentity.type:これらの属性は、エンティティを識別するために内部で使用されます。メトリックデータポイントの属性セクションでこれらのキーとともに送信される値によって、UIのエンティティが見つからない、またはテレメトリが予期されるエンティティと関連していないなどの未定義の動作が発生する場合があります。詳細については、エンティティの合成を参照してください。eventType:これは予約した属性名です。この名前が含まれている場合は、取り込み中に破棄されます。timestamp:Unixエポック形式のタイムスタンプ(秒またはミリ秒単位)、またはISO8601形式のタイムスタンプである必要があります。
重要
タイムスタンプが48時間以上前のペイロードは破棄される可能性があります。
Log APIに送信されるログのレート制限:
- Log APIへのHTTPリクエストの最大送信レート:1分あたり30万件のリクエスト
- Log APIへの非圧縮ログJSONデータの最大送信レート:1分あたり10GB
レート制限違反
レート制限を超えると、Log APIの動作に影響が出ます。その場合は、以下の手順に従ってください。
ログペイロードの形式
有効なJSONペイロードであれば、すべて受け付けます。ペイロードはUTF-8としてエンコードする必要があります。
JSONメッセージ属性
JSONメッセージ属性の解析
New Relicのログ管理機能は、message属性をJSONとして解析します。messageの解析で得られたJSON属性がイベントに追加されます。message属性がJSONでない場合は、そのまま残されます。
以下は、message属性の例です。
{ "timestamp": 1562767499238, "message": "{\"service-name\": \"login-service\", \"user\": {\"id\": 123, \"name\": \"alice\"}}"}以下のように扱われます。
{ "timestamp": 1562767499238, "service-name": "login-service", "user": { "id": 123, "name": "alice" }}ログのJSONの例
属性は、文字列や数値などのスカラー型のJSON値を指定できます。さらに、複合オブジェクト(またはネストされたオブジェクト)を指定することもできます。複合属性に関連付けられた属性はフラット化された名前で保存されます。
例えば、ログエントリの属性内には、次のような複合user属性があります。
"attributes": { "action": "login", "user": { "id": 123, "name": "alice" }}これにより、ログイベントに以下の属性が保存されます。
属性 | 値 |
|---|---|
|
|
|
|
|
|
ログPOSTメッセージの例
ログPOSTメッセージの例:
$POST /log/v1 HTTP/1.1$Host: log-api.newrelic.com$Content-Type: application/json$Api-Key: <YOUR_LICENSE_KEY>$Accept: */*$Content-Length: 319$[{$ "common": {$ "attributes": {$ "logtype": "accesslogs",$ "service": "login-service",$ "hostname": "login.example.com"$ }$ },$ "logs": [{$ "timestamp": <TIMESTAMP_IN_UNIX_EPOCH_OR_IS08601_FORMAT>,$ "message": "User 'xyz' logged in"$ },{$ "timestamp": <TIMESTAMP_IN_UNIX_EPOCH_OR_IS08601_FORMAT>,$ "message": "User 'xyz' logged out",$ "attributes": {$ "auditId": 123$ }$ }]$}]このPOSTメッセージによって、New Relicには以下のログメッセージが保存されます。
属性 | 値 |
|---|---|
|
|
|
|
|
|
以下は、保存後のログにおけるブロック属性の例です。
属性 | 値 |
|---|---|
|
|
|
|
|
|
JSON POSTリクエストの例
以下はJSON POSTリクエストの例です。
$POST /log/v1 HTTP/1.1$Host: log-api.newrelic.com$Content-Type: application/json$Api-Key: <YOUR_LICENSE_KEY>$Accept: */*$Content-Length: 133${$ "timestamp": <TIMESTAMP_IN_UNIX_EPOCH_OR_IS08601_FORMAT>,$ "message": "User 'xyz' logged in",$ "logtype": "accesslogs",$ "service": "login-service",$ "hostname": "login.example.com"$}次のステップ
プラットフォーム全体のロギングデータを調べます。
- コンテキスト内のログ機能でログを転送することで、アプリケーションとプラットフォームのパフォーマンスデータをより深く可視化することができます。
- アラートの設定
- データをクエリし、ダッシュボードを作成します。