ログのフォーマット変更
Last updated November 06, 2019
Fastlyのリアルタイムログストリーミング機能では、選択したログエンドポイントに配信されるログメッセージの形式を変更できます。デフォルトでは、標準の syslog 形式でログメッセージは送信されます。 プリフィックスのフォーマットは下記のようになります(RFC 3164 で定義されている)。
1
<134>2016-07-04T22:37:26Z cache-sjc3128 LogTest[62959]: <your log message>
プリフィックスはメッセージ優先度(常に <134>
: Facility = Local0、Severity = Informational
の意味)が先頭で、ログが送信された日時(2016-07-04T22:37:26Z
)、キャッシュノード(この場合は cache-sjc3128
)、ログの名前(LogTest
)、それを送信するプロセスのID(62959
)と続きます。
利用可能なメッセージフォーマット
デフォルトのメッセージフォーマットのプリフィックスは、ほとんどのログサービスで処理できますが、下記に変更することも可能です。
classic
はデフォルトのプリフィックスです。RFC 3164 で定義されている標準 syslog 形式となります。-
loggly
は RFC 5424 に基づいた構造化された syslog プリフィックス形式です。 -
logplex
は Heroku 形式に対応しています。プリフィックス付き syslog 形式。 -
blank
はプリフィックスがなく、ログメッセージのみの形式です。JSON ファイルや CSV ファイルとして書き込むときに便利です。
メッセージフォーマットの変更
多くのログエンドポイントは、コントロールパネルまたは API を使用してデフォルト以外のログメッセージフォーマットに設定変更することができます。
コントロールパネルでの設定変更
コントロールパネルを使用してログエンドポイントの変更をするには、以下の手順に従ってください。
- Fastly コントロールパネルにログインし、Configure のリンクをクリックします。
- サービスメニューから設定対象のサービスを選択します。
- Edit configuration ボタンをクリックし、Clone active を選択すると設定画面が開きます。
- Logging リンクをクリックします。Logging endpoints 設定画面が表示されます。
- 編集するログエンドポイントの名前をクリックします。Edit this endpoint 設定画面が表示されます。
-
ページの下部にある Advanced options リンクをクリックします。Advanced options が表示されます。
- Select a log line format で、ログエンドポイントのメッセージフォーマットを選択します。
- Update ボタンをクリックします。
- Activate ボタンをクリックしてサービスをデプロイします。
API での設定
次のコマンドを実行して API 経由でログエンドポイントの変更を行うことができます。
1
curl -X PUT -H 'Fastly-Key: FASTLY_API_TOKEN' -H 'Content-Type: application/json' 'https://api.fastly.com/service/<your Fastly service ID>/version/<version number/logging/<log type>/<log name>' --data-binary '{"message_type":"<type>"}'
message_type
フィールドはオブジェクト単位の設定であることに注意してください。ある1つのログオブジェクトで変更しても、他のオブジェクトには影響ありません。
たとえば "GCS Test" という名前の Google Cloud Storage エンドポイントのメッセージタイプを blank に設定する cURL コマンドは次のようになります。
1
curl -X PUT -H 'Fastly-Key: FASTLY_API_TOKEN' -H 'Content-Type: application/json' 'https://api.fastly.com/service/SU1Z0isxPaozGVKXdv0eY/version/1/logging/gcs/GCS%20Test' --data-binary '{"message_type":"blank"}'
注意: ログ名 log name
は URLエンコード する必要があり、スペースを %20
としています。