ログストリーミング:Splunk
最終更新日 2021-09-01
Fastly のリアルタイムログストリーミング機能によって、ログファイルを Splunk に送信することができます。Splunk は、開発者や IT チームが使用するウェブベースのログ分析プラットフォームです。
Fastly ではサードパーティのサービスに関する直接のサポートは行っておりません。詳細については、Fastly サービスの利用規約をご参照ください。
前提条件
Splunk をログエンドポイントとして使用するには、HTTP イベントコレクター (HEC) を有効にし、トークンを作成・有効にする必要があります。Splunk の Web サイトに掲載されている次の指示に従ってください。
- HEC を有効にする
- HEC トークンを作成する。
- HEC トークンを有効にする
- ログストリーミングに Fastly が使用するトークンのインデクサー確認を無効にする
HEC トークンは忘れずに記憶しておいてください。また、コレクターの URL を特定する必要があります。URL の構造は、使用している Splunk インスタンスの種類によって異なります。Splunk インスタンスの URL 構造を、以下から選んでください。
種類 | URL |
---|---|
セルフホスト型 | https://<hostname>:8088/services/collector/event |
セルフサービスの Splunk Cloud プラン | https://input-<hostname>:8088/services/collector/event |
その他の Splunk Cloud プラン | https://http-inputs-<hostname>:8088/services/collector/event |
Splunk にログインすると、Web ブラウザのアドレスバーで URL のホスト名を検索することができます。
Splunk をログエンドポイントとして追加する
Splunk アカウントを作成し、カスタマートークンを取得した後、Fastly サービスのログエンドポイントとして、以下の指示に従って Splunk を追加してください。
- リモートログストリーミングの設定に関するガイドの情報をご参照ください。
- Splunk Create endpoint ボタンをクリックします。Create a Splunk endpoint ページが表示されます。
- Create a Splunk endpoint 欄に以下のように記入します。
- Name フィールドに分かりやすいエンドポイントの名前を入力します。
- Placement セクションでは、生成される VCL にログコールが配置される場所を選択します。有効な値は Format Version Default、waf_debug (waf_debug_log)、None です。詳細については、ログ配置の変更に関するガイドをご参照ください。
- Log format 欄には、ログフォーマットに使用するための Apache 形式の文字列や VCL 変数を入力します。推奨されるログフォーマットをご利用ください。
- URL 欄には、データを送信する URL を入力します (例:
https://<splunk_host>:8088/services/collector/event/1.0
)。 - Token 欄には、HEC のトークンを入力します。
- Use TLS 制御から、TLS を有効にするかどうかを選択します。Yes を選択すると、追加の TLS 欄が表示されます。
- TLS hostname フィールドに、サーバーの証明書を検証するためのホスト名を任意で入力します。これは、証明書のサブジェクト代替名(SAN)フィールドの1つと同じである必要があります。コモンネーム(CN)はサポートされていません。Splunk Enterprise をご利用の場合は、Splunk Enterprise セクションを参照してください。
- TLS CA certificate 欄には、オリジン証明書が有効であることを確認するために使用する CA 証明書を入力します。これは PEM 形式でなければなりません。オリジン側の TLS 証明書が周知の機関によって署名されていれば、必要ありません。TLS CA 証明書の使用に関するセクションを参照してください。
- TLS client certificate 欄には、オリジンサーバーへの認証に使用する TLS クライアント証明書をオプションでコピー・ペーストしてください。 アップロードする TLS クライアント証明書は、PEM 形式で、クライアント証明書を添付する必要があります。TLS クライアント証明書により、Fastly が接続を実行していることをサーバーが認証できるようになります。このフィールドは、Use TLS メニューから Yes を選択した場合にのみ表示されます。
- TLS client key 欄には、バックエンドサーバーへの認証に使用する TLS クライアントキーをオプションでコピー・ペーストしてください。アップロードする TLS クライアントキーは、PEM 形式で、TLS クライアント証明書を添付する必要があります。TLS クライアントキーにより、Fastly が接続を実行していることをサーバーが認証できるようになります。
- Maximum logs 欄には、バッチに追加するログの最大数 (0以外) をオプション任意で入力します。
- Maximum bytes 欄には、ログバッチの最大サイズをオプションで入力します。
- Create ボタンをクリックすると、新しいログエンドポイントが作成されます。
- Activate ボタンをクリックして設定変更をデプロイします。
推奨されるログ形式
Splunk にデータを送信するために、以下のログフォーマットを使用することをお勧めします。
Splunk HEC に送信されるすべての JSON は、イベントフィールドがなくてはなりません。イベントフィールドには、テキストまたはネストされた JSON を使用できます。また、ペイロードには他のメタデータが含まれることもあります。さらに詳しい情報は、Splunk ドキュメントをご参照ください。
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
{
"time":%{time.start.sec}V,
"host":"%{Fastly-Orig-Host}i",
"event": {
"service_id":"%{req.service_id}V",
"time_start":"%{begin:%Y-%m-%dT%H:%M:%S%Z}t",
"time_end":"%{end:%Y-%m-%dT%H:%M:%S%Z}t",
"time_elapsed":%D,
"client_ip":"%h",
"client_as_name":"%{client.as.name}V",
"client_as_number":"%{client.as.number}V",
"client_connection_speed":"%{client.geo.conn_speed}V",
"request":"%m",
"protocol":"%H",
"origin_host":"%v",
"url":"%{cstr_escape(req.url)}V",
"is_ipv6":%{if(req.is_ipv6, "true", "false")}V,
"is_tls":%{if(req.is_ssl, "true", "false")}V,
"tls_client_protocol":"%{cstr_escape(tls.client.protocol)}V",
"tls_client_servername":"%{cstr_escape(tls.client.servername)}V",
"tls_client_cipher":"%{cstr_escape(tls.client.cipher)}V",
"tls_client_cipher_sha":"%{cstr_escape(tls.client.ciphers_sha )}V",
"tls_client_tlsexts_sha":"%{cstr_escape(tls.client.tlsexts_sha)}V",
"is_h2":%{if(fastly_info.is_h2, "true", "false")}V,
"is_h2_push":%{if(fastly_info.h2.is_push, "true", "false")}V,
"h2_stream_id":"%{fastly_info.h2.stream_id}V",
"request_referer":"%{Referer}i",
"request_user_agent":"%{User-Agent}i",
"request_accept_content":"%{Accept}i",
"request_accept_language":"%{Accept-Language}i",
"request_accept_encoding":"%{Accept-Encoding}i",
"request_accept_charset":"%{Accept-Charset}i",
"request_connection":"%{Connection}i",
"request_dnt":"%{DNT}i",
"request_forwarded":"%{Forwarded}i",
"request_via":"%{Via}i",
"request_cache_control":"%{Cache-Control}i",
"request_x_requested_with":"%{X-Requested-With}i",
"request_x_att_device_id":"%{X-ATT-Device-Id}i",
"request_x_forwarded_for":"%{X-Forwarded-For}i",
"status":"%s",
"content_type":"%{Content-Type}o",
"cache_status":"%{regsub(fastly_info.state, "^(HIT-(SYNTH)|(HITPASS|HIT|MISS|PASS|ERROR|PIPE)).*", "\\2\\3")}V",
"is_cacheable":%{if(fastly_info.state ~"^(HIT|MISS)$", "true", "false")}V,
"response_age":"%{Age}o",
"response_cache_control":"%{Cache-Control}o",
"response_expires":"%{Expires}o",
"response_last_modified":"%{Last-Modified}o",
"response_tsv":"%{TSV}o",
"server_datacenter":"%{server.datacenter}V",
"server_ip":"%A",
"geo_city":"%{client.geo.city.utf8}V",
"geo_country_code":"%{client.geo.country_code}V",
"geo_continent_code":"%{client.geo.continent_code}V",
"geo_region":"%{client.geo.region}V",
"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":%B,
"socket_cwnd":%{client.socket.cwnd}V,
"socket_nexthop":"%{client.socket.nexthop}V",
"socket_tcpi_rcv_mss":%{client.socket.tcpi_rcv_mss}V,
"socket_tcpi_snd_mss":%{client.socket.tcpi_snd_mss}V,
"socket_tcpi_rtt":%{client.socket.tcpi_rtt}V,
"socket_tcpi_rttvar":%{client.socket.tcpi_rttvar}V,
"socket_tcpi_rcv_rtt":%{client.socket.tcpi_rcv_rtt}V,
"socket_tcpi_rcv_space":%{client.socket.tcpi_rcv_space}V,
"socket_tcpi_last_data_sent":%{client.socket.tcpi_last_data_sent}V,
"socket_tcpi_total_retrans":%{client.socket.tcpi_total_retrans}V,
"socket_tcpi_delta_retrans":%{client.socket.tcpi_delta_retrans}V,
"socket_ploss":%{client.socket.ploss}V
}
}
TLS の CA 証明書を使用する
Splunk Enterprise や Splunk Cloud にてご自身の TLS 証明書をインストールしている場合には、関連する CA 証明書を提供する必要があります。
Splunk Cloud
Splunk Cloud の場合、以下の CA 証明書がデフォルトで 使用されています。
1
2
3
4
5
6
7
8
9
10
11
12
13
-----BEGIN CERTIFICATE-----
MIIB/DCCAaGgAwIBAgIBADAKBggqhkjOPQQDAjB+MSswKQYDVQQDEyJTcGx1bmsg
Q2xvdWQgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MRYwFAYDVQQHEw1TYW4gRnJhbmNp
c2NvMRMwEQYDVQQKEwpTcGx1bmsgSW5jMQswCQYDVQQIEwJDQTEVMBMGA1UECxMM
U3BsdW5rIENsb3VkMB4XDTE0MTExMDA3MDAxOFoXDTM0MTEwNTA3MDAxOFowfjEr
MCkGA1UEAxMiU3BsdW5rIENsb3VkIENlcnRpZmljYXRlIEF1dGhvcml0eTEWMBQG
A1UEBxMNU2FuIEZyYW5jaXNjbzETMBEGA1UEChMKU3BsdW5rIEluYzELMAkGA1UE
CBMCQ0ExFTATBgNVBAsTDFNwbHVuayBDbG91ZDBZMBMGByqGSM49AgEGCCqGSM49
AwEHA0IABPRRy9i3yQcxgMpvCSsI7Qe6YZMimUHOecPZWaGz5jEfB4+p5wT7dF3e
QrgjDWshVJZvK6KGO7nDh97GnbVXrTCjEDAOMAwGA1UdEwQFMAMBAf8wCgYIKoZI
zj0EAwIDSQAwRgIhALMUgLYPtICN9ci/ZOoXeZxUhn3i4wIo2mPKEWX0IcfpAiEA
8Jid6bzwUqAdDZPSOtaEBXV9uRIrNua0Qxl1S55TlWY=
-----END CERTIFICATE-----
Splunk Enterprise
Splunk Enterprise では証明書のセットがデフォルトで提供されていますが、Fastly ログエンドポイント向けにご自身の証明書を設定することを強く推奨します。Splunk Enterprise によって提供される証明書には Common Name (CN) のみが指定されているため、証明書を提示する Splunk ホスト ID の確認には適していません。また全ての Splunk Enterprise ダウンロードにおいて同じルート証明書が利用可能であるため、これらの証明書の安全性は高くありません。より優れたセキュリティ体制を維持するためにも、デフォルトの証明書に頼らず、お客様自身の証明書を設定することをお勧めします。Splunk ドキュメントにて独自の証明書を設定するためのガイドをご覧ください