Prometheusユーザーへのインタビューシリーズの次の記事では、DigitalOceanがPrometheusをどのように使用しているかについて語ります。カルロス・アメディー氏はPromCon 2016でロールアウトの社会的な側面についても語りました。
あなた自身とDigitalOceanの事業内容について教えていただけますか?
私の名前はイアン・ハンセンで、プラットフォームメトリクスチームに所属しています。DigitalOceanは、シンプルなクラウドコンピューティングを提供しています。現在までに、13のリージョンで2000万個のDroplet(SSDクラウドサーバー)を作成しました。また、最近、新しいブロックストレージ製品をリリースしました。
Prometheus導入前の監視経験について教えてください。
Prometheus以前は、GraphiteとOpenTSDBを運用していました。Graphiteは小規模なアプリケーションに使用し、OpenTSDBはCollectdを介してすべての物理サーバーからメトリクスを収集するために使用していました。Nagiosは、これらのデータベースをポーリングしてアラートをトリガーしていました。現在でもGraphiteは使用していますが、OpenTSDBは使用していません。
Prometheusを検討することにした理由は何ですか?
OpenTSDBの運用責任者として、クラスターをオンラインに保つことが責務でしたが、メトリクスの急増に対して保護することが難しいことに不満を感じていました。チームが新しい(非常に頻繁な)サービスを立ち上げると、クラスター全体のキャパシティに影響を与え、私のSLAを損なうことがありました。
OpenTSDBに入ってくる新しいメトリクスをブラックリスト/ホワイトリストに入れることはできましたが、組織的なプロセス(変更/強制が困難)以外に、頻繁なサービスを防止する良い方法はありませんでした。他のチームは、クエリ言語や当時利用可能だった可視化ツールに不満を感じていました。私はユリウス・ヴォルツ氏とプッシュ vs プルメトリクスシステムについて話をしており、プルするものを決定し、頻度を決定することでSLAを実際に制御できることを知ったとき、Prometheusを試してみたくなりました。さらに、クエリ言語が本当に気に入りました。
どのように移行しましたか?
Collectdを介してメトリクスを収集し、OpenTSDBに送信していました。すでに稼働中のCollectd設定と並行してNode Exporterをインストールすることで、Prometheusを試すことができました。また、Dropletメトリクスを公開するカスタムエクスポーターも作成しました。すぐに、OpenTSDBサービスと同等の機能を持つようになり、Collectdを停止し始め、その後、OpenTSDBクラスターを停止しました。
Prometheusとそれに付属する可視化ツールを皆がとても気に入りました。突然、私の小さなメトリクスチームは、人々を満足させるために対応しきれないバックログを抱え、人々のサービスのためにPrometheusを提供および維持する代わりに、他のチームが独自のPrometheusサーバーを実行し、社内で使用する共通のエクスポーターも実行できるようにするためのツールを作成することを検討しました。
一部のチームはAlertmanagerの使用を開始しましたが、既存の監視ツールからPrometheusをプルするという概念は残っています。
切り替え後、どのような改善が見られましたか?
ハイパーバイザーマシンの洞察が向上しました。CollectdとNode Exporterから取得できるデータはほぼ同じですが、golang開発者のチームが各ハイパーバイザーで実行するサービスに固有のデータを公開する新しいカスタムエクスポーターを作成するのがはるかに簡単になりました。
より優れたアプリケーションメトリクスを公開しています。後で正しく集計できるPrometheusメトリクスを作成する方法を学び、教えるのが簡単になりました。Graphiteでは、ドットで区切られた名前が正しく構造化されていなかったため、後で特定の形で集計できないメトリクスを簡単に作成できていました。
以前よりもはるかに迅速かつ簡単にアラートを作成できるようになり、さらに使い慣れた言語で作成できます。これにより、チームは、すばやく反復処理できるため、知っていて理解しているサービスに対してより良いアラートを作成できるようになりました。
DigitalOceanとPrometheusの将来はどうなると思いますか?
DigitalOceanのチームがメトリクスをできるだけ簡単に収集できるようにする方法を検討し続けています。現在、チームは関心のあることのために独自のPrometheusサーバーを実行しており、これにより、そうでなければ迅速に得られなかったであろう可観測性を得ることができました。しかし、すべてのチームがPrometheusの実行方法を知っている必要はありません。チームがサービスやデータベースで必要なクエリとアラートに集中できるように、Prometheusを可能な限り自動化するために何ができるかを検討しています。
また、Vulcanを作成し、長期的なデータストレージを確保し、ツールを構築し、使用方法を教育したPrometheusクエリ言語を保持しています。