ログ転送ソリューション がニーズに合わない場合は、Log API を使用して HTTP エンドポイント経由で New Relic に直接ログデータを送信することができます。
Log API を試してみませんか? New Relic のアカウントを作成してください 無料でご利用いただけます。クレジットカードは必要ありません。
HTTPエンドポイント
お使いのNew Relicアカウントに該当するエンドポイントを使用してください。
米国(US)のエンドポイント。
https://log-api.newrelic.com/log/v1
European Union (EU)のエンドポイントです。
https://log-api.eu.newrelic.com/log/v1
HTTP設定
Log APIを使ってログデータをNew Relicアカウントに送信する。
- Get your New Relic license key.
- JSON ペイロードの 制限と制限文字 を確認してください。
- 必須の headers と body フィールドを使用して、JSON メッセージを生成します。
Api-Key
またはLicense-Key
が headers または query parameters に含まれていることを確認してください。 ログのJSONの例を参照.- JSON メッセージを
POST
リクエストで、New Relic アカウントの適切な HTTP エンドポイントに送信します。
- 米国:
https://log-api.newrelic.com/log/v1
- EU:
https://log-api.eu.newrelic.com/log/v1
- いくつかのトラフィックを生成し、数分待ってから、 あなたのアカウント のデータをチェックしてください。
当社のログ管理機能を有効にしてもデータが表示されない場合は、当社の トラブルシューティング手順 に従ってください。
HTTPヘッダー
HTTPヘッダーを作成する際には、以下のガイドラインを参考にしてください。
ヘッダー | 対応値 |
---|---|
必須 |
|
Gzip 形式の JSON も受け付けます。圧縮されたJSONを送信する場合は、 Content-Type: application/json
and Content-Encoding: gzip
headersを含めてください。
認証
ライセンスキー は、Log API へのリクエストを認証するためのもので、提出したログメッセージが書き込まれる New Relic アカウントを決定します。ライセンスキーは、HTTP ヘッダーまたはクエリ文字列パラメーターとして渡す必要があります。
オプション1:HTTPヘッダーを使った認証
以下のようにカスタムHTTPヘッダーを追加して、ライセンスキーを渡します。
ヘッダー | 対応値 |
---|---|
| A New Relic ライセンスキー 。また、 クエリパラメータで送信することもできます 。 |
オプション 2: クエリ文字列パラメータを使用した認証 ("ヘッダレス" 認証 )
ライセンスキーは、URLのクエリストリングパラメータとして渡すこともできます。これは、カスタムHTTPリクエストヘッダーを許可していないクラウドベースのソースからログを送信する際に便利です。
例: https://LOG_API_ENDPOINT/log/v1?Api-Key=YOUR_API_KEY_HERE
問い合わせパラメータ | 値 |
---|---|
| あなたの ライセンスキー 。また、 HTTPヘッダーで送信することもできます 。 |
JSONボディ
JSONメッセージは、簡略化された属性セットまたは詳細な属性セットのいずれかを使用して送信できます。
対応する属性タイプ
属性は、以下のいずれのタイプでもよい。
JSONリクエストを入力する | New Relic のデータベースに保存されているタイプ |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
配列 | (未対応) |
上限値および文字の制限
注意
顧客向けのアプリケーションのコード内から当社のAPIを呼び出すことは避けてください。これは、パフォーマンスの問題を引き起こしたり、応答時間が遅い場合にアプリケーションをブロックする可能性があります。この方法で行う必要がある場合は、パフォーマンスの問題を回避するために、当社のAPIを非同期に呼び出してください。
Log APIに送信するログの制限。
- ペイロード合計サイズ: POSTあたり最大1MB(10^6バイト)。圧縮の使用を強く推奨します。
- ペイロードは UTF-8 としてエンコードする必要があります。
- イベントごとの属性の数。最大255個
- 属性名の長さ:255文字
- 属性値の長さ。最初の4,094文字はNRDBに
Log
イベントフィールドに同じ名前で格納されます。例えばmessage
。文字列値が4094文字を超える場合は、長い文字列を blob として格納します。
特定の属性には、追加の制限があります。
accountId
: これは予約した属性名です。この名前が含まれている場合は、取り込み中に破棄されます。entity.guid
、entity.name
、およびentity.type
:これらの属性は、エンティティを識別するために内部で使用されます。メトリックデータポイントの属性セクションでこれらのキーとともに送信される値によって、UIのエンティティが見つからない、またはテレメトリが予期されるエンティティと関連していないなどの未定義の動作が発生する場合があります。詳細については、エンティティの合成を参照してください。eventType
: これは予約された属性名です。これが含まれていると、インジェスト時にドロップされます。timestamp
: Unixエポックのタイムスタンプである必要があります。タイムスタンプは、秒数かミリ秒数で定義できます。
重要
48時間以上前のタイムスタンプを持つペイロードはドロップされる可能性があります。
Log APIに送信されるログのレート制限。
- Log APIに送信されるHTTPリクエストの最大レート:300,000リクエスト/分
- Log APIに送信される非圧縮Log JSONバイトの最大レート:10GB/分
レートリミット違反
レートリミットを超えると、Log APIの動作に影響が出ます。このような場合は、以下の手順に従ってください。
ログのペイロードフォーマット
有効なJSONペイロードであれば何でも受け付けます。ペイロードは、 UTF-8 としてエンコードされている必要があります。
JSONメッセージ属性
JSONメッセージの属性解析
当社のログ管理機能は、 メッセージ
属性を JSON として解析します。解析されたメッセージの結果のJSON属性は、イベントに追加されます。 メッセージ
属性が JSON でない場合は、そのままになります。
以下は、 メッセージ
属性の例です。
{ "timestamp": 1562767499238, "message": "{\"service-name\": \"login-service\", \"user\": {\"id\": 123, \"name\": \"alice\"}}"}
として扱われます。
{ "timestamp": 1562767499238, "message": "{\"service-name\": \"my-service\", \"user\": {\"id\": 123, \"name\": \"alice\"}}", "service-name": "my-service", "user": { "id": 123, "name": "alice" }}
ログJSONの例
属性は、文字列や数値などのスカラ型JSONです。また、複合(または ネストした )オブジェクトにすることもできます。複合属性は、関連付けられた属性がフラット化された名前で保存されます。
例えば、ログエントリの属性に複合 ユーザー
属性がある場合を紹介します。
"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>,
"message": "User 'xyz' logged in"
},{
"timestamp": <TIMESTAMP_IN_UNIX_EPOCH>,
"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>,
"message": "User 'xyz' logged in",
"logtype": "accesslogs",
"service": "login-service",
"hostname": "login.example.com"
}
次のステップ
New Relic One UI を使って、プラットフォーム全体のロギングデータを調べることができます。
- logs in context の機能を使ってログを転送することで、アプリケーションとプラットフォームの両方のパフォーマンスデータをより深く把握することができます。
- アラートの設定.
- データのクエリ と ダッシュボードの作成.