ぐるなびの運用課題と解決策

ぐるなびが主に運用で注視しているのは、アクセス集中による負荷上昇だ。これが高まるとサービスに影響を与える障害になりかねない。アクセス集中の原因はいくつかあり、悪意ある攻撃、ボットによるアクセス、(掲載している店舗がテレビで紹介されるなど)外的要因によるアクセス集中などがある。
同じサーバー負荷上昇だとしても、要因ごとに対応が異なる。悪意ある攻撃であればアクセスをブロックする。ボットの場合は全てブロックするわけにはいかないので、適切なアクセス制御で調整していく。外的要因の多くは一時的だが、長期的に続くならスケールアウトを検討する必要もある。
こうして要因ごとに対応が分かれるため、アクセス集中が発生したら、まずはどのようなアクセスか見極めるところから行う。例えば、単一IPからのアクセスか、どのようなユーザーエージェントからアクセスが来ているか、どの国からか、どのパスにアクセスが来ているかなどの情報から見極めていく。
これらの情報は異なるサーバーから出力されるログからなるため、もしログが連携や集約されていなければ都度サーバーにアクセスしてログ解析しなくてはならない。その場合、ログ解析用のコマンドを調整するとか、複数サーバーにわたるログを解析する必要がある。また過去のトレンドとの比較は難しく、ログの数字を見るだけでは傾向を把握しづらい。
こうした課題を解決するのがElasticsearchだ。現在のアクセス数推移に、先週や先々週の同じ時間帯の推移を重ねて見ることができる。またアクセス元の国で色分けした棒グラフで表示したり、アクセス元のユーザーエージェント(AndroidのChromeやiOSのSafariなど)の割合を円グラフで表示したりもできて、直感的に把握が可能だ。またフィルター機能を使えば、時間帯、サーバー、送信元IPアドレスを用いて正常なステータスは除外するなどして、着目すべきものだけを抽出することも可能だ。
これまで紹介したようなグラフをまとめたダッシュボードも作成できる。リアルタイムで、すぐに現在の傾向を把握することができる。

アクセスログ分析では、Elasticsearchを使うことで効率的なログ分析(コマンドを叩くことなくブラウザ上でリアルタイムにログ分析が可能)、視覚的なデータ理解(ダッシュボードでデータの傾向や異常値を一目で把握可能)、共有の容易さ(ダッシュボードのリンクを共有することで他チームメンバーとも簡単に共有や連携可能)といったメリットが得られる。