これは、Prometheusのユーザーへのインタビューシリーズの第一弾です。彼らがPrometheusの評価と使用経験を共有できるようにします。最初のインタビューは、Life360のDanielです。
あなた自身とLife360が何をしているかについて教えていただけますか?
私はDaniel Ben Yosef、別名dbyで、Life360のインフラストラクチャエンジニアです。それ以前は、過去9年間システムエンジニアリングの役割を担っていました。
Life360は、家族のつながりを維持するテクノロジーを開発しています。私たちは家族向けのファミリーネットワークアプリです。ピーク時には、7,000万の登録済み家族に対して、毎分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への移行にはいくつかの理由があり、その1つは、単に優れたモニタリングが必要だったからです。
私たちは以前からPrometheusを知っており、そのアクティブな開発を追跡し、情報を収集していました。そして、数ヶ月前に本番環境での評価を開始することにしました。
PoCの結果は素晴らしかったです。MySQLのモニタリング範囲は素晴らしく、以前はひどく不足していたCassandraのJMXモニタリングも気に入りました。
どのように移行しましたか?
最初は比較的容量の小さいボックス(メモリ4GB)から始めました。少数のサービスには効果的でしたが、完全なモニタリングニーズには不十分でした。
当初はDockerでデプロイしましたが、徐々にr3.2xlインスタンス(RAM 60GB)上の独自のボックスに移行し、そこでは30日間のインメモリデータを含むすべてのサービスモニタリングニーズに対応しています。
Node Exporterを使用してすべてのホストを徐々に導入し、Grafanaグラフを作成し、最終的に完全なサービスカバレッジを実現しました。
長期的なストレージのためにInfluxDBも検討していましたが、最近の展開により、これはもはや実行可能な選択肢ではない可能性があります。
その後、MySQL、Node、CloudWatch、HAProxy、JMX、NSQ(独自のコードを使用)、Redis、Blackbox(認証ヘッダーを追加するための独自の貢献)のエキスポーターを追加しました。
移行後、どのような改善が見られましたか?
まず、可視性と計装の向上が目立ちました。移行直前、Graphiteのスケーラビリティの問題が発生し始め、利害関係者がGrafanaをモニタリングツールとして引き続き使用できるように、Graphiteの代替策を導入できたことは非常に価値がありました。現在、私たちは、そのデータすべてを活用して異常を検出し、最終的にはAlert Managerでアラートを生成することに重点を置いています。
Life360とPrometheusの将来についてどう思いますか?
現在、Pythonベースのサービスである1つのプロジェクトをPrometheusクライアントで直接計装しています。新しいサービスを構築する際に、Prometheusは計装のための主要なツールとなり、インフラストラクチャに関する非常に有益なアラートと統計情報を取得するのに役立ちます。
私たちはプロジェクトとともに成長し、貢献し続けることを楽しみにしています。
Daniel、ありがとうございました!Life360のダッシュボードのソースはGithubで共有されています。