Akamai Cloud Monitor のログの収集
この手順では、Akamai Cloud Monitor からログを収集して Sumo Logic に取り込む方法について説明します。
ログ タイプ
Akamai 形式のログでは、リクエストごとに 1 つのログ メッセージがあります。
Akamai Cloud Monitor ログ形式については、Akamai サポートに問い合わせて、ドキュメント『Akamai Log Delivery User Guide (Akamai Log 配信ユーザ ガイド)』をリクエストしてください。「Appendix A: Log Formats and Examples (付録 A: ログの形式と例)」を参照してください。
Akamai Cloud Monitor の有効化
Akamai Cloud Monitor とは、Akamai CDN のトランザクション情報を生成するサービスです。
Akamai 環境で Cloud Monitor を有効にするには、
https://www.akamai.com/us/en/solutions/intelligent-platform/cloud-monitor.jsp のサイトに記載されている手順に従ってください。
Collector の設定
Sumo Logic で、Hosted Collector を新規作成します。
Source の設定
- HTTP Source を設定します。
- Source フィールドを次のように設定します。
- Name (名前): 必須。たとえば、Akamai を使用します。
- Source Category。必須。たとえば、akamai_cloud_monitor を使用します。[Source Category] メタデータ フィールドは、Source を整理してラベル付けするための基本的な構成要素です。詳細については、「ベスト プラクティス」を参照)。
- [Advanced (詳細)] セクションを設定します。
- [Extract timestamp information from log file entries (ログ ファイル エントリからタイムスタンプ情報を抽出する)] をオンにします。
- Timezone (タイムゾーン): ログ ファイルのタイム ゾーンを使用します。どちらも存在しない場合、UTC を使用します。
- Timestamp Format (タイムスタンプ形式)。Auto-Detected
- Encoding Type (エンコーディング タイプ): UTF-8
- Enable Multiline Processing (複数行の処理の有効化)。
- Detect Messages Spanning Multiple Lines (複数行にわたるメッセージを検出する)。False
- Multi Line Boundary (複数行の境界): NA
- [Save (保存)] をクリックします。
HTTP Source について生成された URL エンドポイントを保存します。これは、Akamai を設定するために使用します。
Akamai の設定
- Akamai で Luna Control センターを開き、作業するプロパティに移動します。
- そのプロパティの新しいバージョンを作成して選択します。
- [Property Manager Configuration (プロパティ マネージャ設定)] セクションまでスクロール ダウンします。
- [Add Rule (ルールの追加)] を選択して [Cloud Management (クラウド管理)] を選択します。
- [Cloud Monitor Instrumentation] を追加します。
- HTTP Source から生成される Sumo Logic URL エンドポイントからのパスを [Delivery URL Path (配信 URL パス)] セクションに追加します。(
/receiver/v1/http/<your unique endpoint>
で始まる必要があります)。 - メイン プロパティが表示される画面に戻り、新しいプロパティを追加します。
- HTTPS トラフィックを処理できるように、必ず TLS 証明書を適用してください。
- オリジン サーバを Sumo Logic URL エンドポイントからのサーバとして設定します。
- HTTPS ポートを 443 に設定します。
FER (Field Extraction Rules)
FER (Field Extraction Rules) により、どのフィールドを自動的に parse するかが Sumo Logic に指示されます。手順については、「FER (Field Extraction Rules) の作成」を参照してください。
- Sumo Logic で、[Manage Data (データの管理)] > [Settings (設定)] > [Field Extractions (フィールド抽出)] に移動し、[Add (追加)] をクリックします。
- 次のフィールドを設定します。
- Rule Name (ルール名): 必須 (たとえば、Akamai Cloud Monitor)。
- Scope (範囲): HTTP Source について作成した Source Category を使用します (たとえば、akamai_cloud_monitor)。
- Parse Expression (parse 式): テンプレート Akamai Cloud Monitor を選択し、[Use Template (テンプレートの使用)] をクリックします。parse ステートメントの全文は下にあります。
- [Add (追加)] をクリックします。
Akamai Cloud Monitor 用の FER
parse "\"reqMethod\":\"*\"" as method, "\"status\":\"*\"" as status, "\"fwdHost\":\"*\"" as origin
| parse "\"bytes\":\"*\"" as bytes, "\"edgeIP\":\"*\"" as edgeip, "\"country\":\"*\"" as country, "\"cookie\":\"*\"" as cookie
ログ メッセージのサンプル
{ "type": "cloud_monitor", "format": "default", "version": "1.0", "id": "dce9bc83ff6820435e6633e", "start": "1379543560.807", "cp": "180370", "message": { "proto": "http", "protoVer": "1.0", "status": "200", "cliIP": "109.31.186.162", "reqPort": "80", "reqHost": "www2.acmeco.com", "reqMethod": "GET", "reqPath": "/cart?display=full", "respCT": "", "respLen": "", "bytes": "", "UA": "Chrome/35.0.1916.153", "fwdHost": "" }, "reqHdr": { "accEnc": "gzip", "conn": "Keep-Alive" }, "respHdr": { "accRange": "bytes", "conn": "keep-alive", "contEnc": "gzip", "date": "2016-09-23 23:04:45.697 +0000", "eTag": "\"\"", "lastMod": "Mon,%2023%20Jan%202012%2001:44:17%20GMT", "server": "Apache/2.2.14%20(Ubuntu)", "cookie": "987597820765" }, "netPerf": { "downloadTime": "1594", "netOriginLatency": "40", "originName": "down", "originIP": "", "originInitIP": "10.10.10.10", "originRetry": "0", "lastMileRTT": "43", "cacheStatus": "1", "firstByte": "1", "lastByte": "1", "asnum": "4812", "edgeIP": "" }, "geo": { "country": "us", "region": "", "city": "" }, "waf": { "logVer": "" }, "ipRules": "", "warnRules": "", "denyRules": "" }
クエリのサンプル
エラーを起こしている上位の URL
_sourceCategory=akamai 50?
| parse "\"reqPath\":\"*\"" as path, "\"status\":\"*\"" as status
| urldecode(path) as path
| where status > 499
| where status < 600
| count as errors by path
| sort by errors
キャッシュのパフォーマンス
_sourceCategory=akamai cacheStatus
| parse "\"cacheStatus\":\"*\"" as status
| where !(status="")
| if(status="0", "0 - Non cacheable", if(status="1" OR status="2", "1/2 - Cache Hit", if(status="3", "3 - Cache Miss", ""))) as cachestatus
| count by cachestatus
ホスト別の上位の拒否
_sourceCategory=akamai waf denyRules reqHost
| parse "\"denyRules\":\"*\"" as deny, "\"reqHost\":\"*\"" as host
| where deny != ""
| timeslice 1m
| count by host, _timeslice
| transpose row _timeslice column host