ログ転送ソリューション がニーズに合わない場合は、Log API を使用して HTTP エンドポイント経由で New Relic に直接ログデータを送信することができます。
HTTPエンドポイント
お使いのNew Relicアカウントに該当するエンドポイントを使用してください。
米国(US)のエンドポイント。
https://log-api.newrelic.com/log/v1
European Union (EU)のエンドポイントです。
https://log-api.eu.newrelic.com/log/v1
FedRAMP エンドポイント:
https://gov-log-api.newrelic.com/log/v1
HTTP設定
Log APIを使ってログデータをNew Relicアカウントに送信する。
を入手してください。
JSON ペイロードの 制限と制限文字 を確認してください。
Api-Key
またはLicense-Key
がヘッダーまたはクエリパラメータに含まれていることを確認してください。ログのJSONの例を参照してください。POST
リクエストでJSONメッセージをNewRelicアカウントの適切なHTTPエンドポイントに送信します。- 私たち:
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
- 私たち:
いくつかのトラフィックを生成し、数分待ってから、 あなたのアカウント のデータをチェックしてください。
機能を有効にしてもデータが表示されない場合は、トラブルシューティング手順に従ってください。
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リクエストを入力する | NewRelicデータベースに保存されているタイプ |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
配列 | (未対応) |
上限値および文字の制限
注意
顧客向けのアプリケーションのコード内から当社のAPIを呼び出すことは避けてください。これは、パフォーマンスの問題を引き起こしたり、応答時間が遅い場合にアプリケーションをブロックする可能性があります。この方法で行う必要がある場合は、パフォーマンスの問題を回避するために、当社のAPIを非同期に呼び出してください。
Log APIに送信するログの制限。
ペイロードの合計サイズ:
1MB(10^6 bytes) maximum per POST
。 圧縮を使用することを強くお勧めします。
ペイロードは
UTF-8
としてエンコードする必要があります。
イベントごとの属性の数。最大255個
属性名の長さ:255文字
属性値の長さ:最初の4,094文字は、
message
などの同じ名前のLog
イベントフィールドとしてNRDBに格納されます。文字列値が4,094文字を超える場合、長い文字列をblobとして格納します。
一部の特定の属性には、追加の制限があります。
accountId
:これは予約した属性名です。この名前が含まれている場合は、取り込み中に破棄されます。appId
: 整数でなければなりません。整数以外のデータ型を使用すると、データは取り込まれますが、クエリできなくなります。entity.guid
、entity.name
、およびentity.type
:これらの属性は、エンティティを識別するために内部で使用されます。メトリックデータポイントの属性セクションでこれらのキーとともに送信される値によって、UIのエンティティが見つからない、またはテレメトリが予期されるエンティティと関連していないなどの未定義の動作が発生する場合があります。詳細については、エンティティの合成を参照してください。eventType
:これは予約した属性名です。この名前が含まれている場合は、取り込み中に破棄されます。timestamp
: Unix エポック タイムスタンプ (秒単位またはミリ秒単位) または ISO8601 形式のタイムスタンプである必要があります。
重要
タイムスタンプが48時間を超えるペイロードは削除される場合があります。
Log APIに送信されるログのレート制限。
- Log APIに送信されるHTTPリクエストの最大レート:300,000リクエスト/分
- Log APIに送信される非圧縮Log JSONバイトの最大レート:10GB/分
レートリミット違反
レートリミットを超えると、Log APIの動作に影響が出ます。このような場合は、以下の手順に従ってください。
ログのペイロードフォーマット
有効な JSON ペイロードはすべて受け入れられます。 ペイロードはUTF-8としてエンコードされる必要があります。
JSONメッセージ属性
JSONメッセージの属性解析
ログ管理機能は、すべてのmessage
属性をJSONとして解析します。解析されたメッセージの結果の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
メッセージにより、次のログメッセージがNewRelicに保存されます。
属性 | 価値 |
---|---|
|
|
|
|
|
|
ストアドログのブロック属性の例を示します。
属性 | 価値 |
---|---|
|
|
|
|
|
|
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"$}
次は何ですか?
- logs in context の機能を使ってログを転送することで、アプリケーションとプラットフォームの両方のパフォーマンスデータをより深く把握することができます。
- アラートを設定します。
- データをクエリし、ダッシュボードを作成します。