BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース MakeMyTripの大規模Eコマースサイト監視方法

MakeMyTripの大規模Eコマースサイト監視方法

ブックマーク

原文(投稿日:2018/01/29)へのリンク

リクエストに応じて、ノイズを減らす機能を開発しました。大切な情報を見逃さないよう、お気に入りのトピックを選択して、メールとウェブで通知をもらいましょう。

オンライン旅行会社であるMakeMyTripが、モニタリングについての考え方を披露し、いくつかの記事を書いている。同社は、オープンソースのツールを使って、ハイブリッドなインフラをスタックをまたがって監視している。

最初の2つの記事ではシステム、ネットワーク、そしてアプリケーションのモニタリングについて書いている。また、モニタリングパイプラインに対する知見についても書かれている。MakeMyTripのインフラは、データセンター、パブリック、および、プライベートなクラウドで運用されており、物理マシンも仮想マシンも使っている。Zabbixがアラートのための主要なツールであり、OpenTSDB、Kafka、Elasticsearch、Grafanaや自家製のオープンソースのツールを使って、6段階のパイプラインを構築し、メトリクスを収集し保存している。

収集している主要なメトリクスはCPU/ロードの平均値、メモリ、スレッド、コネクション、ディスク空き容量と性能だ。Eコマースサイトでは、ネットワークのモニタリングが重要であり、いくつかの水準で行われている。データセンター間の接続を確認するping、Observiumを使ったネットワーク機器の帯域の監視、外部からの到達とアップタイムのチェックをするUptime Robot。一般的にモニタリングに対する考え方はふたつに分けられる。プルモデルとプッシュモデルだ。プルモデルでは、中央にあるシステムがポーリングをして監視対象のシステムからデータを取得する。Nagiosのような古くからあるツールはこのモデルだが、プッシュモデルのコンポーネントを含んでいるツールもある。プッシュモデルでは、監視対象のシステム上のエージェントがデータを収集し、中央のシステムに送信する。Prometheusのようなツールはプルモデルだが、プッシュオプションがある。MakeMyTripのチームは、プッシュモデルを選択し、Zabbixエージェントを各サーバーで実行している。

モニタリングのパイプラインは6つの段階で構成され、ログからメトリクスを抽出して、時系列データベースであるOpenTSDBにプッシュする。最初の段階では、ログは各サーバで動いているsyslog-ngエージェントによってUDPで中央のLogstashサーバに送られる。syslog-ngは、Unixライクなシステム用のsyslogプロトコルを実装している。ログはgrokパーサーを使ってパースされ、ふたつの異なるElasticsearch (ELS)クラスタにプッシュされる。1日に溜まるログの量は700GBくらいになる。ここが第2段階だ。第3段階では、"Data Monster"と呼ばれる自家製のツールがElasticsearchを定期的にポーリングしてメトリクスを抽出する。メトリクスはCelery Beat、RabbitMQとMySQLで作られたスケジューリングシステムを使って構成されている。このツールはData MonsterでELSからデータをプルし、Kafkaクラスタへプッシュする。この5番目の段階で、OpenTSDBへ書き込まれるPUTステートメントが作られる。Apache Kafkaはストリーミング永続化キューとして使われるのが一般的だ。MakeMyTripのパイプラインでは、Kafkaはメッセージを処理しOpenTSDBにプッシュする。このデータがダッシュボードであるGrafanaを通じて問い合わせを受ける。Zabbixはアラートの生成をする。OpenTSDBは高可用性を実現するため、複数のノードにインストールされる。

クラウド環境では、マシンは揮発性があるので、ツールが監視するべきマシンを追跡するのには困難が伴う。MakeMyTripではZabbixの自動登録の仕組みを活用してこの問題に対処している。Zabbixはテンプレートを使って新しいマシンの登録ができる。LinuxテンプレートはCPUの使用、ロードアベレージ、Javaスレッドなど一般的なメトリクスの収集に使われる。アプリケーション独自のテンプレートはヘルスチェック、アプリケーション性能管理に使われる。

リアルタイムで精緻なメトリクスを取る、というのがチームが注力しているポイントだ。また、HTTPのレスポンスコードやリクエストのトレンドも監視している。レスポンスコードを監視することで、問題を素早く把握できる。リクエストのトレンドは、クライアント/サーバ側のエラーのスパイクやアプリケーションの性能に対する早期の警告システムとして動作する。リクエスト数のトレンドを追跡するとキャパシティの計画にも役に立つ。

 
 

Rate this Article

Adoption Stage
Style
 
 

この記事に星をつける

おすすめ度
スタイル

BT