ログストリーミング: Honeycomb
- English
- 日本語
Fastly のリアルタイムログストリーミング機能は、JSON フォーマットのログを Honeycomb に送信することができます。Honeycomb は、デベロッパーが複雑なシステムやマイクロサービス、データベースの操作を調査するためのツールです。
Fastly ではサードパーティのサービスに関する設定等のサポートは行っておりません。詳細は Fastly's Terms of Service をご参照ください。
前提条件
Honeycomb を Fastly サービスのログエンドポイントとして追加する前に、以下の手順を実行する必要があります。
- Honeycomb アカウントを持っていない場合はアカウントを作成してください。
- Honeycomb の Account page で、チームの Write Key を取得します。
- Dataset 名を選択します。複数の環境 (本番環境、開発環境、ステージング環境など) からデータを収集する予定の場合、Honeycomb では環境ごとに Dataset を作成し、それに応じて Dataset に名前を付けることをおすすめします (例:
prod.queries、dev.queries、staging.queries)。Dataset が存在しない場合、Honeycomb は自動的に作成します。
Honeycomb をログエンドポイントとして追加する
- Deliver サービス
- Compute サービス
リモートログストリーミングの設定に関するガイドの情報をご確認ください。
- Honeycomb エリアで、Create endpoint をクリックします。
- Create a Honeycomb endpoint フィールドを以下のように記入します。
Name フィールドに、エンドポイントの分かりやすい名前を入力します。
Placement エリアで、生成された VCL のどこにログコールを配置するかを選択します。有効な値は、形式のバージョンのデフォルトとなしです。詳細については、ログの配置の変更に関するガイドをご覧ください。
- Log format フィールドには、Honeycomb に送信するデータを入力します。詳細はフォーマットの例のセクションを参照してください。
- Write Key フィールドに、Honeycomb チームの Write キーを入力します。これは Honeycomb Account page で確認できます。
- Dataset フィールドに、Honeycomb Dataset の名前を入力します (例:
myDataset)。
Create をクリックして、新しいログ記録エンドポイントを作成します。
Activate メニューから、Activate on Production を選択して、設定の変更をデプロイします。
フォーマットの例
Honeycomb に送られるデータは JSON オブジェクトとしてシリアル化されている必要があります。以下は Honeycomb にデータを送信する書式指定文字列の例です。
123456789101112131415161718192021222324252627282930{ "time":"%{begin:%Y-%m-%dT%H:%M:%SZ}t", "data": { "service_id":"%{req.service_id}V", "time_elapsed":%D, "request":"%m", "host":"%{if(req.http.Fastly-Orig-Host, req.http.Fastly-Orig-Host, req.http.Host)}V", "url":"%{cstr_escape(req.url)}V", "protocol":"%H", "is_ipv6":%{if(req.is_ipv6, "true", "false")}V, "is_tls":%{if(req.is_ssl, "true", "false")}V, "is_h2":%{if(fastly_info.is_h2, "true", "false")}V, "client_ip":"%h", "geo_city":"%{client.geo.city.utf8}V", "geo_country_code":"%{client.geo.country_code}V", "server_datacenter":"%{server.datacenter}V", "request_referer":"%{Referer}i", "request_user_agent":"%{User-Agent}i", "request_accept_content":"%{Accept}i", "request_accept_language":"%{Accept-Language}i", "request_accept_charset":"%{Accept-Charset}i", "cache_status":"%{regsub(fastly_info.state, "^(HIT-(SYNTH)|(HITPASS|HIT|MISS|PASS|ERROR|PIPE)).*", "\\2\\3") }V", "status":"%s", "content_type":"%{Content-Type}o", "req_header_size":%{req.header_bytes_read}V, "req_body_size":%{req.body_bytes_read}V, "resp_header_size":%{resp.header_bytes_written}V, "resp_body_size":%{resp.body_bytes_written}V }}Compute でリモートログストリーミングを設定する方法に関するガイドの情報を確認してください。また、開発者向けドキュメントには、サポートされている言語で書かれた Compute コードを含む、ログ機能に関する情報の詳細が記載されています。
- Honeycomb エリアで、Create endpoint をクリックします。
- Create a Honeycomb endpoint フィールドを以下のように記入します。
名前フィールドに、Computeコードで指定したエンドポイント名を入力してください。例えば、Rustのコード例では、名前は
my_endpoint_nameとなっています。- Write Key フィールドに、Honeycomb チームの Write キーを入力します。これは Honeycomb Account page で確認できます。
- Dataset フィールドに、Honeycomb Dataset の名前を入力します (例:
myDataset)。
Create をクリックして、新しいログ記録エンドポイントを作成します。
Activate メニューから、Activate on Production を選択して、設定の変更をデプロイします。
推奨されるログ形式
Honeycomb に送信されるデータは、Honeycomb の期待に沿った方法でシリアル化する必要があります。ログが正しくフォーマットされていない場合、Honeycomb エンドポイントによるログ処理の試行が失敗する可能性があります。以下は Honeycomb にデータを送信する書式指定文字列の例です。
{ "time": "2022-05-11T23:35:30.384Z", "data": { "message": "Something happened", "severity": "INFO" }}Compute サービスで選択した言語に関係なく、上記の一般的な JSON 構造を使用し、ネストされた data 構造内に具体的な詳細情報を含めることができます。Honeycomb ログメッセージの他のオプションについては、Honeycomb ドキュメントをご参照ください。送信されたログは、有効な JSON としてフォーマットされる必要があります。