ログストリーミング:Honeycomb

Fastly の リアルタイムログストリーミング 機能は、JSON フォーマットのログを Honeycomb に送信することができます。Honeycomb は、デベロッパーが複雑なシステムやマイクロサービス、データベースの操作を調査するためのツールです。

前提条件

Honeycomb を Fastly サービスのログエンドポイントとして追加する前に、以下の手順を実行する必要があります。

ログエンドポイントとしての Honeycomb の追加

  1. リモートログストリーミングの設定に関するガイドの情報をご参照ください。
  2. Honeycomb Create endpoint ボタンをクリックします。Create a Honeycomb endpoint ページが表示されます。
  3. Create a Honeycomb endpoint フィールドを以下のように記入します。
    • Name フィールドに分かりやすいエンドポイントの名前を入力します。
    • Placement セクションでは、生成される VCL にログコールが配置される場所を選択します。有効な値は Format Version Defaultwaf_debug (waf_debug_log)None です。詳細については、ログ配置の変更に関するガイドをご参照ください。
    • Log format フィールドには、Honeycomb に送信するデータを入力します。詳細は形式の例のセクションを参照してください。
    • Write Key フィールドに、Honeycomb チームの Write キーを入力します。これは Honeycomb Account page で確認できます。
    • Dataset フィールドに、Honeycomb Dataset の名前を入力します (例 : myDataset)。
  4. Create ボタンをクリックすると、新しいログエンドポイントが作成されます。
  5. Activate ボタンをクリックして設定変更をデプロイします。

形式の例

Honeycomb に送られるデータは JSON オブジェクトとしてシリアル化されている必要があります。以下は Honeycomb にデータを送信するための文字列の形式例です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
{
  "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
  }
}
Back to Top