ChaosSearchでAmazon CloudFrontのログからグラフを作成してみる
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を選択した場合だと、このように表示されます。
何かしらの項目の件数をグラフにする場合、
Metrics
のAggregation
をCount
にします。
Bucketsの追加でSplit Slices
を選択し、
Aggregation
をTerms
, Field
には集計するカラム名を選択します。
Order by
やOrder
などの並び替え項目も適時設定します。
設定完了後は、Update
をクリックしてグラフを更新します。
Save
をクリックして表示させたグラフなどは保存できます
以下、視覚化の例
エッジロケーションの上位件数
アクセス数の上位
レスポンスを分類した方法
このように様々な視覚化が可能です
作成したVisualizeをダッシュボードに追加することもでsきます。
最後に
Cloudfrontのログからインデックスを作成し、そのデータを視覚化する方法を学びました。
ChaosSearchは、S3のバケットからのデータから視覚化などの分析を開始するために複雑なことをする必要がありませんでした。 数分以内に実行できると言われていますが、これがChaosSearchを使用する大きなメリットなのだと思います。
参考ドキュメント: