Life360 インタビュー

2016年3月23日筆者: Brian Brazil

Prometheus ユーザーへのインタビューシリーズの第1回です。今回は、Life360 の Daniel 氏に、Prometheus の評価と使用経験について伺います。

ご自身と Life360 について教えていただけますか?

私は Daniel Ben Yosef、別名 dby と申します。Life360 のインフラストラクチャ エンジニアをしており、それ以前は 9 年間、システム エンジニアリングの役割を担っていました。Life360

Life360 は、家族がつながりを保つためのテクノロジーを作成しており、私たちは家族のためのファミリーネットワークアプリです。私たちはこれらの家族をサポートするために非常に忙しく、ピーク時には 7,000 万人の登録家族に対して、1 分間に 70 万件のリクエストを処理しています。

本番環境では約 20 のサービスを管理しており、そのほとんどがモバイルクライアント(Android、iOS、Windows Phone)からの位置情報リクエストを処理しており、ピーク時には 150 を超えるインスタンスに分散しています。冗長性と高可用性が私たちの目標であり、家族が私たちの可用性を信頼しているため、可能な限り 100% の稼働時間を維持するよう努めています。

MySQL マルチマスタークラスターと、常に約 4TB のデータを持つ 12 ノードの Cassandra リングの両方にユーザーデータを保持しています。Go、Python、PHP で記述されたサービスがあり、Java をスタックに導入する計画もあります。サービスディスカバリには Consul を使用しており、もちろん Prometheus セットアップもこれと統合されています。

Prometheus導入前のモニタリング経験について教えてください。

Prometheus に切り替える前の私たちのモニタリングセットアップには、次のような多くのコンポーネントが含まれていました。

  • Copperegg (現 Idera)
  • Graphite + Statsd + Grafana
  • Sensu
  • AWS Cloudwatch

主に MySQL、NSQ、HAProxy を使用しており、上記で言及したすべてのモニタリングソリューションは非常に断片的で、実際にすべてを連携させるには多くのカスタマイズが必要でした。

Prometheusを検討することにした理由は何ですか?

Prometheus に切り替えた理由はいくつかありますが、その一つは、単純により良いモニタリングが必要だったことです。

Prometheus は以前から知っており、活発な開発状況を追跡・調査していました。そして数ヶ月前、本番環境での使用を評価し始めようと決定しました。

PoC の結果は信じられないほどでした。MySQL のモニタリングカバレッジは素晴らしく、Cassandra の JMX モニタリングも非常に気に入りました。これは以前は非常に不足していました。

Cassandra Client Dashboard

どのように移行しましたか?

最初は比較的小さなマシン(メモリ 4GB)から始めました。少数のサービスには効果的でしたが、私たちの完全なモニタリングニーズには対応できませんでした。

当初は Docker でデプロイしていましたが、徐々に r3.2xl インスタンス(RAM 60GB)の専用マシンに移行し、現在では 30 日間のインメモリデータとともに、すべてのサービスモニタリングニーズに対応しています。

Node Exporter を使用してすべてのホストを徐々に導入し、Grafana グラフを構築していきました。これにより、サービス全体を完全にカバーできるようになりました。

長期ストレージのために InfluxDB を検討していましたが、最近の動向により、これはもはや有効な選択肢ではないかもしれません。

その後、MySQL、Node、Cloudwatch、HAProxy、JMX、NSQ(独自のコードを少し追加)、Redis、Blackbox(認証ヘッダーを追加するために独自の貢献をしました)のエクスポーターを追加しました。

NSQ Overview Dashboard

切り替え以降、どのような改善が見られましたか?

まず、可視性とインストルメンテーションの向上が見られました。切り替える直前に Graphite のスケーラビリティの問題に直面しており、Graphite のインプレースメントとして、ステークホルダーが引き続き Grafana をモニタリングツールとして使用できることは非常に価値がありました。現在では、そのすべてのデータを使用して異常を検出し、最終的には Alert Manager のアラートにすることを重視しています。

Life360 と Prometheus の将来について、どのようにお考えですか?

現在、プロジェクトの 1 つは Python ベースのサービスで、Prometheus クライアントで直接インストルメントされています。新しいサービスを構築していくにつれて、Prometheus はインストルメンテーションの主要な選択肢となり、インフラストラクチャに関する非常に有益なアラートと統計情報を取得するのに役立ちます。

プロジェクトとともに成長し、貢献を続けていくことを楽しみにしています。

Daniel さん、ありがとうございました!Life360 のダッシュボードのソースは Github で共有されています。