ChaosSearchでAmazon CloudFrontのログからグラフを作成してみる

2021.12.07

ChaosSearchを使ってAmazon CloudFrontのログを視覚化する方法を学んでいきたいと思います

ChaosSearchのアカウントですが、以前の記事で取得したトライアルを利用します。

CloudFrontのログ

対象となるCloudFrontのディストリビューションのログがS3に出力されるように設定します。

ディストリビューションの詳細画面の一般タブをクリックし、設定項目の編集ボタンをクリックします。

標準ログ記録の項目までスクロールし、オンにチェックをつけて出力先のS3バケットを設定して保存します。

ログプレフィックスも必要に応じて設定しましょう。

※ 出力先のS3バケットは、ChaosSearchから読み込みが可能な権限がついている、そしてus-east-1のバケット(トライアルの条件)にしないといけません。

アクセスをし、上記のように指定したバケットにログ(gz形式)が保存されているか確認しておきましょう。

ChaosSearchの設定

Object Groupの作成

ログが保存されているバケット内の詳細なオブジェクト分析をするため、Object Groupを作成します。

対象のバケットを選択した後、Create Object Groupをクリックします。

Prefix, Regex Filterを使い、CloudFrontのログがGroupの対象となるように設定します。

フィルタリングされたファイルの中身がプレビューできます。

CloudFrontの標準ログの形式はこちら

ChaosSearchは自動検出できない可能性のある正規表現のサポートを提供しています。

FormatをCSVにして自動検出を試してみましたが、うまくインデックスの作成がいかなかったので正規表現を使って設定しました。

FormatはLog, Compressionはgzipにし、

Format Regexはドキュメントに記載されていた

^(?:(?:#[^\n]+)|(?:(?<date>[^\\t]+)\\t(?<time>[^\\t]+)\\t(?<edge_location>[^\\t]+)\\t(?<sc_bytes>[^\\t]+)\\t(?<c_ip>[^\\t]+)\\t(?<cs_method>[^\\t]+)\\t(?<cs_host>[^\\t]+)\\t(?<cs_uri_stem>[^\\t]+)\\t(?<cs_status>[^\\t]+)\\t(?<referer>[^\\t]+)\\t(?<user_agent>[^\\t]+)\\t(?<uri_query>[^\\t]+)\\t(?<cookie>[^\\t]+)\\t(?<edge_result_type>[^\\t]+)\\t(?<edge_result_id>[^\\t]+)\\t(?<host_header>[^\\t]+)\\t(?<protocol>[^\\t]+)\\t(?<bytes>[^\\t]+)\\t(?<time_taken>[^\\t]+)\\t(?<forwarded_for>[^\\t]+)\\t(?<ssl_protocol>[^\\t]+)\\t(?<ssl_cipher>[^\\t]+)\\t(?<edge_response_result_type>[^\\t]+)\\t(?<protocol_version>[^\\t]+)\\t(?<fle_status>[^\\t]+)\\t(?<fle_encrypted_fields>[^\n]+)))

にします。 Validateをクリックすると正規表現を確認してくれて、結果も表示してくれました。

設定完了後、Create Object Groupをクリックします。

Object Groupの名前を入力し、あとはデフォルトのままCreate and StartをクリックしてObject Group作成とインデックスの作成両方行います。

インデックスが作成されると、GROUP CONTENTのエリアに詳細な情報が表示されます。 正規表現で設定した通りのマッピングになっているかも確認できます。

インデックスビューの作成

RefineryページのCreate Viewをクリックし、ビューを作成します。

作成したインデックスを選択するかフィルターを行い、Nextをクリックします。

インデックスの中身(カラム名と型)が表示されます。 ここでTransformationを行なってデータを弄れますが、今回は何もせずこのまま先に進みます。

ビューの名前をつけて作成を完了させます

ここまでで視覚化するための準備は完了となります。

視覚化

組み込まれているKibanaを使って視覚化することができます。

Chaossearchのインデックスからチャートやグラフを作成するには、Analytics->VisualizeのページからCreate new visualizationをクリックして作成します。

visualization typeを選択します。多数のチャートとグラフが用意されています。

検索ソースを選択します。ここには作成したビューが表示されています。

PIEを選択した場合だと、このように表示されます。

何かしらの項目の件数をグラフにする場合、

MetricsAggregationCountにします。

Bucketsの追加でSplit Slicesを選択し、

AggregationTerms, Fieldには集計するカラム名を選択します。

Order byOrderなどの並び替え項目も適時設定します。

設定完了後は、Update をクリックしてグラフを更新します。

Saveをクリックして表示させたグラフなどは保存できます

以下、視覚化の例

エッジロケーションの上位件数

アクセス数の上位

レスポンスを分類した方法

このように様々な視覚化が可能です

作成したVisualizeをダッシュボードに追加することもでsきます。

最後に

Cloudfrontのログからインデックスを作成し、そのデータを視覚化する方法を学びました。

ChaosSearchは、S3のバケットからのデータから視覚化などの分析を開始するために複雑なことをする必要がありませんでした。 数分以内に実行できると言われていますが、これがChaosSearchを使用する大きなメリットなのだと思います。

参考ドキュメント: