昨年末に発表された「Amazon Athena」は、S3バケット内のデータをSQLを使って分析できる便利なサービスだ。残念ながら東京リージョンではまだリリースされていないが、実際に使ってみたら安価で便利だったので啓蒙したいと意気込むのは、JAWS-UGさいたま宴会部長の深堀 卓男さん。「AWS Athenaかわいいよペロペロ」という、愛溢れるタイトルのセッションでAthenaの使い方や活用時のポイントを語った。
想定される活用パターンは2つ、中でもS3に溜め込んだログ分析に力を発揮
まずはAWS Athenaのおさらいから、深堀さんのセッションはスタートした。Athenaは分散SQLクエリエンジンPrestoのAWSマネージド版。S3に置いてあるファイルをテーブル化して、標準SQLで投げかけた検索を並列処理で実行してくれる。
「主な使い方は2つあると思います。ひとつは、ビッグデータ分析。JDBCでBIツールから接続可能なようです。RedShiftよりも安いので、併用すればコストを抑えられると思います。もうひとつが今回の主題ですが、運用で蓄積されたログファイル群の集計や調査です」(深堀さん)
最近では、冗長化されたサーバのログをFluentdを使って統合し、s3 pluginでS3に蓄積するのが流行らしい。古くから運営しているサーバでは他の手法も使われているだろうが、いずれにしろS3にログを集約して溜め込んでいる場合は多いだろう。こうしたログファイルを集計調査するために、Athenaは使い勝手がいいと深堀さんは言う。
「私が実際に使ってみた環境では、数十台規模で冗長化されているWebアプリケーションサーバーが稼働しています。ローカルディスクに出力されるログの中から、ユーザの操作に関する数種の監査カスタムログをS3上に蓄積していて、そのログをAthenaで簡単に抽出できるようにしました」(深堀さん)
数MBのログが、約50インスタンス分、毎日S3に蓄積されていく。それをAthenaで分析にできるようにするために要した工数は、実質2週間程度。分析するためのAthena利用コストは1ヶ月数ドル程度とごく低コストだという。簡単に使えて安価、深堀さんがペロペロしたくなる気持ちもわかる。
「とはいえ万能ではなく、向かない使い方もあります。検索回数×参照したデータ量で課金されるので、高頻度で検索すると高コストになります。また、規定時間内に結果応答が必要な同期処理にも向いていません」(深堀さん)
高速な並列処理で実行されるAthenaの検索だが、実行までに時間がかかるようで、応答までの処理時間には大きなばらつきがあるそうだ。深堀さんが経験した中では、同じクエリの処理時間が3秒だったり6秒だったりしたとのこと。ビッグデータ分析では数十秒かかった例も聞くという。「その場合は非同期処理にするなど、ひとひねりの工夫が必要」と深堀さん。
Athenaが力を発揮できるようS3へのログ蓄積に工夫をこらそう
Athena自体の使い方は難しくなく、特に気をつけるべきポイントもないと深堀さんは言うが、それでもパフォーマンスを高めるために工夫すべき点はあるようだ。
「S3にログを保存するとき、必ずgzipで圧縮するようにしましょう。ログファイルはCSVなどのテキストですから、十分の一から数十分の一程度にまで圧縮できるはずです。こうすることでS3のコストも抑えられますし、Athenaが参照するデータ量も減るので検索コストも削減できます」(深堀さん)
そしてもうひとつのポイントがリージョン問題だ。先に書いた通り、2017年8月時点で、Athenaは東京リージョンではリリースされていない。検索速度を考えればAthenaとS3は同じリージョンにある方がいいので、検索速度を考えるならS3のクロスリージョンレプリカ機能を使って、北米のオレゴンなどAthenaが使えるリージョンのS3にログをコピーしておく方がよい。もっとも、データ量が少なかったり検索頻度が低い場合は東京リージョンのS3を対象に検索しても大したコストにはならないようなので、そのあたりは実際の使い方との兼ね合いだろう。
「さらに安く使うためには、Athenaのパーティション機能を使って読み込むログファイルを必要最低限にしましょう。たとえばhostnameやログ種別、日付でログファイルを階層化しておけば、昨日のログを検索したいときに、昨日のログファイルだけを検索対象に指定してコストを抑えられます」(深堀さん)
こうしたチューニングまで考えると、データベース設計や正規表現を理解している人の方が習熟は早いだろう。とはいえ、それらの知識は必須という訳ではなく、他のサービスに比べれば習熟難度は低く、それでいて得られるメリットが大きいため、高コストパフォーマンスなサービスだと深堀さんは言う。
「あとはググってさわってハマって覚えてください。特に、何かあるたびにログファイルをダウンロードしてgrepかけたりしている人は、さっさとAthenaを使うといいですよ」(深堀さん)