- English
- 日本語
ログストリーミング: Coralogix
最終更新日 2024-07-03
Fastly のリアルタイムログストリーミング機能によって Coralogix にログファイルを送信することができます。Coralogix は動的アラート、比率ベースのアラート、フローの異常検出、そして 脅威発見機能などで異常な動作を検出できる分析プラットフォームを提供しています。
注意
Fastly ではサードパーティのサービスに関する直接のサポートは行っておりません。詳細については、Fastly のご利用規約をご覧ください。
前提条件
まだ Coralogix のアカウントをお持ちでない場合、Coralogix の Web サイトの登録手順に従ってアカウントを登録する必要があります。登録が完了したら、Coralogix のダッシュボードの Settings セクションにある Send Your Logs エリアに移動し、固有の秘密鍵をメモします。この秘密鍵は、お客様が送信したデータをお客様のアカウントと関連付けるために、Coralogix によって使用されます。Fastly でエンドポイントを設定する際に必要となります。
ヒント
Coralogix の Fastly との統合 に関するドキュメントをお読みください。
Coralogix をログエンドポイントとして追加
以下の手順で、Coralogix をログエンドポイントとして追加します。
- Deliver サービス
- Compute サービス
- リモートログストリーミングの設定に関するガイドをご確認ください。
- HTTPS エリアで、Create endpoint をクリックします。
- Create an HTTPS endpoint フィールドに次のように入力します。
- Name フィールドに分かりやすいエンドポイントの名前を入力します。
- Placement セクションでは、生成される VCL にログコールが配置される場所を選択します。有効な値は Format Version Default、waf_debug (waf_debug_log)、None です。詳細については、ログ配置の変更に関するガイドをご覧ください。
- Log format フィールドで、プレースホルダーとして入力されているログ形式を、以下の推奨されるログ形式とフィールド設定に示すように適切に変更してください。
- URL フィールドに、Coralogix Domain の Coralogix REST API Singles Endpoint を入力します。 例えば、
https://ingress.coralogix.us/logs/v1/singles
ドメインにはcoralogix.us
を使用できます。 - Maximum logs フィールドは、デフォルトの値である
0
のままにしておきます。 - Maximum bytes フィールドに、
2000000
を入力します。
- Advanced options をクリックして、以下のようにフィールドにすべて入力します。
- Content type フィールドに
application/json
を入力します。 - Custom header name フィールドに
Authorization
を入力します。 - Custom header value フィールドに
Bearer <your Coralogix private key>
を入力します。 - Method コントロールから、POST を選択します。
- JSON log entry format コントロールから、Array of JSON を選択します。
- Select a log line format コントロールはデフォルトのままにします。
- 残りのフィールドは空白のままにします。
- Content type フィールドに
- Create をクリックして新規のログエンドポイントを作成します。
- Activate をクリックして設定への変更をデプロイします。
注意
Coralogix では、HTTPS ドメイン所有権証明の要件を満たすように特に設定する必要はなく、警告を無視しても問題ありません。
推奨されるログ形式とフィールド設定
以下のログ形式を使用します。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
{ "timestamp":%{time.start.msec}V, "applicationName":"fastly", "subsystemName":"%{req.service_id}V", "severity": 3, "json": { "time": { "start":"%{begin:%Y-%m-%dT%H:%M:%S%Z}t", "end":"%{end:%Y-%m-%dT%H:%M:%S%Z}t", "elapsed":%D }, "cdn_server": { "ip_ipaddr":"%A", "code":"%{server.datacenter}V", "hostname":"%{server.hostname}V", "region_code":"%{server.region}V", "response_state":"%{fastly_info.state}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" }, "client": { "city_name":"%{client.geo.city.utf8}V", "country_code":"%{client.geo.country_code}V", "country_name":"%{client.geo.country_name}V", "continent_code":"%{client.geo.continent_code}V", "region":"%{client.geo.region}V", "ip_ipaddr":"%h", "name":"%{client.as.name}V", "number":"%{client.as.number}V", "connection_speed":"%{client.geo.conn_speed}V", "location_geopoint": { "lat":%{client.geo.latitude}V, "lon":%{client.geo.longitude}V } }, "response": { "status":%>s, "content_type":"%{Content-Type}o", "age":"%{Age}o", "cache_control":"%{Cache-Control}o", "expires":"%{Expires}o", "last_modified":"%{Last-Modified}o", "tsv":"%{TSV}o", "header_size":%{resp.header_bytes_written}V, "body_size":%B }, "request": { "host":"%{req.http.host}V", "is_ipv6":%{if(req.is_ipv6, "true", "false")}V, "backend":"%{req.backend}V", "service_id":"%{req.service_id}V", "url":"%{cstr_escape(req.url)}V", "url_ext":"%{req.url.ext}V", "header_size":%{req.header_bytes_read}V, "body_size":%{req.body_bytes_read}V, "method":"%m", "protocol":"%H", "referer":"%{Referer}i", "user_agent":"%{User-Agent}i", "accept_content":"%{Accept}i", "accept_language":"%{Accept-Language}i", "accept_encoding":"%{Accept-Encoding}i", "accept_charset":"%{Accept-Charset}i", "connection":"%{Connection}i", "dnt":"%{DNT}i", "forwarded":"%{Forwarded}i", "via":"%{Via}i", "cache_control":"%{Cache-Control}i", "x_requested_with":"%{X-Requested-With}i", "x_att_device_id":"%{X-ATT-Device-Id}i", "x_forwarded_for":"%{X-Forwarded-For}i" }, "socket": { "cwnd":%{client.socket.cwnd}V, "pace":%{client.socket.pace}V, "nexthop":"%{client.socket.nexthop}V", "tcpi_rcv_mss":%{client.socket.tcpi_rcv_mss}V, "tcpi_snd_mss":%{client.socket.tcpi_snd_mss}V, "tcpi_rtt":%{client.socket.tcpi_rtt}V, "tcpi_rttvar":%{client.socket.tcpi_rttvar}V, "tcpi_rcv_rtt":%{client.socket.tcpi_rcv_rtt}V, "tcpi_rcv_space":%{client.socket.tcpi_rcv_space}V, "tcpi_last_data_sent":%{client.socket.tcpi_last_data_sent}V, "tcpi_total_retrans":%{client.socket.tcpi_total_retrans}V, "tcpi_delta_retrans":%{client.socket.tcpi_delta_retrans}V, "ploss":%{client.socket.ploss}V } }}
以下の推奨形式の最初の5つのフィールドは必須です。
timestamp
: このフィールドの形式は変更しないでください。applicationName
: このフィールドにはアプリケーションの名前を入力してください。subsystemName
: このフィールドにサブシステムの名前を入力してください。これは、コンポーネントを分離するために使用されます。例ではreq.service_id
を使用していますが、これは対人可読媒体ではありません。サブシステムを識別するのに分かりやすい、意味のあるサブシステム名を使用してください。severity
: 重大度を指定し、以下の選択肢を使用してすべてのログに適用することができます: 1 (デバッグ)、2 (冗長化)、3 (情報)、4 (警告)、5 (エラー)、6 (危機的)。これは後から、後述の抽出ルールを使って変更することができます。json (object)
: 必要に応じてフィールドを追加または削除してください。静的フィールドを追加することができます。Fastly VCL リファレンス に記載されているフィールドを含む、ネスト化された JSON 形式がサポートされています。ネストされた
response.status
フィールドの指定は、リクエストのサービスを特定するための便利な方法です。Coralogix 解析ルールを使用すると、ログのステータスコード値で Coralogix インターフェイスの重大度フィールドにデータを入力するように JSON 抽出ルールを設定することができます。具体的には、HTTP ステータスコードを重大度の値を自動的にマッピングすることができます。例えば、ステータスコード2xx
は Coralogix の深刻度を "INFO" とし、 ステータスコード4xx
は Coralogix の深刻度を "ERROR" とします。Coralogix コントロールパネルでは、以下のように表示されます。
Coralogix ダッシュボードとアラートの設定
Coralogix は、ダッシュボードやアラートを介して Fastly と自社サービスを統合するためのチュートリアルを提供しています。サービスの概要、ビジターの内訳、サービスの質など、Fastly のデータを使って作成されたデータダッシュボードの例が掲載されています。
チュートリアルでは、Fastly からのログの受信問題、オリジンでの障害、エラー率やキャッシュミスの増加、様々な異常や疑わしいリクエスト、Web サイトの改ざんなどの状況に応じてユーザー定義アラート設定する方法も説明されています。
翻訳についての注意事項
このフォームを使用して機密性の高い情報を送信しないでください。サポートが必要な場合は、サポートチームまでご連絡ください。このフォームは reCAPTCHA によって保護されており、Google のプライバシーポリシーと利用規約が適用されます。